From 841655b5ec9e9394642942a0a5711ac9e6aa455b Mon Sep 17 00:00:00 2001 From: Space Walker Date: Sun, 24 Aug 2025 17:06:47 +0200 Subject: [PATCH] [lifecycle events] add Minecraft instance API --- .../impl/mixin/client/MinecraftMixin.java | 5 ++-- .../api/client/MinecraftInstance.java | 21 ++++++++++++++ .../impl/client/MinecraftAccess.java | 16 +++++++++++ .../impl/mixin/client/MinecraftMixin.java | 28 +++++++++++++------ .../api/client/MinecraftInstance.java | 21 ++++++++++++++ .../impl/client/MinecraftAccess.java | 16 +++++++++++ .../impl/mixin/client/MinecraftMixin.java | 22 +++++++++++---- .../api/client/MinecraftInstance.java | 21 ++++++++++++++ .../impl/client/MinecraftAccess.java | 16 +++++++++++ .../impl/mixin/client/MinecraftMixin.java | 22 +++++++++++---- .../api/client/MinecraftInstance.java | 21 ++++++++++++++ .../impl/client/MinecraftAccess.java | 16 +++++++++++ .../impl/mixin/client/MinecraftMixin.java | 22 +++++++++++---- .../api/client/MinecraftInstance.java | 21 ++++++++++++++ .../impl/client/MinecraftAccess.java | 16 +++++++++++ .../impl/mixin/client/MinecraftMixin.java | 22 +++++++++++---- .../api/client/MinecraftInstance.java | 21 ++++++++++++++ .../impl/client/MinecraftAccess.java | 16 +++++++++++ .../impl/mixin/client/MinecraftMixin.java | 22 +++++++++++---- .../api/client/MinecraftInstance.java | 21 ++++++++++++++ .../impl/client/MinecraftAccess.java | 16 +++++++++++ .../impl/mixin/client/MinecraftMixin.java | 28 +++++++++++++------ .../api/client/MinecraftInstance.java | 21 ++++++++++++++ .../impl/client/MinecraftAccess.java | 16 +++++++++++ .../impl/mixin/client/MinecraftMixin.java | 28 +++++++++++++------ .../api/client/MinecraftInstance.java | 21 ++++++++++++++ .../impl/client/MinecraftAccess.java | 16 +++++++++++ .../impl/mixin/client/MinecraftMixin.java | 28 +++++++++++++------ .../api/client/MinecraftInstance.java | 21 ++++++++++++++ .../impl/client/MinecraftAccess.java | 7 +++++ .../impl/mixin/client/MinecraftMixin.java | 25 +++++++++++------ 31 files changed, 546 insertions(+), 67 deletions(-) create mode 100644 libraries/lifecycle-events/lifecycle-events-mc12w01a-mc12w17a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mc12w01a-mc12w17a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mc12w18a-mc12w19a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mc12w18a-mc12w19a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mc12w21a-mc1.6.4/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mc12w21a-mc1.6.4/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mc13w36a-09051446-mc1.13/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mc13w36a-09051446-mc1.13/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mc18w30a-mc18w50a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mc18w30a-mc18w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mcb1.0-mcb1.2_02/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mcb1.0-mcb1.2_02/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mcb1.4-1507-mcb1.7.3/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mcb1.4-1507-mcb1.7.3/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mcb1.8-pre1-201109081459-mc11w50a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mcb1.8-pre1-201109081459-mc11w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java create mode 100644 libraries/lifecycle-events/lifecycle-events-mcinf-20100630-1340-mca1.2.6/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java diff --git a/libraries/config/config-mcb1.3-1750-mcb1.7.3/src/main/java/net/ornithemc/osl/config/impl/mixin/client/MinecraftMixin.java b/libraries/config/config-mcb1.3-1750-mcb1.7.3/src/main/java/net/ornithemc/osl/config/impl/mixin/client/MinecraftMixin.java index f9dc7ed8..6557f82a 100644 --- a/libraries/config/config-mcb1.3-1750-mcb1.7.3/src/main/java/net/ornithemc/osl/config/impl/mixin/client/MinecraftMixin.java +++ b/libraries/config/config-mcb1.3-1750-mcb1.7.3/src/main/java/net/ornithemc/osl/config/impl/mixin/client/MinecraftMixin.java @@ -12,6 +12,7 @@ import net.minecraft.world.World; import net.ornithemc.osl.config.impl.ConfigInitializer; +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; @Mixin(Minecraft.class) public class MinecraftMixin { @@ -26,7 +27,7 @@ public class MinecraftMixin { ) private void osl$config$closeWorld(World world, String message, PlayerEntity player, CallbackInfo ci) { if (this.world != null && !this.world.isMultiplayer && world == null && osl$config$startGameDepth == 0) { - ConfigInitializer.CLOSE_WORLD.invoker().accept((Minecraft)(Object)this); + ConfigInitializer.CLOSE_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } } @@ -42,7 +43,7 @@ public class MinecraftMixin { if (osl$config$startGameDepth++ == 0) { // The startGame method recursively calls itself when converting from // older world formats, but we only want to capture the initial call. - ConfigInitializer.START_GAME.invoker().accept((Minecraft)(Object)this, saveName); + ConfigInitializer.START_GAME.invoker().accept(MinecraftAccess.INSTANCE, saveName); } } diff --git a/libraries/lifecycle-events/lifecycle-events-mc12w01a-mc12w17a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java b/libraries/lifecycle-events/lifecycle-events-mc12w01a-mc12w17a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java new file mode 100644 index 00000000..655fcd43 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mc12w01a-mc12w17a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java @@ -0,0 +1,21 @@ +package net.ornithemc.osl.lifecycle.api.client; + +import net.minecraft.client.Minecraft; + +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; + +/** + * A wrapper class for getting the {@linkplain Minecraft} instance. + */ +public class MinecraftInstance { + + /** + * Retrieves the current Minecraft game instance, + * or throws an exception. + * + * @return the current Minecraft game instance + */ + public static Minecraft get() { + return MinecraftAccess.getInstance(); + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mc12w01a-mc12w17a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java b/libraries/lifecycle-events/lifecycle-events-mc12w01a-mc12w17a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java new file mode 100644 index 00000000..bbc59382 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mc12w01a-mc12w17a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java @@ -0,0 +1,16 @@ +package net.ornithemc.osl.lifecycle.impl.client; + +import net.minecraft.client.Minecraft; + +public class MinecraftAccess { + + public static Minecraft INSTANCE; + + public static Minecraft getInstance() { + if (INSTANCE == null) { + throw new IllegalStateException("no Minecraft instance available right now"); + } + + return INSTANCE; + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mc12w01a-mc12w17a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java b/libraries/lifecycle-events/lifecycle-events-mc12w01a-mc12w17a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java index 392e80aa..c8114747 100644 --- a/libraries/lifecycle-events/lifecycle-events-mc12w01a-mc12w17a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java +++ b/libraries/lifecycle-events/lifecycle-events-mc12w01a-mc12w17a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java @@ -9,6 +9,7 @@ import net.minecraft.client.Minecraft; import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents; +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; @Mixin(Minecraft.class) public class MinecraftMixin { @@ -20,7 +21,8 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$start(CallbackInfo ci) { - MinecraftClientEvents.START.invoker().accept((Minecraft)(Object)this); + MinecraftAccess.INSTANCE = (Minecraft)(Object)this; + MinecraftClientEvents.START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -30,7 +32,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$ready(CallbackInfo ci) { - MinecraftClientEvents.READY.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -40,7 +42,17 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$stop(CallbackInfo ci) { - MinecraftClientEvents.STOP.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.STOP.invoker().accept(MinecraftAccess.INSTANCE); + } + + @Inject( + method = "shutdown", + at = @At( + value = "TAIL" + ) + ) + private void osl$lifecycle$stopped(CallbackInfo ci) { + MinecraftAccess.INSTANCE = null; } @Inject( @@ -50,7 +62,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$startTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_START.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -60,7 +72,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$endTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_END.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_END.invoker().accept(MinecraftAccess.INSTANCE); } @Unique private int osl$lifecycle$startGameDepth; @@ -75,7 +87,7 @@ public class MinecraftMixin { // The startGame method recursively calls itself when converting from // older world formats, but we only want to capture the initial call. if (osl$lifecycle$startGameDepth++ == 0) { - MinecraftClientEvents.LOAD_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.LOAD_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } } @@ -87,7 +99,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$prepareWorld(CallbackInfo ci) { - MinecraftClientEvents.PREPARE_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.PREPARE_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -100,7 +112,7 @@ public class MinecraftMixin { // The startGame method recursively calls itself when converting from // older world formats, but we only want to capture the initial call. if (--osl$lifecycle$startGameDepth == 0) { - MinecraftClientEvents.READY_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } } } diff --git a/libraries/lifecycle-events/lifecycle-events-mc12w18a-mc12w19a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java b/libraries/lifecycle-events/lifecycle-events-mc12w18a-mc12w19a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java new file mode 100644 index 00000000..655fcd43 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mc12w18a-mc12w19a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java @@ -0,0 +1,21 @@ +package net.ornithemc.osl.lifecycle.api.client; + +import net.minecraft.client.Minecraft; + +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; + +/** + * A wrapper class for getting the {@linkplain Minecraft} instance. + */ +public class MinecraftInstance { + + /** + * Retrieves the current Minecraft game instance, + * or throws an exception. + * + * @return the current Minecraft game instance + */ + public static Minecraft get() { + return MinecraftAccess.getInstance(); + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mc12w18a-mc12w19a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java b/libraries/lifecycle-events/lifecycle-events-mc12w18a-mc12w19a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java new file mode 100644 index 00000000..bbc59382 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mc12w18a-mc12w19a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java @@ -0,0 +1,16 @@ +package net.ornithemc.osl.lifecycle.impl.client; + +import net.minecraft.client.Minecraft; + +public class MinecraftAccess { + + public static Minecraft INSTANCE; + + public static Minecraft getInstance() { + if (INSTANCE == null) { + throw new IllegalStateException("no Minecraft instance available right now"); + } + + return INSTANCE; + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mc12w18a-mc12w19a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java b/libraries/lifecycle-events/lifecycle-events-mc12w18a-mc12w19a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java index 510cfa5f..7b6bddbe 100644 --- a/libraries/lifecycle-events/lifecycle-events-mc12w18a-mc12w19a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java +++ b/libraries/lifecycle-events/lifecycle-events-mc12w18a-mc12w19a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java @@ -8,6 +8,7 @@ import net.minecraft.client.Minecraft; import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents; +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; @Mixin(Minecraft.class) public class MinecraftMixin { @@ -19,7 +20,8 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$start(CallbackInfo ci) { - MinecraftClientEvents.START.invoker().accept((Minecraft)(Object)this); + MinecraftAccess.INSTANCE = (Minecraft)(Object)this; + MinecraftClientEvents.START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -29,7 +31,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$ready(CallbackInfo ci) { - MinecraftClientEvents.READY.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -39,7 +41,17 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$stop(CallbackInfo ci) { - MinecraftClientEvents.STOP.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.STOP.invoker().accept(MinecraftAccess.INSTANCE); + } + + @Inject( + method = "shutdown", + at = @At( + value = "TAIL" + ) + ) + private void osl$lifecycle$stopped(CallbackInfo ci) { + MinecraftAccess.INSTANCE = null; } @Inject( @@ -49,7 +61,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$startTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_START.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -59,6 +71,6 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$endTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_END.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_END.invoker().accept(MinecraftAccess.INSTANCE); } } diff --git a/libraries/lifecycle-events/lifecycle-events-mc12w21a-mc1.6.4/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java b/libraries/lifecycle-events/lifecycle-events-mc12w21a-mc1.6.4/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java new file mode 100644 index 00000000..655fcd43 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mc12w21a-mc1.6.4/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java @@ -0,0 +1,21 @@ +package net.ornithemc.osl.lifecycle.api.client; + +import net.minecraft.client.Minecraft; + +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; + +/** + * A wrapper class for getting the {@linkplain Minecraft} instance. + */ +public class MinecraftInstance { + + /** + * Retrieves the current Minecraft game instance, + * or throws an exception. + * + * @return the current Minecraft game instance + */ + public static Minecraft get() { + return MinecraftAccess.getInstance(); + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mc12w21a-mc1.6.4/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java b/libraries/lifecycle-events/lifecycle-events-mc12w21a-mc1.6.4/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java new file mode 100644 index 00000000..bbc59382 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mc12w21a-mc1.6.4/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java @@ -0,0 +1,16 @@ +package net.ornithemc.osl.lifecycle.impl.client; + +import net.minecraft.client.Minecraft; + +public class MinecraftAccess { + + public static Minecraft INSTANCE; + + public static Minecraft getInstance() { + if (INSTANCE == null) { + throw new IllegalStateException("no Minecraft instance available right now"); + } + + return INSTANCE; + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mc12w21a-mc1.6.4/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java b/libraries/lifecycle-events/lifecycle-events-mc12w21a-mc1.6.4/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java index 510cfa5f..7b6bddbe 100644 --- a/libraries/lifecycle-events/lifecycle-events-mc12w21a-mc1.6.4/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java +++ b/libraries/lifecycle-events/lifecycle-events-mc12w21a-mc1.6.4/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java @@ -8,6 +8,7 @@ import net.minecraft.client.Minecraft; import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents; +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; @Mixin(Minecraft.class) public class MinecraftMixin { @@ -19,7 +20,8 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$start(CallbackInfo ci) { - MinecraftClientEvents.START.invoker().accept((Minecraft)(Object)this); + MinecraftAccess.INSTANCE = (Minecraft)(Object)this; + MinecraftClientEvents.START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -29,7 +31,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$ready(CallbackInfo ci) { - MinecraftClientEvents.READY.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -39,7 +41,17 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$stop(CallbackInfo ci) { - MinecraftClientEvents.STOP.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.STOP.invoker().accept(MinecraftAccess.INSTANCE); + } + + @Inject( + method = "shutdown", + at = @At( + value = "TAIL" + ) + ) + private void osl$lifecycle$stopped(CallbackInfo ci) { + MinecraftAccess.INSTANCE = null; } @Inject( @@ -49,7 +61,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$startTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_START.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -59,6 +71,6 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$endTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_END.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_END.invoker().accept(MinecraftAccess.INSTANCE); } } diff --git a/libraries/lifecycle-events/lifecycle-events-mc13w36a-09051446-mc1.13/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java b/libraries/lifecycle-events/lifecycle-events-mc13w36a-09051446-mc1.13/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java new file mode 100644 index 00000000..655fcd43 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mc13w36a-09051446-mc1.13/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java @@ -0,0 +1,21 @@ +package net.ornithemc.osl.lifecycle.api.client; + +import net.minecraft.client.Minecraft; + +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; + +/** + * A wrapper class for getting the {@linkplain Minecraft} instance. + */ +public class MinecraftInstance { + + /** + * Retrieves the current Minecraft game instance, + * or throws an exception. + * + * @return the current Minecraft game instance + */ + public static Minecraft get() { + return MinecraftAccess.getInstance(); + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mc13w36a-09051446-mc1.13/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java b/libraries/lifecycle-events/lifecycle-events-mc13w36a-09051446-mc1.13/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java new file mode 100644 index 00000000..bbc59382 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mc13w36a-09051446-mc1.13/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java @@ -0,0 +1,16 @@ +package net.ornithemc.osl.lifecycle.impl.client; + +import net.minecraft.client.Minecraft; + +public class MinecraftAccess { + + public static Minecraft INSTANCE; + + public static Minecraft getInstance() { + if (INSTANCE == null) { + throw new IllegalStateException("no Minecraft instance available right now"); + } + + return INSTANCE; + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mc13w36a-09051446-mc1.13/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java b/libraries/lifecycle-events/lifecycle-events-mc13w36a-09051446-mc1.13/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java index 510cfa5f..7b6bddbe 100644 --- a/libraries/lifecycle-events/lifecycle-events-mc13w36a-09051446-mc1.13/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java +++ b/libraries/lifecycle-events/lifecycle-events-mc13w36a-09051446-mc1.13/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java @@ -8,6 +8,7 @@ import net.minecraft.client.Minecraft; import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents; +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; @Mixin(Minecraft.class) public class MinecraftMixin { @@ -19,7 +20,8 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$start(CallbackInfo ci) { - MinecraftClientEvents.START.invoker().accept((Minecraft)(Object)this); + MinecraftAccess.INSTANCE = (Minecraft)(Object)this; + MinecraftClientEvents.START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -29,7 +31,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$ready(CallbackInfo ci) { - MinecraftClientEvents.READY.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -39,7 +41,17 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$stop(CallbackInfo ci) { - MinecraftClientEvents.STOP.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.STOP.invoker().accept(MinecraftAccess.INSTANCE); + } + + @Inject( + method = "shutdown", + at = @At( + value = "TAIL" + ) + ) + private void osl$lifecycle$stopped(CallbackInfo ci) { + MinecraftAccess.INSTANCE = null; } @Inject( @@ -49,7 +61,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$startTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_START.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -59,6 +71,6 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$endTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_END.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_END.invoker().accept(MinecraftAccess.INSTANCE); } } diff --git a/libraries/lifecycle-events/lifecycle-events-mc18w30a-mc18w50a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java b/libraries/lifecycle-events/lifecycle-events-mc18w30a-mc18w50a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java new file mode 100644 index 00000000..655fcd43 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mc18w30a-mc18w50a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java @@ -0,0 +1,21 @@ +package net.ornithemc.osl.lifecycle.api.client; + +import net.minecraft.client.Minecraft; + +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; + +/** + * A wrapper class for getting the {@linkplain Minecraft} instance. + */ +public class MinecraftInstance { + + /** + * Retrieves the current Minecraft game instance, + * or throws an exception. + * + * @return the current Minecraft game instance + */ + public static Minecraft get() { + return MinecraftAccess.getInstance(); + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mc18w30a-mc18w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java b/libraries/lifecycle-events/lifecycle-events-mc18w30a-mc18w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java new file mode 100644 index 00000000..bbc59382 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mc18w30a-mc18w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java @@ -0,0 +1,16 @@ +package net.ornithemc.osl.lifecycle.impl.client; + +import net.minecraft.client.Minecraft; + +public class MinecraftAccess { + + public static Minecraft INSTANCE; + + public static Minecraft getInstance() { + if (INSTANCE == null) { + throw new IllegalStateException("no Minecraft instance available right now"); + } + + return INSTANCE; + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mc18w30a-mc18w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java b/libraries/lifecycle-events/lifecycle-events-mc18w30a-mc18w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java index 510cfa5f..7b6bddbe 100644 --- a/libraries/lifecycle-events/lifecycle-events-mc18w30a-mc18w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java +++ b/libraries/lifecycle-events/lifecycle-events-mc18w30a-mc18w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java @@ -8,6 +8,7 @@ import net.minecraft.client.Minecraft; import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents; +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; @Mixin(Minecraft.class) public class MinecraftMixin { @@ -19,7 +20,8 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$start(CallbackInfo ci) { - MinecraftClientEvents.START.invoker().accept((Minecraft)(Object)this); + MinecraftAccess.INSTANCE = (Minecraft)(Object)this; + MinecraftClientEvents.START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -29,7 +31,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$ready(CallbackInfo ci) { - MinecraftClientEvents.READY.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -39,7 +41,17 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$stop(CallbackInfo ci) { - MinecraftClientEvents.STOP.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.STOP.invoker().accept(MinecraftAccess.INSTANCE); + } + + @Inject( + method = "shutdown", + at = @At( + value = "TAIL" + ) + ) + private void osl$lifecycle$stopped(CallbackInfo ci) { + MinecraftAccess.INSTANCE = null; } @Inject( @@ -49,7 +61,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$startTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_START.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -59,6 +71,6 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$endTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_END.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_END.invoker().accept(MinecraftAccess.INSTANCE); } } diff --git a/libraries/lifecycle-events/lifecycle-events-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java b/libraries/lifecycle-events/lifecycle-events-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java new file mode 100644 index 00000000..655fcd43 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java @@ -0,0 +1,21 @@ +package net.ornithemc.osl.lifecycle.api.client; + +import net.minecraft.client.Minecraft; + +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; + +/** + * A wrapper class for getting the {@linkplain Minecraft} instance. + */ +public class MinecraftInstance { + + /** + * Retrieves the current Minecraft game instance, + * or throws an exception. + * + * @return the current Minecraft game instance + */ + public static Minecraft get() { + return MinecraftAccess.getInstance(); + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java b/libraries/lifecycle-events/lifecycle-events-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java new file mode 100644 index 00000000..bbc59382 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java @@ -0,0 +1,16 @@ +package net.ornithemc.osl.lifecycle.impl.client; + +import net.minecraft.client.Minecraft; + +public class MinecraftAccess { + + public static Minecraft INSTANCE; + + public static Minecraft getInstance() { + if (INSTANCE == null) { + throw new IllegalStateException("no Minecraft instance available right now"); + } + + return INSTANCE; + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java b/libraries/lifecycle-events/lifecycle-events-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java index 510cfa5f..7b6bddbe 100644 --- a/libraries/lifecycle-events/lifecycle-events-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java +++ b/libraries/lifecycle-events/lifecycle-events-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java @@ -8,6 +8,7 @@ import net.minecraft.client.Minecraft; import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents; +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; @Mixin(Minecraft.class) public class MinecraftMixin { @@ -19,7 +20,8 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$start(CallbackInfo ci) { - MinecraftClientEvents.START.invoker().accept((Minecraft)(Object)this); + MinecraftAccess.INSTANCE = (Minecraft)(Object)this; + MinecraftClientEvents.START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -29,7 +31,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$ready(CallbackInfo ci) { - MinecraftClientEvents.READY.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -39,7 +41,17 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$stop(CallbackInfo ci) { - MinecraftClientEvents.STOP.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.STOP.invoker().accept(MinecraftAccess.INSTANCE); + } + + @Inject( + method = "shutdown", + at = @At( + value = "TAIL" + ) + ) + private void osl$lifecycle$stopped(CallbackInfo ci) { + MinecraftAccess.INSTANCE = null; } @Inject( @@ -49,7 +61,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$startTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_START.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -59,6 +71,6 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$endTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_END.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_END.invoker().accept(MinecraftAccess.INSTANCE); } } diff --git a/libraries/lifecycle-events/lifecycle-events-mcb1.0-mcb1.2_02/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java b/libraries/lifecycle-events/lifecycle-events-mcb1.0-mcb1.2_02/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java new file mode 100644 index 00000000..655fcd43 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mcb1.0-mcb1.2_02/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java @@ -0,0 +1,21 @@ +package net.ornithemc.osl.lifecycle.api.client; + +import net.minecraft.client.Minecraft; + +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; + +/** + * A wrapper class for getting the {@linkplain Minecraft} instance. + */ +public class MinecraftInstance { + + /** + * Retrieves the current Minecraft game instance, + * or throws an exception. + * + * @return the current Minecraft game instance + */ + public static Minecraft get() { + return MinecraftAccess.getInstance(); + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mcb1.0-mcb1.2_02/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java b/libraries/lifecycle-events/lifecycle-events-mcb1.0-mcb1.2_02/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java new file mode 100644 index 00000000..bbc59382 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mcb1.0-mcb1.2_02/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java @@ -0,0 +1,16 @@ +package net.ornithemc.osl.lifecycle.impl.client; + +import net.minecraft.client.Minecraft; + +public class MinecraftAccess { + + public static Minecraft INSTANCE; + + public static Minecraft getInstance() { + if (INSTANCE == null) { + throw new IllegalStateException("no Minecraft instance available right now"); + } + + return INSTANCE; + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mcb1.0-mcb1.2_02/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java b/libraries/lifecycle-events/lifecycle-events-mcb1.0-mcb1.2_02/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java index 392e80aa..67cb9439 100644 --- a/libraries/lifecycle-events/lifecycle-events-mcb1.0-mcb1.2_02/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java +++ b/libraries/lifecycle-events/lifecycle-events-mcb1.0-mcb1.2_02/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java @@ -9,6 +9,7 @@ import net.minecraft.client.Minecraft; import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents; +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; @Mixin(Minecraft.class) public class MinecraftMixin { @@ -20,7 +21,8 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$start(CallbackInfo ci) { - MinecraftClientEvents.START.invoker().accept((Minecraft)(Object)this); + MinecraftAccess.INSTANCE = (Minecraft)(Object)this; + MinecraftClientEvents.START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -30,7 +32,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$ready(CallbackInfo ci) { - MinecraftClientEvents.READY.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -40,7 +42,17 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$stop(CallbackInfo ci) { - MinecraftClientEvents.STOP.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.STOP.invoker().accept(MinecraftAccess.INSTANCE); + } + + @Inject( + method = "shutdown", + at = @At( + value = "HEAD" + ) + ) + private void osl$lifecycle$stopped(CallbackInfo ci) { + MinecraftAccess.INSTANCE = null; } @Inject( @@ -50,7 +62,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$startTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_START.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -60,7 +72,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$endTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_END.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_END.invoker().accept(MinecraftAccess.INSTANCE); } @Unique private int osl$lifecycle$startGameDepth; @@ -75,7 +87,7 @@ public class MinecraftMixin { // The startGame method recursively calls itself when converting from // older world formats, but we only want to capture the initial call. if (osl$lifecycle$startGameDepth++ == 0) { - MinecraftClientEvents.LOAD_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.LOAD_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } } @@ -87,7 +99,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$prepareWorld(CallbackInfo ci) { - MinecraftClientEvents.PREPARE_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.PREPARE_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -100,7 +112,7 @@ public class MinecraftMixin { // The startGame method recursively calls itself when converting from // older world formats, but we only want to capture the initial call. if (--osl$lifecycle$startGameDepth == 0) { - MinecraftClientEvents.READY_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } } } diff --git a/libraries/lifecycle-events/lifecycle-events-mcb1.4-1507-mcb1.7.3/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java b/libraries/lifecycle-events/lifecycle-events-mcb1.4-1507-mcb1.7.3/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java new file mode 100644 index 00000000..655fcd43 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mcb1.4-1507-mcb1.7.3/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java @@ -0,0 +1,21 @@ +package net.ornithemc.osl.lifecycle.api.client; + +import net.minecraft.client.Minecraft; + +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; + +/** + * A wrapper class for getting the {@linkplain Minecraft} instance. + */ +public class MinecraftInstance { + + /** + * Retrieves the current Minecraft game instance, + * or throws an exception. + * + * @return the current Minecraft game instance + */ + public static Minecraft get() { + return MinecraftAccess.getInstance(); + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mcb1.4-1507-mcb1.7.3/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java b/libraries/lifecycle-events/lifecycle-events-mcb1.4-1507-mcb1.7.3/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java new file mode 100644 index 00000000..bbc59382 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mcb1.4-1507-mcb1.7.3/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java @@ -0,0 +1,16 @@ +package net.ornithemc.osl.lifecycle.impl.client; + +import net.minecraft.client.Minecraft; + +public class MinecraftAccess { + + public static Minecraft INSTANCE; + + public static Minecraft getInstance() { + if (INSTANCE == null) { + throw new IllegalStateException("no Minecraft instance available right now"); + } + + return INSTANCE; + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mcb1.4-1507-mcb1.7.3/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java b/libraries/lifecycle-events/lifecycle-events-mcb1.4-1507-mcb1.7.3/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java index 392e80aa..c8114747 100644 --- a/libraries/lifecycle-events/lifecycle-events-mcb1.4-1507-mcb1.7.3/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java +++ b/libraries/lifecycle-events/lifecycle-events-mcb1.4-1507-mcb1.7.3/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java @@ -9,6 +9,7 @@ import net.minecraft.client.Minecraft; import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents; +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; @Mixin(Minecraft.class) public class MinecraftMixin { @@ -20,7 +21,8 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$start(CallbackInfo ci) { - MinecraftClientEvents.START.invoker().accept((Minecraft)(Object)this); + MinecraftAccess.INSTANCE = (Minecraft)(Object)this; + MinecraftClientEvents.START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -30,7 +32,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$ready(CallbackInfo ci) { - MinecraftClientEvents.READY.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -40,7 +42,17 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$stop(CallbackInfo ci) { - MinecraftClientEvents.STOP.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.STOP.invoker().accept(MinecraftAccess.INSTANCE); + } + + @Inject( + method = "shutdown", + at = @At( + value = "TAIL" + ) + ) + private void osl$lifecycle$stopped(CallbackInfo ci) { + MinecraftAccess.INSTANCE = null; } @Inject( @@ -50,7 +62,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$startTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_START.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -60,7 +72,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$endTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_END.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_END.invoker().accept(MinecraftAccess.INSTANCE); } @Unique private int osl$lifecycle$startGameDepth; @@ -75,7 +87,7 @@ public class MinecraftMixin { // The startGame method recursively calls itself when converting from // older world formats, but we only want to capture the initial call. if (osl$lifecycle$startGameDepth++ == 0) { - MinecraftClientEvents.LOAD_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.LOAD_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } } @@ -87,7 +99,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$prepareWorld(CallbackInfo ci) { - MinecraftClientEvents.PREPARE_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.PREPARE_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -100,7 +112,7 @@ public class MinecraftMixin { // The startGame method recursively calls itself when converting from // older world formats, but we only want to capture the initial call. if (--osl$lifecycle$startGameDepth == 0) { - MinecraftClientEvents.READY_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } } } diff --git a/libraries/lifecycle-events/lifecycle-events-mcb1.8-pre1-201109081459-mc11w50a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java b/libraries/lifecycle-events/lifecycle-events-mcb1.8-pre1-201109081459-mc11w50a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java new file mode 100644 index 00000000..655fcd43 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mcb1.8-pre1-201109081459-mc11w50a/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java @@ -0,0 +1,21 @@ +package net.ornithemc.osl.lifecycle.api.client; + +import net.minecraft.client.Minecraft; + +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; + +/** + * A wrapper class for getting the {@linkplain Minecraft} instance. + */ +public class MinecraftInstance { + + /** + * Retrieves the current Minecraft game instance, + * or throws an exception. + * + * @return the current Minecraft game instance + */ + public static Minecraft get() { + return MinecraftAccess.getInstance(); + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mcb1.8-pre1-201109081459-mc11w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java b/libraries/lifecycle-events/lifecycle-events-mcb1.8-pre1-201109081459-mc11w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java new file mode 100644 index 00000000..bbc59382 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mcb1.8-pre1-201109081459-mc11w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java @@ -0,0 +1,16 @@ +package net.ornithemc.osl.lifecycle.impl.client; + +import net.minecraft.client.Minecraft; + +public class MinecraftAccess { + + public static Minecraft INSTANCE; + + public static Minecraft getInstance() { + if (INSTANCE == null) { + throw new IllegalStateException("no Minecraft instance available right now"); + } + + return INSTANCE; + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mcb1.8-pre1-201109081459-mc11w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java b/libraries/lifecycle-events/lifecycle-events-mcb1.8-pre1-201109081459-mc11w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java index 392e80aa..c8114747 100644 --- a/libraries/lifecycle-events/lifecycle-events-mcb1.8-pre1-201109081459-mc11w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java +++ b/libraries/lifecycle-events/lifecycle-events-mcb1.8-pre1-201109081459-mc11w50a/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java @@ -9,6 +9,7 @@ import net.minecraft.client.Minecraft; import net.ornithemc.osl.lifecycle.api.client.MinecraftClientEvents; +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; @Mixin(Minecraft.class) public class MinecraftMixin { @@ -20,7 +21,8 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$start(CallbackInfo ci) { - MinecraftClientEvents.START.invoker().accept((Minecraft)(Object)this); + MinecraftAccess.INSTANCE = (Minecraft)(Object)this; + MinecraftClientEvents.START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -30,7 +32,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$ready(CallbackInfo ci) { - MinecraftClientEvents.READY.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -40,7 +42,17 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$stop(CallbackInfo ci) { - MinecraftClientEvents.STOP.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.STOP.invoker().accept(MinecraftAccess.INSTANCE); + } + + @Inject( + method = "shutdown", + at = @At( + value = "TAIL" + ) + ) + private void osl$lifecycle$stopped(CallbackInfo ci) { + MinecraftAccess.INSTANCE = null; } @Inject( @@ -50,7 +62,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$startTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_START.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -60,7 +72,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$endTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_END.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_END.invoker().accept(MinecraftAccess.INSTANCE); } @Unique private int osl$lifecycle$startGameDepth; @@ -75,7 +87,7 @@ public class MinecraftMixin { // The startGame method recursively calls itself when converting from // older world formats, but we only want to capture the initial call. if (osl$lifecycle$startGameDepth++ == 0) { - MinecraftClientEvents.LOAD_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.LOAD_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } } @@ -87,7 +99,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$prepareWorld(CallbackInfo ci) { - MinecraftClientEvents.PREPARE_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.PREPARE_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -100,7 +112,7 @@ public class MinecraftMixin { // The startGame method recursively calls itself when converting from // older world formats, but we only want to capture the initial call. if (--osl$lifecycle$startGameDepth == 0) { - MinecraftClientEvents.READY_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } } } diff --git a/libraries/lifecycle-events/lifecycle-events-mcinf-20100630-1340-mca1.2.6/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java b/libraries/lifecycle-events/lifecycle-events-mcinf-20100630-1340-mca1.2.6/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java new file mode 100644 index 00000000..655fcd43 --- /dev/null +++ b/libraries/lifecycle-events/lifecycle-events-mcinf-20100630-1340-mca1.2.6/src/main/java/net/ornithemc/osl/lifecycle/api/client/MinecraftInstance.java @@ -0,0 +1,21 @@ +package net.ornithemc.osl.lifecycle.api.client; + +import net.minecraft.client.Minecraft; + +import net.ornithemc.osl.lifecycle.impl.client.MinecraftAccess; + +/** + * A wrapper class for getting the {@linkplain Minecraft} instance. + */ +public class MinecraftInstance { + + /** + * Retrieves the current Minecraft game instance, + * or throws an exception. + * + * @return the current Minecraft game instance + */ + public static Minecraft get() { + return MinecraftAccess.getInstance(); + } +} diff --git a/libraries/lifecycle-events/lifecycle-events-mcinf-20100630-1340-mca1.2.6/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java b/libraries/lifecycle-events/lifecycle-events-mcinf-20100630-1340-mca1.2.6/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java index 4769af40..bbc59382 100644 --- a/libraries/lifecycle-events/lifecycle-events-mcinf-20100630-1340-mca1.2.6/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java +++ b/libraries/lifecycle-events/lifecycle-events-mcinf-20100630-1340-mca1.2.6/src/main/java/net/ornithemc/osl/lifecycle/impl/client/MinecraftAccess.java @@ -6,4 +6,11 @@ public class MinecraftAccess { public static Minecraft INSTANCE; + public static Minecraft getInstance() { + if (INSTANCE == null) { + throw new IllegalStateException("no Minecraft instance available right now"); + } + + return INSTANCE; + } } diff --git a/libraries/lifecycle-events/lifecycle-events-mcinf-20100630-1340-mca1.2.6/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java b/libraries/lifecycle-events/lifecycle-events-mcinf-20100630-1340-mca1.2.6/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java index 09282a4e..c8114747 100644 --- a/libraries/lifecycle-events/lifecycle-events-mcinf-20100630-1340-mca1.2.6/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java +++ b/libraries/lifecycle-events/lifecycle-events-mcinf-20100630-1340-mca1.2.6/src/main/java/net/ornithemc/osl/lifecycle/impl/mixin/client/MinecraftMixin.java @@ -22,7 +22,7 @@ public class MinecraftMixin { ) private void osl$lifecycle$start(CallbackInfo ci) { MinecraftAccess.INSTANCE = (Minecraft)(Object)this; - MinecraftClientEvents.START.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -32,7 +32,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$ready(CallbackInfo ci) { - MinecraftClientEvents.READY.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -42,7 +42,16 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$stop(CallbackInfo ci) { - MinecraftClientEvents.STOP.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.STOP.invoker().accept(MinecraftAccess.INSTANCE); + } + + @Inject( + method = "shutdown", + at = @At( + value = "TAIL" + ) + ) + private void osl$lifecycle$stopped(CallbackInfo ci) { MinecraftAccess.INSTANCE = null; } @@ -53,7 +62,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$startTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_START.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_START.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -63,7 +72,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$endTick(CallbackInfo ci) { - MinecraftClientEvents.TICK_END.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.TICK_END.invoker().accept(MinecraftAccess.INSTANCE); } @Unique private int osl$lifecycle$startGameDepth; @@ -78,7 +87,7 @@ public class MinecraftMixin { // The startGame method recursively calls itself when converting from // older world formats, but we only want to capture the initial call. if (osl$lifecycle$startGameDepth++ == 0) { - MinecraftClientEvents.LOAD_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.LOAD_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } } @@ -90,7 +99,7 @@ public class MinecraftMixin { ) ) private void osl$lifecycle$prepareWorld(CallbackInfo ci) { - MinecraftClientEvents.PREPARE_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.PREPARE_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } @Inject( @@ -103,7 +112,7 @@ public class MinecraftMixin { // The startGame method recursively calls itself when converting from // older world formats, but we only want to capture the initial call. if (--osl$lifecycle$startGameDepth == 0) { - MinecraftClientEvents.READY_WORLD.invoker().accept((Minecraft)(Object)this); + MinecraftClientEvents.READY_WORLD.invoker().accept(MinecraftAccess.INSTANCE); } } }