aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/cc/polyfrost/oneconfig/mixin
diff options
context:
space:
mode:
authorDeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>2022-05-27 23:54:03 +0200
committerDeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>2022-05-27 23:54:03 +0200
commite968906af9435bd4a9b7a2befef1c9981dd3453a (patch)
tree9e30e2dc24bf3a821402b86bc223a38f29692ea0 /src/main/java/cc/polyfrost/oneconfig/mixin
parenta4857ad657bc14009ac2d47b89c6981761d40df9 (diff)
parentf1509146f504707dfab3e9abac36038f94040b64 (diff)
downloadOneConfig-e968906af9435bd4a9b7a2befef1c9981dd3453a.tar.gz
OneConfig-e968906af9435bd4a9b7a2befef1c9981dd3453a.tar.bz2
OneConfig-e968906af9435bd4a9b7a2befef1c9981dd3453a.zip
Merge branch 'master' of github.com:Polyfrost/OneConfig
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/mixin')
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/mixin/GuiIngameForgeMixin.java17
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/mixin/MinecraftMixin.java51
2 files changed, 68 insertions, 0 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/mixin/GuiIngameForgeMixin.java b/src/main/java/cc/polyfrost/oneconfig/mixin/GuiIngameForgeMixin.java
new file mode 100644
index 0000000..1774fdc
--- /dev/null
+++ b/src/main/java/cc/polyfrost/oneconfig/mixin/GuiIngameForgeMixin.java
@@ -0,0 +1,17 @@
+package cc.polyfrost.oneconfig.mixin;
+
+import cc.polyfrost.oneconfig.events.EventManager;
+import cc.polyfrost.oneconfig.events.event.HudRenderEvent;
+import net.minecraftforge.client.GuiIngameForge;
+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(GuiIngameForge.class)
+public class GuiIngameForgeMixin {
+ @Inject(method = "renderGameOverlay", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/client/GuiIngameForge;post(Lnet/minecraftforge/client/event/RenderGameOverlayEvent$ElementType;)V", shift = At.Shift.AFTER))
+ private void onRenderGameOverlay(float partialTicks, CallbackInfo ci) {
+ EventManager.INSTANCE.getEventBus().post(new HudRenderEvent(partialTicks));
+ }
+}
diff --git a/src/main/java/cc/polyfrost/oneconfig/mixin/MinecraftMixin.java b/src/main/java/cc/polyfrost/oneconfig/mixin/MinecraftMixin.java
new file mode 100644
index 0000000..05d2819
--- /dev/null
+++ b/src/main/java/cc/polyfrost/oneconfig/mixin/MinecraftMixin.java
@@ -0,0 +1,51 @@
+package cc.polyfrost.oneconfig.mixin;
+
+import cc.polyfrost.oneconfig.events.EventManager;
+import cc.polyfrost.oneconfig.events.event.RenderEvent;
+import cc.polyfrost.oneconfig.events.event.ScreenOpenEvent;
+import cc.polyfrost.oneconfig.events.event.Stage;
+import cc.polyfrost.oneconfig.events.event.TickEvent;
+import cc.polyfrost.oneconfig.libs.mixinextras.injector.ModifyExpressionValue;
+import net.minecraft.client.Minecraft;
+import net.minecraft.util.Timer;
+import net.minecraftforge.client.event.GuiOpenEvent;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+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 MinecraftMixin {
+ @Shadow private Timer timer;
+
+ @Inject(method = "runGameLoop", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/fml/common/FMLCommonHandler;onRenderTickStart(F)V", shift = At.Shift.AFTER))
+ private void onRenderTickStart(CallbackInfo ci) {
+ EventManager.INSTANCE.getEventBus().post(new RenderEvent(Stage.START, timer.renderPartialTicks));
+ }
+
+ @Inject(method = "runGameLoop", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/fml/common/FMLCommonHandler;onRenderTickEnd(F)V", shift = At.Shift.AFTER))
+ private void onRenderTickEnd(CallbackInfo ci) {
+ EventManager.INSTANCE.getEventBus().post(new RenderEvent(Stage.END, timer.renderPartialTicks));
+ }
+
+ @Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/fml/common/FMLCommonHandler;onPreClientTick()V", shift = At.Shift.AFTER))
+ private void onClientTickStart(CallbackInfo ci) {
+ EventManager.INSTANCE.getEventBus().post(new TickEvent(Stage.START));
+ }
+
+ @Inject(method = "runTick", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/fml/common/FMLCommonHandler;onPostClientTick()V", shift = At.Shift.AFTER))
+ private void onClientTickEnd(CallbackInfo ci) {
+ EventManager.INSTANCE.getEventBus().post(new TickEvent(Stage.END));
+ }
+
+ @ModifyExpressionValue(method = "displayGuiScreen", at = @At(value = "NEW", target = "Lnet/minecraftforge/client/event/GuiOpenEvent;<init>(Lnet/minecraft/client/gui/GuiScreen;)V"))
+ private GuiOpenEvent onGuiOpenEvent(GuiOpenEvent screen) {
+ ScreenOpenEvent event = new ScreenOpenEvent(screen.gui);
+ EventManager.INSTANCE.getEventBus().post(event);
+ if (event.isCancelled) {
+ screen.setCanceled(true);
+ }
+ return screen;
+ }
+}