raven-bs-v2/src/main/java/keystrokesmod/mixin/impl/client/MixinMinecraft.java

34 lines
1.3 KiB
Java

package keystrokesmod.mixin.impl.client;
import keystrokesmod.event.GuiUpdateEvent;
import keystrokesmod.event.PreInputEvent;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraftforge.common.MinecraftForge;
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;
@Mixin(Minecraft.class)
public class MixinMinecraft {
@Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/profiler/Profiler;endStartSection(Ljava/lang/String;)V", ordinal = 2))
private void onRunTick(CallbackInfo ci) {
MinecraftForge.EVENT_BUS.post(new PreInputEvent());
}
@Inject(method = "displayGuiScreen(Lnet/minecraft/client/gui/GuiScreen;)V", at = @At("HEAD"))
public void onDisplayGuiScreen(GuiScreen guiScreen, CallbackInfo ci) {
Minecraft mc = (Minecraft) (Object) this;
GuiScreen previousGui = mc.currentScreen;
GuiScreen setGui = guiScreen;
boolean opened = setGui != null;
if (!opened) {
setGui = previousGui;
}
GuiUpdateEvent event = new GuiUpdateEvent(setGui, opened);
MinecraftForge.EVENT_BUS.post(event);
}
}