package net.shadowfacts.phycon.mixin.client; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; import net.shadowfacts.cacao.AbstractCacaoScreen; import org.objectweb.asm.Opcodes; 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; /** * @author shadowfacts */ @Mixin(MinecraftClient.class) public class MixinMinecraftClient { @Inject( method = "setScreen(Lnet/minecraft/client/gui/screen/Screen;)V", at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;", opcode = Opcodes.PUTFIELD, shift = At.Shift.AFTER) ) private void setScreen(Screen screen, CallbackInfo ci) { if (screen instanceof AbstractCacaoScreen cacaoScreen) { cacaoScreen.screenWillAppear(); } } }