mirror of
https://github.com/FabricMC/fabric.git
synced 2025-04-21 03:10:54 -04:00
Move injection point of TooltipComponentCallback
(#3085)
This commit is contained in:
parent
5f4a2056f3
commit
86f2414baa
3 changed files with 16 additions and 12 deletions
fabric-rendering-v1/src
client
java/net/fabricmc/fabric/mixin/client/rendering
resources
testmodClient/java/net/fabricmc/fabric/test/rendering/client
|
@ -16,29 +16,28 @@
|
|||
|
||||
package net.fabricmc.fabric.mixin.client.rendering;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.client.gui.tooltip.TooltipComponent;
|
||||
import net.minecraft.client.item.TooltipData;
|
||||
|
||||
import net.fabricmc.fabric.api.client.rendering.v1.TooltipComponentCallback;
|
||||
|
||||
@Mixin(Screen.class)
|
||||
public class ScreenMixin {
|
||||
// Synthetic lambda body in renderTooltip
|
||||
@Inject(at = @At("HEAD"), method = "method_32635(Ljava/util/List;Lnet/minecraft/client/item/TooltipData;)V", cancellable = true)
|
||||
private static void injectRenderTooltipLambda(List<TooltipComponent> components, TooltipData data, CallbackInfo ci) {
|
||||
@Mixin(TooltipComponent.class)
|
||||
public interface TooltipComponentMixin {
|
||||
@Inject(
|
||||
method = "of(Lnet/minecraft/client/item/TooltipData;)Lnet/minecraft/client/gui/tooltip/TooltipComponent;",
|
||||
at = @At("HEAD"),
|
||||
cancellable = true
|
||||
)
|
||||
private static void convertCustomTooltipData(TooltipData data, CallbackInfoReturnable<TooltipComponent> cir) {
|
||||
TooltipComponent component = TooltipComponentCallback.EVENT.invoker().getComponent(data);
|
||||
|
||||
if (component != null) {
|
||||
components.add(1, component);
|
||||
ci.cancel();
|
||||
cir.setReturnValue(component);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -15,7 +15,7 @@
|
|||
"LivingEntityRendererAccessor",
|
||||
"BlockEntityRendererFactoriesMixin",
|
||||
"EntityRenderersMixin",
|
||||
"ScreenMixin",
|
||||
"TooltipComponentMixin",
|
||||
"DimensionEffectsAccessor",
|
||||
"shader.GameRendererMixin",
|
||||
"shader.ShaderProgramImportProcessorMixin",
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
|
||||
package net.fabricmc.fabric.test.rendering.client;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import net.minecraft.client.gui.tooltip.TooltipComponent;
|
||||
import net.minecraft.text.Style;
|
||||
import net.minecraft.text.Text;
|
||||
|
@ -35,5 +37,8 @@ public class TooltipComponentTests implements ClientModInitializer {
|
|||
|
||||
return null;
|
||||
});
|
||||
|
||||
// Test that TooltipComponent.of works with custom TooltipData
|
||||
Objects.requireNonNull(TooltipComponent.of(new TooltipComponentTestInit.Data("Hello world!")));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue