34 lines
1.3 KiB
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);
|
|
}
|
|
}
|