diff --git a/src/main/java/me/zeroeightsix/kami/event/ClientEvents.kt b/src/main/java/me/zeroeightsix/kami/event/ClientEvents.kt index 949b4145e..c150d7943 100644 --- a/src/main/java/me/zeroeightsix/kami/event/ClientEvents.kt +++ b/src/main/java/me/zeroeightsix/kami/event/ClientEvents.kt @@ -9,7 +9,7 @@ import net.minecraft.client.network.NetHandlerPlayClient import org.kamiblue.command.ExecuteEvent import org.kamiblue.command.IExecuteEvent -abstract class AbstractClientEvent { +abstract class AbstractClientEvent : Event { val mc = Wrapper.minecraft abstract val world: WorldClient? abstract val player: EntityPlayerSP? diff --git a/src/main/java/me/zeroeightsix/kami/event/KamiEvents.kt b/src/main/java/me/zeroeightsix/kami/event/KamiEvents.kt index 09d7d76bc..16b4053d4 100644 --- a/src/main/java/me/zeroeightsix/kami/event/KamiEvents.kt +++ b/src/main/java/me/zeroeightsix/kami/event/KamiEvents.kt @@ -1,7 +1,15 @@ package me.zeroeightsix.kami.event +import org.kamiblue.event.eventbus.IEventBus + interface Event +open class SingletonEvent(val eventBus: IEventBus) { + fun post() { + eventBus.post(this) + } +} + interface IMultiPhase { val phase: Phase diff --git a/src/main/java/me/zeroeightsix/kami/event/events/BaritoneSettingsInitEvent.kt b/src/main/java/me/zeroeightsix/kami/event/events/BaritoneSettingsInitEvent.kt index f610776a1..eaf4cb0a6 100644 --- a/src/main/java/me/zeroeightsix/kami/event/events/BaritoneSettingsInitEvent.kt +++ b/src/main/java/me/zeroeightsix/kami/event/events/BaritoneSettingsInitEvent.kt @@ -1,8 +1,10 @@ package me.zeroeightsix.kami.event.events import me.zeroeightsix.kami.event.Event +import me.zeroeightsix.kami.event.KamiEventBus +import me.zeroeightsix.kami.event.SingletonEvent /** * Posted at the return of when Baritone's Settings are initialized. */ -class BaritoneSettingsInitEvent : Event \ No newline at end of file +object BaritoneSettingsInitEvent : Event, SingletonEvent(KamiEventBus) \ No newline at end of file diff --git a/src/main/java/me/zeroeightsix/kami/event/events/ShutdownEvent.kt b/src/main/java/me/zeroeightsix/kami/event/events/ShutdownEvent.kt new file mode 100644 index 000000000..f8a322fd1 --- /dev/null +++ b/src/main/java/me/zeroeightsix/kami/event/events/ShutdownEvent.kt @@ -0,0 +1,7 @@ +package me.zeroeightsix.kami.event.events + +import me.zeroeightsix.kami.event.Event +import me.zeroeightsix.kami.event.KamiEventBus +import me.zeroeightsix.kami.event.SingletonEvent + +object ShutdownEvent : Event, SingletonEvent(KamiEventBus) \ No newline at end of file diff --git a/src/main/java/me/zeroeightsix/kami/mixin/client/MixinMinecraft.java b/src/main/java/me/zeroeightsix/kami/mixin/client/MixinMinecraft.java index cbebab778..9b98477f9 100644 --- a/src/main/java/me/zeroeightsix/kami/mixin/client/MixinMinecraft.java +++ b/src/main/java/me/zeroeightsix/kami/mixin/client/MixinMinecraft.java @@ -3,8 +3,8 @@ package me.zeroeightsix.kami.mixin.client; import me.zeroeightsix.kami.KamiMod; import me.zeroeightsix.kami.event.KamiEventBus; import me.zeroeightsix.kami.event.events.GuiEvent; +import me.zeroeightsix.kami.event.events.ShutdownEvent; import me.zeroeightsix.kami.module.modules.combat.CrystalAura; -import me.zeroeightsix.kami.module.modules.misc.DiscordRPC; import me.zeroeightsix.kami.util.ConfigUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; @@ -74,10 +74,11 @@ public class MixinMinecraft { private void save() { if (!KamiMod.isReady()) return; + + ShutdownEvent.INSTANCE.post(); System.out.println("Shutting down: saving KAMI configuration"); ConfigUtils.INSTANCE.saveAll(); System.out.println("Configuration saved."); - DiscordRPC.INSTANCE.end(); } } diff --git a/src/main/java/me/zeroeightsix/kami/mixin/client/baritone/MixinBaritoneSettings.java b/src/main/java/me/zeroeightsix/kami/mixin/client/baritone/MixinBaritoneSettings.java index 3387fb5dc..da70b9f63 100644 --- a/src/main/java/me/zeroeightsix/kami/mixin/client/baritone/MixinBaritoneSettings.java +++ b/src/main/java/me/zeroeightsix/kami/mixin/client/baritone/MixinBaritoneSettings.java @@ -1,7 +1,6 @@ package me.zeroeightsix.kami.mixin.client.baritone; import baritone.api.Settings; -import me.zeroeightsix.kami.event.KamiEventBus; import me.zeroeightsix.kami.event.events.BaritoneSettingsInitEvent; import me.zeroeightsix.kami.util.BaritoneUtils; import org.spongepowered.asm.mixin.Mixin; @@ -13,7 +12,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public class MixinBaritoneSettings { @Inject(method = "", at = @At("RETURN")) private void baritoneSettingsInit(CallbackInfo ci) { - KamiEventBus.INSTANCE.post(new BaritoneSettingsInitEvent()); BaritoneUtils.INSTANCE.setInitialized(true); + BaritoneSettingsInitEvent.INSTANCE.post(); } } diff --git a/src/main/java/me/zeroeightsix/kami/module/modules/misc/DiscordRPC.kt b/src/main/java/me/zeroeightsix/kami/module/modules/misc/DiscordRPC.kt index 51778790f..b0fc4ee42 100644 --- a/src/main/java/me/zeroeightsix/kami/module/modules/misc/DiscordRPC.kt +++ b/src/main/java/me/zeroeightsix/kami/module/modules/misc/DiscordRPC.kt @@ -4,6 +4,7 @@ import club.minnced.discord.rpc.DiscordEventHandlers import club.minnced.discord.rpc.DiscordRichPresence import me.zeroeightsix.kami.KamiMod import me.zeroeightsix.kami.event.events.SafeTickEvent +import me.zeroeightsix.kami.event.events.ShutdownEvent import me.zeroeightsix.kami.module.Module import me.zeroeightsix.kami.module.modules.client.InfoOverlay import me.zeroeightsix.kami.setting.Settings @@ -58,6 +59,10 @@ object DiscordRPC : Module() { "Do NOT use this if you do not want your coords displayed") } } + + listener { + end() + } } private fun start() { @@ -73,7 +78,7 @@ object DiscordRPC : Module() { KamiMod.LOG.info("Discord RPC initialised successfully") } - fun end() { + private fun end() { if (!connected) return KamiMod.LOG.info("Shutting down Discord RPC...")