[new] Added SingletonEvent and ShutdownEvent

This commit is contained in:
Xiaro 2021-01-01 18:03:02 -05:00
parent ae45d5f75f
commit e5befa4227
No known key found for this signature in database
GPG Key ID: 996D265D6E155377
7 changed files with 29 additions and 7 deletions

View File

@ -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?

View File

@ -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<T : Event> {
val phase: Phase

View File

@ -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
object BaritoneSettingsInitEvent : Event, SingletonEvent(KamiEventBus)

View File

@ -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)

View File

@ -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();
}
}

View File

@ -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 = "<init>", at = @At("RETURN"))
private void baritoneSettingsInit(CallbackInfo ci) {
KamiEventBus.INSTANCE.post(new BaritoneSettingsInitEvent());
BaritoneUtils.INSTANCE.setInitialized(true);
BaritoneSettingsInitEvent.INSTANCE.post();
}
}

View File

@ -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<ShutdownEvent> {
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...")