diff --git a/odin/src/main/java/me/odin/mixin/mixins/MixinGuiContainer.java b/odin/src/main/java/me/odin/mixin/mixins/MixinGuiContainer.java index 042e98680..5f9596cc1 100644 --- a/odin/src/main/java/me/odin/mixin/mixins/MixinGuiContainer.java +++ b/odin/src/main/java/me/odin/mixin/mixins/MixinGuiContainer.java @@ -52,9 +52,4 @@ private void startDrawScreen(int mouseX, int mouseY, float partialTicks, Callbac } } } - - @Inject(method = "onGuiClosed", at = @At("HEAD")) - private void onGuiClosed(CallbackInfo ci) { - postAndCatch(new GuiEvent.Closed(odinMod$gui)); - } } \ No newline at end of file diff --git a/odin/src/main/java/me/odin/mixin/mixins/MixinGuiScreen.java b/odin/src/main/java/me/odin/mixin/mixins/MixinGuiScreen.java index 551781747..c88959659 100644 --- a/odin/src/main/java/me/odin/mixin/mixins/MixinGuiScreen.java +++ b/odin/src/main/java/me/odin/mixin/mixins/MixinGuiScreen.java @@ -18,22 +18,11 @@ public class MixinGuiScreen { @Unique private final GuiScreen odin$gui = (GuiScreen) (Object) this; - @Inject(method = "handleMouseInput", at = @At(value = "INVOKE", target = "net/minecraft/client/gui/GuiScreen.mouseClicked(III)V"), cancellable = true) - private void onMouseInput(CallbackInfo ci){ - if (Mouse.getEventButtonState()) - if (postAndCatch(new GuiEvent.MouseClick(odin$gui, Mouse.getEventButton(), Mouse.getEventX(), Mouse.getEventY()))) ci.cancel(); - } - @Inject(method = "handleMouseInput", at = @At(value = "INVOKE", target = "net/minecraft/client/gui/GuiScreen.mouseReleased(III)V"), cancellable = true) - private void onReleaseMouseInput(CallbackInfo ci){ + private void onReleaseMouseInput(CallbackInfo ci) { if (!Mouse.getEventButtonState()) - if (postAndCatch(new GuiEvent.GuiMouseReleaseEvent(odin$gui, Mouse.getEventButton(), Mouse.getEventX(), Mouse.getEventY()))) ci.cancel(); - } - - @Inject(method = "handleKeyboardInput", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiScreen;keyTyped(CI)V"), cancellable = true) - private void onHandleKeyboardInput(CallbackInfo ci) { - if (Keyboard.getEventKeyState()) - if (postAndCatch(new GuiEvent.KeyPress(odin$gui, Keyboard.getEventKey(), Keyboard.getEventCharacter()))) ci.cancel(); + if (postAndCatch(new GuiEvent.GuiMouseReleaseEvent(odin$gui, Mouse.getEventButton(), Mouse.getEventX(), Mouse.getEventY()))) + ci.cancel(); } } diff --git a/odin/src/main/java/me/odin/mixin/mixins/MixinMinecraft.java b/odin/src/main/java/me/odin/mixin/mixins/MixinMinecraft.java index 70dba421f..5723e7db2 100644 --- a/odin/src/main/java/me/odin/mixin/mixins/MixinMinecraft.java +++ b/odin/src/main/java/me/odin/mixin/mixins/MixinMinecraft.java @@ -1,8 +1,7 @@ package me.odin.mixin.mixins; import me.odinmain.events.impl.ClickEvent; -import me.odinmain.events.impl.PreKeyInputEvent; -import me.odinmain.events.impl.PreMouseInputEvent; +import me.odinmain.events.impl.InputEvent; import me.odinmain.features.impl.render.CPSDisplay; import me.odinmain.utils.skyblock.PlayerUtils; import net.minecraft.client.Minecraft; @@ -20,12 +19,12 @@ public class MixinMinecraft { @Inject(method = {"runTick"}, at = {@At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;dispatchKeypresses()V")}) public void keyPresses(CallbackInfo ci) { - if (Keyboard.getEventKeyState()) postAndCatch(new PreKeyInputEvent((Keyboard.getEventKey() == 0) ? (Keyboard.getEventCharacter() + 256) : Keyboard.getEventKey())); + if (Keyboard.getEventKeyState()) postAndCatch(new InputEvent.Keyboard((Keyboard.getEventKey() == 0) ? (Keyboard.getEventCharacter() + 256) : Keyboard.getEventKey())); } @Inject(method = {"runTick"}, at = {@At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventButton()I", remap = false)}) public void mouseKeyPresses(CallbackInfo ci) { - if (Mouse.getEventButtonState()) postAndCatch(new PreMouseInputEvent(Mouse.getEventButton())); + if (Mouse.getEventButtonState()) postAndCatch(new InputEvent.Mouse(Mouse.getEventButton())); } @Inject(method = {"runTick"}, at = {@At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiScreen;handleInput()V")}) diff --git a/odin/src/main/java/me/odin/mixin/mixins/MixinNetworkManager.java b/odin/src/main/java/me/odin/mixin/mixins/MixinNetworkManager.java index f8b2f4a45..fbdbd5614 100644 --- a/odin/src/main/java/me/odin/mixin/mixins/MixinNetworkManager.java +++ b/odin/src/main/java/me/odin/mixin/mixins/MixinNetworkManager.java @@ -1,8 +1,7 @@ package me.odin.mixin.mixins; import io.netty.channel.ChannelHandlerContext; -import me.odinmain.events.impl.PacketReceivedEvent; -import me.odinmain.events.impl.PacketSentEvent; +import me.odinmain.events.impl.PacketEvent; import me.odinmain.utils.ServerUtils; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; @@ -18,12 +17,12 @@ public class MixinNetworkManager { @Inject(method = "channelRead0*", at = @At("HEAD"), cancellable = true) private void onReceivePacket(ChannelHandlerContext context, Packet packet, CallbackInfo ci) { - if (postAndCatch(new PacketReceivedEvent(packet)) && !ci.isCancelled()) ci.cancel(); + if (postAndCatch(new PacketEvent.Receive(packet)) && !ci.isCancelled()) ci.cancel(); } @Inject(method = {"sendPacket(Lnet/minecraft/network/Packet;)V"}, at = {@At("HEAD")}, cancellable = true) private void onSendPacket(Packet packet, CallbackInfo ci) { - if (!ServerUtils.INSTANCE.handleSendPacket(packet)) - if (postAndCatch(new PacketSentEvent(packet)) && !ci.isCancelled()) ci.cancel(); + if (!ServerUtils.handleSendPacket(packet)) + if (postAndCatch(new PacketEvent.Send(packet)) && !ci.isCancelled()) ci.cancel(); } } \ No newline at end of file diff --git a/odin/src/main/java/me/odin/mixin/mixins/MixinRenderEntityItem.java b/odin/src/main/java/me/odin/mixin/mixins/MixinRenderEntityItem.java index 0bcc1aa54..2cd68cc7f 100644 --- a/odin/src/main/java/me/odin/mixin/mixins/MixinRenderEntityItem.java +++ b/odin/src/main/java/me/odin/mixin/mixins/MixinRenderEntityItem.java @@ -18,8 +18,6 @@ import java.nio.FloatBuffer; -import static org.lwjgl.opengl.GL11.*; - @Mixin(RenderEntityItem.class) public abstract class MixinRenderEntityItem { diff --git a/odin/src/main/kotlin/me/odin/features/impl/floor7/p3/ArrowsDevice.kt b/odin/src/main/kotlin/me/odin/features/impl/floor7/p3/ArrowsDevice.kt index 16ffcb3dc..0e4b45066 100644 --- a/odin/src/main/kotlin/me/odin/features/impl/floor7/p3/ArrowsDevice.kt +++ b/odin/src/main/kotlin/me/odin/features/impl/floor7/p3/ArrowsDevice.kt @@ -1,7 +1,7 @@ package me.odin.features.impl.floor7.p3 import me.odinmain.events.impl.BlockChangeEvent -import me.odinmain.events.impl.RealServerTick +import me.odinmain.events.impl.ServerTickEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.Setting.Companion.withDependency @@ -117,7 +117,7 @@ object ArrowsDevice : Module( @SubscribeEvent - fun onServerTick(event: RealServerTick) { + fun onServerTick(event: ServerTickEvent) { serverTicksSinceLastTargetDisappeared = serverTicksSinceLastTargetDisappeared?.let { // There was no target last tick (or the count would be null) diff --git a/odin/src/main/kotlin/me/odin/features/impl/render/EtherWarpHelper.kt b/odin/src/main/kotlin/me/odin/features/impl/render/EtherWarpHelper.kt index c162a27a8..7ec8eae5b 100644 --- a/odin/src/main/kotlin/me/odin/features/impl/render/EtherWarpHelper.kt +++ b/odin/src/main/kotlin/me/odin/features/impl/render/EtherWarpHelper.kt @@ -1,7 +1,7 @@ package me.odin.features.impl.render import me.odin.mixin.accessors.IEntityPlayerSPAccessor -import me.odinmain.events.impl.PacketReceivedEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.Setting.Companion.withDependency @@ -64,7 +64,7 @@ object EtherWarpHelper : Module( } @SubscribeEvent - fun onSoundPacket(event: PacketReceivedEvent) = with(event.packet) { + fun onSoundPacket(event: PacketEvent.Receive) = with(event.packet) { if (this !is S29PacketSoundEffect || soundName != "mob.enderdragon.hit" || !sounds || volume != 1f || pitch != 0.53968257f || customSound == "mob.enderdragon.hit") return playLoudSound(if (sound == defaultSounds.size - 1) customSound else defaultSounds[sound], soundVolume, soundPitch, positionVector) event.isCanceled = true diff --git a/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinGuiContainer.java b/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinGuiContainer.java index 6536193c6..f65842339 100644 --- a/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinGuiContainer.java +++ b/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinGuiContainer.java @@ -52,9 +52,4 @@ private void startDrawScreen(int mouseX, int mouseY, float partialTicks, Callbac } } } - - @Inject(method = "onGuiClosed", at = @At("HEAD")) - private void onGuiClosed(CallbackInfo ci) { - postAndCatch(new GuiEvent.Closed(odinMod$gui)); - } } \ No newline at end of file diff --git a/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinGuiScreen.java b/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinGuiScreen.java index 652a69308..948e4dc49 100644 --- a/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinGuiScreen.java +++ b/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinGuiScreen.java @@ -2,7 +2,6 @@ import me.odinmain.events.impl.GuiEvent; import net.minecraft.client.gui.GuiScreen; -import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -18,21 +17,10 @@ public class MixinGuiScreen { @Unique private final GuiScreen odin$gui = (GuiScreen) (Object) this; - @Inject(method = "handleMouseInput", at = @At(value = "INVOKE", target = "net/minecraft/client/gui/GuiScreen.mouseClicked(III)V"), cancellable = true) - private void onMouseInput(CallbackInfo ci){ - if (Mouse.getEventButtonState()) - if (postAndCatch(new GuiEvent.MouseClick(odin$gui, Mouse.getEventButton(), Mouse.getEventX(), Mouse.getEventY()))) ci.cancel(); - } - @Inject(method = "handleMouseInput", at = @At(value = "INVOKE", target = "net/minecraft/client/gui/GuiScreen.mouseReleased(III)V"), cancellable = true) private void onReleaseMouseInput(CallbackInfo ci){ if (!Mouse.getEventButtonState()) if (postAndCatch(new GuiEvent.GuiMouseReleaseEvent(odin$gui, Mouse.getEventButton(), Mouse.getEventX(), Mouse.getEventY()))) ci.cancel(); } - - @Inject(method = "handleKeyboardInput", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiScreen;keyTyped(CI)V"), cancellable = true) - private void onHandleKeyboardInput(CallbackInfo ci) { - if (postAndCatch(new GuiEvent.KeyPress(odin$gui, Keyboard.getEventKey(), Keyboard.getEventCharacter()))) ci.cancel(); - } } diff --git a/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinMinecraft.java b/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinMinecraft.java index d37023d4d..0c126d94d 100644 --- a/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinMinecraft.java +++ b/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinMinecraft.java @@ -2,8 +2,7 @@ import me.odinclient.features.impl.skyblock.CancelInteract; import me.odinmain.events.impl.ClickEvent; -import me.odinmain.events.impl.PreKeyInputEvent; -import me.odinmain.events.impl.PreMouseInputEvent; +import me.odinmain.events.impl.InputEvent; import me.odinmain.features.impl.render.CPSDisplay; import me.odinmain.utils.skyblock.PlayerUtils; import net.minecraft.client.Minecraft; @@ -28,12 +27,12 @@ public class MixinMinecraft { @Inject(method = {"runTick"}, at = {@At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;dispatchKeypresses()V")}) public void keyPresses(CallbackInfo ci) { - if (Keyboard.getEventKeyState()) postAndCatch(new PreKeyInputEvent((Keyboard.getEventKey() == 0) ? (Keyboard.getEventCharacter() + 256) : Keyboard.getEventKey())); + if (Keyboard.getEventKeyState()) postAndCatch(new InputEvent.Keyboard((Keyboard.getEventKey() == 0) ? (Keyboard.getEventCharacter() + 256) : Keyboard.getEventKey())); } @Inject(method = {"runTick"}, at = {@At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventButton()I", remap = false)}) public void mouseKeyPresses(CallbackInfo ci) { - if (Mouse.getEventButtonState()) postAndCatch(new PreMouseInputEvent(Mouse.getEventButton())); + if (Mouse.getEventButtonState()) postAndCatch(new InputEvent.Mouse(Mouse.getEventButton())); } @Inject(method = {"runTick"}, at = {@At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiScreen;handleInput()V")}) diff --git a/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinNetworkManager.java b/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinNetworkManager.java index 96ad39c8e..8c4f4f60b 100644 --- a/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinNetworkManager.java +++ b/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinNetworkManager.java @@ -1,8 +1,7 @@ package me.odinclient.mixin.mixins; import io.netty.channel.ChannelHandlerContext; -import me.odinmain.events.impl.PacketReceivedEvent; -import me.odinmain.events.impl.PacketSentEvent; +import me.odinmain.events.impl.PacketEvent; import me.odinmain.utils.ServerUtils; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; @@ -18,12 +17,12 @@ public class MixinNetworkManager { @Inject(method = "channelRead0*", at = @At("HEAD"), cancellable = true) private void onReceivePacket(ChannelHandlerContext context, Packet packet, CallbackInfo ci) { - if (postAndCatch(new PacketReceivedEvent(packet)) && !ci.isCancelled()) ci.cancel(); + if (postAndCatch(new PacketEvent.Receive(packet)) && !ci.isCancelled()) ci.cancel(); } @Inject(method = {"sendPacket(Lnet/minecraft/network/Packet;)V"}, at = {@At("HEAD")}, cancellable = true) private void onSendPacket(Packet packet, CallbackInfo ci) { - if (!ServerUtils.INSTANCE.handleSendPacket(packet)) - if (postAndCatch(new PacketSentEvent(packet)) && !ci.isCancelled()) ci.cancel(); + if (!ServerUtils.handleSendPacket(packet)) + if (postAndCatch(new PacketEvent.Send(packet)) && !ci.isCancelled()) ci.cancel(); } } \ No newline at end of file diff --git a/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinRenderEntityItem.java b/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinRenderEntityItem.java index 6274d1043..1fcbb8d3c 100644 --- a/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinRenderEntityItem.java +++ b/odinclient/src/main/java/me/odinclient/mixin/mixins/MixinRenderEntityItem.java @@ -18,8 +18,6 @@ import java.nio.FloatBuffer; -import static org.lwjgl.opengl.GL11.*; - @Mixin(RenderEntityItem.class) public abstract class MixinRenderEntityItem { diff --git a/odinclient/src/main/kotlin/me/odinclient/features/impl/dungeon/AutoGFS.kt b/odinclient/src/main/kotlin/me/odinclient/features/impl/dungeon/AutoGFS.kt index 655e55442..94f23fd60 100644 --- a/odinclient/src/main/kotlin/me/odinclient/features/impl/dungeon/AutoGFS.kt +++ b/odinclient/src/main/kotlin/me/odinclient/features/impl/dungeon/AutoGFS.kt @@ -19,6 +19,7 @@ object AutoGFS : Module( private val refillOnDungeonStart by BooleanSetting("Refill on Dungeon Start", true, description = "Refill when a dungeon starts.") private val refillPearl by BooleanSetting("Refill Pearl", true, description = "Refill ender pearls.") private val refillJerry by BooleanSetting("Refill Jerry", true, description = "Refill inflatable jerrys.") + private val refillTNT by BooleanSetting("Refill TNT", true, description = "Refill superboom tnt.") private val refillOnTimer by BooleanSetting("Refill on Timer", true, description = "Refill on a 5s intervals.") private val timerIncrements by NumberSetting("Timer Increments", 5L, 1, 60, description = "The interval in which to refill.", unit = "s") @@ -40,6 +41,6 @@ object AutoGFS : Module( inventory.find { it?.skyblockID == "INFLATABLE_JERRY" }?.takeIf { refillJerry }?.also { fillItemFromSack(64, "INFLATABLE_JERRY", "inflatable_jerry", false) } - inventory.find { it?.skyblockID == "SUPERBOOM_TNT" }.takeIf { it?.stackSize == 1 }?.also { fillItemFromSack(1, "SUPERBOOM_TNT", "superboom_tnt", false) } + inventory.find { it?.skyblockID == "SUPERBOOM_TNT" }.takeIf { refillTNT }?.also { fillItemFromSack(1, "SUPERBOOM_TNT", "superboom_tnt", false) } } } \ No newline at end of file diff --git a/odinclient/src/main/kotlin/me/odinclient/features/impl/dungeon/CloseChest.kt b/odinclient/src/main/kotlin/me/odinclient/features/impl/dungeon/CloseChest.kt index 04bebc70b..38c302295 100644 --- a/odinclient/src/main/kotlin/me/odinclient/features/impl/dungeon/CloseChest.kt +++ b/odinclient/src/main/kotlin/me/odinclient/features/impl/dungeon/CloseChest.kt @@ -1,7 +1,6 @@ package me.odinclient.features.impl.dungeon -import me.odinmain.events.impl.GuiEvent -import me.odinmain.events.impl.PacketReceivedEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.impl.SelectorSetting @@ -13,7 +12,9 @@ import net.minecraft.client.gui.inventory.GuiChest import net.minecraft.inventory.ContainerChest import net.minecraft.network.play.client.C0DPacketCloseWindow import net.minecraft.network.play.server.S2DPacketOpenWindow +import net.minecraftforge.client.event.GuiScreenEvent import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import org.lwjgl.input.Mouse object CloseChest : Module( name = "Close Chest", @@ -23,7 +24,7 @@ object CloseChest : Module( private val mode by SelectorSetting("Mode", "Auto", arrayListOf("Auto", "Any Key"), description = "The mode to use, auto will automatically close the chest, any key will make any key input close the chest.") @SubscribeEvent - fun onOpenWindow(event: PacketReceivedEvent) { + fun onOpenWindow(event: PacketEvent.Receive) { val packet = event.packet as? S2DPacketOpenWindow ?: return if (!inDungeons || !packet.windowTitle.unformattedText.noControlCodes.equalsOneOf("Chest", "Large Chest") || mode == 0) return mc.netHandler.networkManager.sendPacket(C0DPacketCloseWindow(packet.windowId)) @@ -31,7 +32,7 @@ object CloseChest : Module( } @SubscribeEvent - fun onInput(event: GuiEvent.KeyPress) { + fun onInput(event: GuiScreenEvent.KeyboardInputEvent.Pre) { val gui = event.gui as? GuiChest ?: return if (!inDungeons || mode != 1) return if ((gui.inventorySlots as? ContainerChest)?.name?.noControlCodes?.equalsOneOf("Chest", "Large Chest") == true) @@ -39,9 +40,9 @@ object CloseChest : Module( } @SubscribeEvent - fun onMouse(event: GuiEvent.MouseClick) { + fun onMouse(event: GuiScreenEvent.MouseInputEvent.Pre) { val gui = event.gui as? GuiChest ?: return - if (!inDungeons || mode != 1) return + if (!inDungeons || mode != 1 || !Mouse.getEventButtonState()) return if ((gui.inventorySlots as? ContainerChest)?.name?.noControlCodes?.equalsOneOf("Chest", "Large Chest") == true) mc.thePlayer?.closeScreen() } diff --git a/odinclient/src/main/kotlin/me/odinclient/features/impl/floor7/p3/ArrowsDevice.kt b/odinclient/src/main/kotlin/me/odinclient/features/impl/floor7/p3/ArrowsDevice.kt index af4cb8126..473b35838 100644 --- a/odinclient/src/main/kotlin/me/odinclient/features/impl/floor7/p3/ArrowsDevice.kt +++ b/odinclient/src/main/kotlin/me/odinclient/features/impl/floor7/p3/ArrowsDevice.kt @@ -2,7 +2,7 @@ package me.odinclient.features.impl.floor7.p3 import me.odinclient.utils.skyblock.PlayerUtils.rightClick import me.odinmain.events.impl.BlockChangeEvent -import me.odinmain.events.impl.RealServerTick +import me.odinmain.events.impl.ServerTickEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.Setting.Companion.withDependency @@ -361,7 +361,7 @@ object ArrowsDevice : Module( @SubscribeEvent - fun onServerTick(event: RealServerTick) { + fun onServerTick(event: ServerTickEvent) { serverTicksSinceLastTargetDisappeared = serverTicksSinceLastTargetDisappeared?.let { // There was no target last tick (or the count would be null) diff --git a/odinclient/src/main/kotlin/me/odinclient/features/impl/floor7/p3/TerminalAura.kt b/odinclient/src/main/kotlin/me/odinclient/features/impl/floor7/p3/TerminalAura.kt index 2ce4b2923..280267b2a 100644 --- a/odinclient/src/main/kotlin/me/odinclient/features/impl/floor7/p3/TerminalAura.kt +++ b/odinclient/src/main/kotlin/me/odinclient/features/impl/floor7/p3/TerminalAura.kt @@ -1,6 +1,6 @@ package me.odinclient.features.impl.floor7.p3 -import me.odinmain.events.impl.PacketSentEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.events.impl.PostEntityMetadata import me.odinmain.features.Category import me.odinmain.features.Module @@ -49,7 +49,7 @@ object TerminalAura : Module( } @SubscribeEvent - fun onPacketSent(event: PacketSentEvent) { + fun onPacketSent(event: PacketEvent.Send) { (event.packet as? C02PacketUseEntity)?.getEntityFromWorld(mc.theWorld)?.let { if (it.name.noControlCodes != "Inactive Terminal") return if (!interactClock.hasTimePassed() || TerminalSolver.currentTerm.type != TerminalTypes.NONE) event.isCanceled = true else interactClock.update() diff --git a/odinclient/src/main/kotlin/me/odinclient/features/impl/render/EtherWarpHelper.kt b/odinclient/src/main/kotlin/me/odinclient/features/impl/render/EtherWarpHelper.kt index 47161421d..887164674 100644 --- a/odinclient/src/main/kotlin/me/odinclient/features/impl/render/EtherWarpHelper.kt +++ b/odinclient/src/main/kotlin/me/odinclient/features/impl/render/EtherWarpHelper.kt @@ -3,7 +3,7 @@ package me.odinclient.features.impl.render import me.odinclient.mixin.accessors.IEntityPlayerSPAccessor import me.odinclient.utils.skyblock.PlayerUtils import me.odinmain.events.impl.ClickEvent -import me.odinmain.events.impl.PacketReceivedEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.impl.dungeon.dungeonwaypoints.DungeonWaypoints.toBlockPos @@ -130,7 +130,7 @@ object EtherWarpHelper : Module( } @SubscribeEvent - fun onSoundPacket(event: PacketReceivedEvent) = with(event.packet) { + fun onSoundPacket(event: PacketEvent.Receive) = with(event.packet) { if (this !is S29PacketSoundEffect || soundName != "mob.enderdragon.hit" || !sounds || volume != 1f || pitch != 0.53968257f || customSound == "mob.enderdragon.hit") return playLoudSound(if (sound == defaultSounds.size - 1) customSound else defaultSounds[sound], soundVolume, soundPitch, positionVector) event.isCanceled = true diff --git a/odinclient/src/main/kotlin/me/odinclient/features/impl/render/NoDebuff.kt b/odinclient/src/main/kotlin/me/odinclient/features/impl/render/NoDebuff.kt index e9dea9866..17a3c1c6a 100644 --- a/odinclient/src/main/kotlin/me/odinclient/features/impl/render/NoDebuff.kt +++ b/odinclient/src/main/kotlin/me/odinclient/features/impl/render/NoDebuff.kt @@ -1,6 +1,6 @@ package me.odinclient.features.impl.render -import me.odinmain.events.impl.PacketReceivedEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.impl.BooleanSetting @@ -24,7 +24,7 @@ object NoDebuff : Module( private val antiWaterFOV by BooleanSetting("No Water FOV", false, description = "Disable FOV change in water.") private val noFire by BooleanSetting("No Fire Overlay", false, description = "Disable Fire overlay on screen.") private val seeThroughBlocks by BooleanSetting("See Through Blocks", false, description = "Makes blocks transparent.") - private val noNausea by BooleanSetting("No Nausea", false, description = "Disables nausea effect.") + private val noNausea by BooleanSetting("No Nausea", false, description = "Disables the nausea effect.") @JvmStatic val shouldIgnoreNausea get() = noNausea && enabled @@ -46,7 +46,7 @@ object NoDebuff : Module( } @SubscribeEvent - fun onPacket(event: PacketReceivedEvent) { + fun onPacket(event: PacketEvent.Receive) { val packet = event.packet as? S2APacketParticles ?: return if (noShieldParticles && packet.particleType.equalsOneOf(EnumParticleTypes.SPELL_WITCH, EnumParticleTypes.HEART)) event.isCanceled = true diff --git a/odinclient/src/main/kotlin/me/odinclient/features/impl/skyblock/ChocolateFactory.kt b/odinclient/src/main/kotlin/me/odinclient/features/impl/skyblock/ChocolateFactory.kt index 1e1b81be3..e64c44144 100644 --- a/odinclient/src/main/kotlin/me/odinclient/features/impl/skyblock/ChocolateFactory.kt +++ b/odinclient/src/main/kotlin/me/odinclient/features/impl/skyblock/ChocolateFactory.kt @@ -15,6 +15,7 @@ import net.minecraft.entity.item.EntityArmorStand import net.minecraft.inventory.Container import net.minecraft.inventory.ContainerChest import net.minecraft.util.Vec3 +import net.minecraftforge.client.event.GuiScreenEvent import net.minecraftforge.client.event.RenderWorldLastEvent import net.minecraftforge.client.event.sound.PlaySoundEvent import net.minecraftforge.fml.common.eventhandler.SubscribeEvent @@ -36,18 +37,10 @@ object ChocolateFactory : Module( private val indexToName = mapOf(28 to "Bro", 29 to "Cousin", 30 to "Sis", 31 to "Daddy", 32 to "Granny", 33 to "Uncle", 34 to "Dog") private val possibleLocations = arrayOf( - Island.SpiderDen, - Island.CrimsonIsle, - Island.TheEnd, - Island.GoldMine, - Island.DeepCaverns, - Island.DwarvenMines, - Island.CrystalHollows, - Island.FarmingIsland, - Island.ThePark, - Island.DungeonHub, - Island.Hub + Island.SpiderDen, Island.CrimsonIsle, Island.TheEnd, Island.GoldMine, Island.DeepCaverns, Island.DwarvenMines, + Island.CrystalHollows, Island.FarmingIsland, Island.ThePark, Island.DungeonHub, Island.Hub ) + private val eggFoundRegex = Regex(".*(A|found|collected).+Chocolate (Breakfast|Lunch|Dinner|Brunch|Déjeuner|Supper).*") init { onWorldLoad { currentDetectedEggs = arrayOfNulls(3) } @@ -80,13 +73,13 @@ object ChocolateFactory : Module( if (eggEsp && possibleLocations.contains(LocationUtils.currentArea) && currentDetectedEggs.filterNotNull().size < 3) scanForEggs() } - onMessage(Regex(".*(A|found|collected).+Chocolate (Lunch|Dinner|Breakfast).*")){ it -> + onMessage(eggFoundRegex){ it -> if(!eggEsp) return@onMessage - val match = Regex(".*(A|found|collected).+Chocolate (Lunch|Dinner|Breakfast).*").find(it) ?: return@onMessage - val egg = ChocolateEggs.entries.find { it.type.contains(match.groupValues[2]) } ?: return@onMessage + val match = eggFoundRegex.find(it) ?: return@onMessage + val egg = ChocolateEggs.entries.find { it.type.contains(match.groupValues[2]) }?.index ?: return@onMessage when (match.groupValues[1]) { - "A" -> currentDetectedEggs[egg.index] = null - "found", "collected" -> currentDetectedEggs[egg.index]?.isFound = true + "A" -> currentDetectedEggs[egg] = null + "found", "collected" -> currentDetectedEggs[egg]?.isFound = true } } } @@ -125,8 +118,7 @@ object ChocolateFactory : Module( @SubscribeEvent fun onSoundPlay(event: PlaySoundEvent) { - if (!cancelSound || event.name != "random.eat" || !isInChocolateFactory()) return - event.result = null // This should cancel the sound event + if (cancelSound && event.name == "random.eat" && isInChocolateFactory()) event.result = null } private var currentDetectedEggs = arrayOfNulls(3) @@ -162,8 +154,8 @@ object ChocolateFactory : Module( } private data object BunnyEggTextures { - const val DINNER_EGG_TEXTURE = "ewogICJ0aW1lc3RhbXAiIDogMTcxMTQ2MjY0OTcwMSwKICAicHJvZmlsZUlkIiA6ICI3NGEwMzQxNWY1OTI0ZTA4YjMyMGM2MmU1NGE3ZjJhYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZXp6aXIiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTVlMzYxNjU4MTlmZDI4NTBmOTg1NTJlZGNkNzYzZmY5ODYzMTMxMTkyODNjMTI2YWNlMGM0Y2M0OTVlNzZhOCIKICAgIH0KICB9Cn0=" + const val DINNER_EGG_TEXTURE = "ewogICJ0aW1lc3RhbXAiIDogMTcxMTQ2MjY0OTcwMSwKICAicHJvZmlsZUlkIiA6ICI3NGEwMzQxNWY1OTI0ZTA4YjMyMGM2MmU1NGE3ZjJhYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZXp6aXIiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTVlMzYxNjU4MTlmZDI4NTBmOTg1NTJlZGNkNzYzZmY5ODYzMTMxMTkyODNjMTI2YWNlMGM0Y2M0OTVlNzZhOCIKICAgIH0KICB9Cn0" const val LUNCH_EGG_TEXTURE = "ewogICJ0aW1lc3RhbXAiIDogMTcxMTQ2MjU2ODExMiwKICAicHJvZmlsZUlkIiA6ICI3NzUwYzFhNTM5M2Q0ZWQ0Yjc2NmQ4ZGUwOWY4MjU0NiIsCiAgInByb2ZpbGVOYW1lIiA6ICJSZWVkcmVsIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzdhZTZkMmQzMWQ4MTY3YmNhZjk1MjkzYjY4YTRhY2Q4NzJkNjZlNzUxZGI1YTM0ZjJjYmM2NzY2YTAzNTZkMGEiCiAgICB9CiAgfQp9" - const val BREAKFAST_EGG_TEXTURE = "ewogICJ0aW1lc3RhbXAiIDogMTcxMTQ2MjY3MzE0OSwKICAicHJvZmlsZUlkIiA6ICJiN2I4ZTlhZjEwZGE0NjFmOTY2YTQxM2RmOWJiM2U4OCIsCiAgInByb2ZpbGVOYW1lIiA6ICJBbmFiYW5hbmFZZzciLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTQ5MzMzZDg1YjhhMzE1ZDAzMzZlYjJkZjM3ZDhhNzE0Y2EyNGM1MWI4YzYwNzRmMWI1YjkyN2RlYjUxNmMyNCIKICAgIH0KICB9Cn0=" + const val BREAKFAST_EGG_TEXTURE = "ewogICJ0aW1lc3RhbXAiIDogMTcxMTQ2MjY3MzE0OSwKICAicHJvZmlsZUlkIiA6ICJiN2I4ZTlhZjEwZGE0NjFmOTY2YTQxM2RmOWJiM2U4OCIsCiAgInByb2ZpbGVOYW1lIiA6ICJBbmFiYW5hbmFZZzciLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTQ5MzMzZDg1YjhhMzE1ZDAzMzZlYjJkZjM3ZDhhNzE0Y2EyNGM1MWI4YzYwNzRmMWI1YjkyN2RlYjUxNmMyNCIKICAgIH0KICB9Cn0" } } diff --git a/src/main/kotlin/me/odinmain/commands/impl/DevCommand.kt b/src/main/kotlin/me/odinmain/commands/impl/DevCommand.kt index 35dac7758..76b21ff86 100644 --- a/src/main/kotlin/me/odinmain/commands/impl/DevCommand.kt +++ b/src/main/kotlin/me/odinmain/commands/impl/DevCommand.kt @@ -5,7 +5,7 @@ import kotlinx.coroutines.launch import me.odinmain.OdinMain.mc import me.odinmain.OdinMain.scope import me.odinmain.commands.commodore -import me.odinmain.events.impl.PacketReceivedEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.features.ModuleManager.generateFeatureList import me.odinmain.features.impl.dungeon.MapInfo import me.odinmain.features.impl.floor7.DragonPriority.displaySpawningDragon @@ -134,7 +134,7 @@ val devCommand = commodore("oddev") { } literal("simulate").runs { str: GreedyString -> mc.thePlayer.addChatMessage(ChatComponentText(str.string)) - PacketReceivedEvent(S02PacketChat(ChatComponentText(str.string))).postAndCatch() + PacketEvent.Receive(S02PacketChat(ChatComponentText(str.string))).postAndCatch() } literal("roomdata").runs { diff --git a/src/main/kotlin/me/odinmain/events/EventDispatcher.kt b/src/main/kotlin/me/odinmain/events/EventDispatcher.kt index 122d0b8c6..dc99aec60 100644 --- a/src/main/kotlin/me/odinmain/events/EventDispatcher.kt +++ b/src/main/kotlin/me/odinmain/events/EventDispatcher.kt @@ -1,16 +1,15 @@ package me.odinmain.events -import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.launch import me.odinmain.OdinMain.mc import me.odinmain.OdinMain.scope import me.odinmain.events.impl.* import me.odinmain.utils.* -import me.odinmain.utils.clock.Clock import me.odinmain.utils.skyblock.dungeon.DungeonUtils.dungeonItemDrops import me.odinmain.utils.skyblock.dungeon.DungeonUtils.inBoss import me.odinmain.utils.skyblock.dungeon.DungeonUtils.inDungeons import me.odinmain.utils.skyblock.dungeon.DungeonUtils.isSecret +import me.odinmain.utils.skyblock.modMessage import me.odinmain.utils.skyblock.unformattedName import net.minecraft.client.gui.inventory.GuiChest import net.minecraft.entity.item.EntityItem @@ -20,7 +19,6 @@ import net.minecraft.network.play.server.S02PacketChat import net.minecraft.network.play.server.S29PacketSoundEffect import net.minecraft.network.play.server.S32PacketConfirmTransaction import net.minecraftforge.client.event.GuiOpenEvent -import net.minecraftforge.client.event.RenderWorldLastEvent import net.minecraftforge.fml.common.eventhandler.SubscribeEvent object EventDispatcher { @@ -38,40 +36,27 @@ object EventDispatcher { * Dispatches [SecretPickupEvent.Interact] */ @SubscribeEvent - fun onPacket(event: PacketSentEvent) = with(event.packet) { + fun onPacket(event: PacketEvent.Send) = with(event.packet) { if (inDungeons && this is C08PacketPlayerBlockPlacement && position != null) SecretPickupEvent.Interact(position, mc.theWorld?.getBlockState(position)?.takeIf { isSecret(it, position) } ?: return).postAndCatch() } /** - * Dispatches [ChatPacketEvent], [RealServerTick], and [SecretPickupEvent.Bat] + * Dispatches [ChatPacketEvent], [ServerTickEvent], and [SecretPickupEvent.Bat] */ @SubscribeEvent - fun onPacket(event: PacketReceivedEvent) { + fun onPacket(event: PacketEvent.Receive) { if (event.packet is S29PacketSoundEffect && inDungeons && !inBoss && (event.packet.soundName.equalsOneOf("mob.bat.hurt", "mob.bat.death") && event.packet.volume == 0.1f)) SecretPickupEvent.Bat(event.packet).postAndCatch() - if (event.packet is S32PacketConfirmTransaction) RealServerTick().postAndCatch() + if (event.packet is S32PacketConfirmTransaction) ServerTickEvent().postAndCatch() if (event.packet !is S02PacketChat || !ChatPacketEvent(event.packet.chatComponent.unformattedText.noControlCodes).postAndCatch()) return event.isCanceled = true } - private val nextTime = Clock() - - /** - * Dispatches [ServerTickEvent] - */ - @SubscribeEvent - fun onRenderWorld(event: RenderWorldLastEvent) { - if (nextTime.hasTimePassed((1000L / ServerUtils.averageTps).toLong(), setTime = true)) { - ServerTickEvent().postAndCatch() - } - } - /** * Dispatches [GuiEvent.Loaded] */ - @OptIn(DelicateCoroutinesApi::class) @SubscribeEvent fun onGuiOpen(event: GuiOpenEvent) = scope.launch { if (event.gui !is GuiChest) return@launch diff --git a/src/main/kotlin/me/odinmain/events/impl/GuiEvents.kt b/src/main/kotlin/me/odinmain/events/impl/GuiEvents.kt index 0a14831e4..c9ade0be4 100644 --- a/src/main/kotlin/me/odinmain/events/impl/GuiEvents.kt +++ b/src/main/kotlin/me/odinmain/events/impl/GuiEvents.kt @@ -16,7 +16,7 @@ abstract class GuiEvent : Event() { data class Loaded(val name: String, val gui: ContainerChest) : GuiEvent() @Cancelable - data class DrawGuiContainerScreenEvent(val container: Container, val gui: GuiContainer, val xSize: Int, val ySize: Int, val guiLeft: Int, val guiTop: Int) : GuiEvent() + class DrawGuiContainerScreenEvent(val container: Container, val gui: GuiContainer, val xSize: Int, val ySize: Int, val guiLeft: Int, val guiTop: Int) : GuiEvent() @Cancelable class DrawSlotEvent(val container: Container, val gui: GuiContainer, var slot: Slot, val x: Int, val y: Int) : GuiEvent() @@ -25,15 +25,7 @@ abstract class GuiEvent : Event() { class DrawSlotOverlayEvent(val stack: ItemStack?, val x: Int?, val y: Int?, val text: String?) : GuiEvent() @Cancelable - data class MouseClick(val gui: GuiScreen, val button: Int, val x: Int, val y: Int) : GuiEvent() - - @Cancelable - data class GuiMouseReleaseEvent(val gui: GuiScreen, val button: Int, val x: Int, val y: Int) : GuiEvent() - - @Cancelable - class KeyPress(val gui: GuiScreen, val keyCode: Int, val char: Char) : Event() - - class Closed(val gui: GuiContainer) : GuiEvent() + class GuiMouseReleaseEvent(val gui: GuiScreen, val button: Int, val x: Int, val y: Int) : GuiEvent() @Cancelable class WindowClick(val windowId: Int, val slotId: Int, val mouseButtonClicked: Int, val mode: Int, val playerIn: EntityPlayer) : GuiEvent() diff --git a/src/main/kotlin/me/odinmain/events/impl/InputEvents.kt b/src/main/kotlin/me/odinmain/events/impl/InputEvents.kt index 89e88bd1f..7cdc684c9 100644 --- a/src/main/kotlin/me/odinmain/events/impl/InputEvents.kt +++ b/src/main/kotlin/me/odinmain/events/impl/InputEvents.kt @@ -2,6 +2,7 @@ package me.odinmain.events.impl import net.minecraftforge.fml.common.eventhandler.Event -data class PreKeyInputEvent(val keycode: Int) : Event() - -data class PreMouseInputEvent(val button: Int) : Event() \ No newline at end of file +abstract class InputEvent(val keycode: Int) : Event() { + class Keyboard(keycode: Int) : InputEvent(keycode) + class Mouse(button: Int) : InputEvent(button) +} \ No newline at end of file diff --git a/src/main/kotlin/me/odinmain/events/impl/PacketEvents.kt b/src/main/kotlin/me/odinmain/events/impl/PacketEvents.kt index ffa1ac114..b8de7eca6 100644 --- a/src/main/kotlin/me/odinmain/events/impl/PacketEvents.kt +++ b/src/main/kotlin/me/odinmain/events/impl/PacketEvents.kt @@ -4,14 +4,11 @@ import net.minecraft.network.Packet import net.minecraftforge.fml.common.eventhandler.Cancelable import net.minecraftforge.fml.common.eventhandler.Event -/** - * see MixinNetworkManager.onReceivePacket - */ -@Cancelable -data class PacketReceivedEvent(val packet: Packet<*>) : Event() +open class PacketEvent(val packet: Packet<*>) : Event() { -/** - * see MixinNetworkManager.onSendPacket - */ -@Cancelable -data class PacketSentEvent(var packet: Packet<*>) : Event() \ No newline at end of file + @Cancelable + class Receive(packet: Packet<*>) : PacketEvent(packet) + + @Cancelable + class Send(packet: Packet<*>) : PacketEvent(packet) +} \ No newline at end of file diff --git a/src/main/kotlin/me/odinmain/events/impl/RenderChestEvent.kt b/src/main/kotlin/me/odinmain/events/impl/RenderChestEvent.kt index fa6a32dcd..4c602e45b 100644 --- a/src/main/kotlin/me/odinmain/events/impl/RenderChestEvent.kt +++ b/src/main/kotlin/me/odinmain/events/impl/RenderChestEvent.kt @@ -3,7 +3,7 @@ package me.odinmain.events.impl import net.minecraft.tileentity.TileEntityChest import net.minecraftforge.fml.common.eventhandler.Event -abstract class RenderChestEvent(var chest: TileEntityChest, var x: Double, var y: Double, var z: Double, var partialTicks: Float) : Event() { +open class RenderChestEvent(var chest: TileEntityChest, var x: Double, var y: Double, var z: Double, var partialTicks: Float) : Event() { class Pre(tileEntity: TileEntityChest, x: Double, y: Double, z: Double, partialTicks: Float) : RenderChestEvent(tileEntity, x, y, z, partialTicks) diff --git a/src/main/kotlin/me/odinmain/events/impl/SecretEvent.kt b/src/main/kotlin/me/odinmain/events/impl/SecretEvent.kt index c0b3ed95c..c1434a078 100644 --- a/src/main/kotlin/me/odinmain/events/impl/SecretEvent.kt +++ b/src/main/kotlin/me/odinmain/events/impl/SecretEvent.kt @@ -6,8 +6,8 @@ import net.minecraft.network.play.server.S29PacketSoundEffect import net.minecraft.util.BlockPos import net.minecraftforge.fml.common.eventhandler.Event -abstract class SecretPickupEvent : Event() { - data class Interact(val blockPos: BlockPos, val blockState: IBlockState) : SecretPickupEvent() - data class Item(val entity: EntityItem) : SecretPickupEvent() - data class Bat(val packet: S29PacketSoundEffect) : SecretPickupEvent() +open class SecretPickupEvent : Event() { + class Interact(val blockPos: BlockPos, val blockState: IBlockState) : SecretPickupEvent() + class Item(val entity: EntityItem) : SecretPickupEvent() + class Bat(val packet: S29PacketSoundEffect) : SecretPickupEvent() } \ No newline at end of file diff --git a/src/main/kotlin/me/odinmain/events/impl/ServerTickEvent.kt b/src/main/kotlin/me/odinmain/events/impl/ServerTickEvent.kt index beb35a7e6..bc73036d7 100644 --- a/src/main/kotlin/me/odinmain/events/impl/ServerTickEvent.kt +++ b/src/main/kotlin/me/odinmain/events/impl/ServerTickEvent.kt @@ -2,9 +2,4 @@ package me.odinmain.events.impl import net.minecraftforge.fml.common.eventhandler.Event -/** - * @see me.odinmain.events.EventDispatcher - */ -class ServerTickEvent : Event() - -class RealServerTick : Event() \ No newline at end of file +class ServerTickEvent : Event() \ No newline at end of file diff --git a/src/main/kotlin/me/odinmain/events/impl/SkyblockJoinIslandEvent.kt b/src/main/kotlin/me/odinmain/events/impl/SkyblockJoinIslandEvent.kt deleted file mode 100644 index a1df7e5b6..000000000 --- a/src/main/kotlin/me/odinmain/events/impl/SkyblockJoinIslandEvent.kt +++ /dev/null @@ -1,6 +0,0 @@ -package me.odinmain.events.impl - -import me.odinmain.utils.skyblock.Island -import net.minecraftforge.fml.common.eventhandler.Event - -data class SkyblockJoinIslandEvent(val island: Island) : Event() \ No newline at end of file diff --git a/src/main/kotlin/me/odinmain/events/impl/TerminalEvent.kt b/src/main/kotlin/me/odinmain/events/impl/TerminalEvent.kt index 9a6754ba3..e27374087 100644 --- a/src/main/kotlin/me/odinmain/events/impl/TerminalEvent.kt +++ b/src/main/kotlin/me/odinmain/events/impl/TerminalEvent.kt @@ -3,7 +3,7 @@ package me.odinmain.events.impl import me.odinmain.features.impl.floor7.p3.TerminalTypes import net.minecraftforge.fml.common.eventhandler.Event -abstract class TerminalEvent(val type: TerminalTypes) : Event() { +open class TerminalEvent(val type: TerminalTypes) : Event() { class Opened(type: TerminalTypes) : TerminalEvent(type) class Closed(type: TerminalTypes) : TerminalEvent(type) class Solved(type: TerminalTypes, val playerName: String, val completionStatus: Int, val total: Int) : TerminalEvent(type) diff --git a/src/main/kotlin/me/odinmain/features/ModuleManager.kt b/src/main/kotlin/me/odinmain/features/ModuleManager.kt index 571bd8aae..6573ac64b 100644 --- a/src/main/kotlin/me/odinmain/features/ModuleManager.kt +++ b/src/main/kotlin/me/odinmain/features/ModuleManager.kt @@ -91,7 +91,7 @@ object ModuleManager { } @SubscribeEvent(receiveCanceled = true) - fun onServerTick(event: RealServerTick) { + fun onServerTick(event: ServerTickEvent) { tickTaskTick(true) } @@ -108,14 +108,14 @@ object ModuleManager { } @SubscribeEvent(receiveCanceled = true) - fun onReceivePacket(event: PacketReceivedEvent) { + fun onReceivePacket(event: PacketEvent.Receive) { packetFunctions.forEach { if (it.type.isInstance(event.packet) && it.shouldRun.invoke()) it.function(event.packet) } } @SubscribeEvent(receiveCanceled = true) - fun onSendPacket(event: PacketSentEvent) { + fun onSendPacket(event: PacketEvent.Send) { packetFunctions.forEach { if (it.type.isInstance(event.packet) && it.shouldRun.invoke()) it.function(event.packet) } @@ -135,7 +135,7 @@ object ModuleManager { } @SubscribeEvent - fun activateModuleKeyBinds(event: PreKeyInputEvent) { + fun activateModuleKeyBinds(event: InputEvent.Keyboard) { for (module in modules) { for (setting in module.settings) { if (setting is KeybindSetting && setting.value.key == event.keycode) { @@ -146,10 +146,10 @@ object ModuleManager { } @SubscribeEvent - fun activateModuleMouseBinds(event: PreMouseInputEvent) { + fun activateModuleMouseBinds(event: InputEvent.Mouse) { for (module in modules) { for (setting in module.settings) { - if (setting is KeybindSetting && setting.value.key + 100 == event.button) { + if (setting is KeybindSetting && setting.value.key + 100 == event.keycode) { setting.value.onPress?.invoke() } } diff --git a/src/main/kotlin/me/odinmain/features/impl/dungeon/BloodCamp.kt b/src/main/kotlin/me/odinmain/features/impl/dungeon/BloodCamp.kt index c44263a77..9a06ece1d 100644 --- a/src/main/kotlin/me/odinmain/features/impl/dungeon/BloodCamp.kt +++ b/src/main/kotlin/me/odinmain/features/impl/dungeon/BloodCamp.kt @@ -3,7 +3,7 @@ package me.odinmain.features.impl.dungeon import me.odinmain.OdinMain.isLegitVersion import me.odinmain.events.impl.EntityLeaveWorldEvent import me.odinmain.events.impl.PostEntityMetadata -import me.odinmain.events.impl.RealServerTick +import me.odinmain.events.impl.ServerTickEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.Setting.Companion.withDependency @@ -209,7 +209,7 @@ object BloodCamp : Module( } @SubscribeEvent - fun onServerTick(event: RealServerTick) { + fun onServerTick(event: ServerTickEvent) { currentTickTime += 50 } diff --git a/src/main/kotlin/me/odinmain/features/impl/dungeon/LeapMenu.kt b/src/main/kotlin/me/odinmain/features/impl/dungeon/LeapMenu.kt index e6881147d..5292a1695 100644 --- a/src/main/kotlin/me/odinmain/features/impl/dungeon/LeapMenu.kt +++ b/src/main/kotlin/me/odinmain/features/impl/dungeon/LeapMenu.kt @@ -26,9 +26,11 @@ import net.minecraft.client.renderer.GlStateManager import net.minecraft.inventory.ContainerChest import net.minecraft.util.ResourceLocation import net.minecraftforge.client.event.GuiOpenEvent +import net.minecraftforge.client.event.GuiScreenEvent import net.minecraftforge.fml.common.Loader import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import org.lwjgl.input.Keyboard +import org.lwjgl.input.Mouse import org.lwjgl.opengl.Display object LeapMenu : Module( @@ -56,6 +58,7 @@ object LeapMenu : Module( private var previouslyHoveredQuadrant = -1 private val EMPTY = DungeonPlayer("Empty", DungeonClass.Unknown, 0, ResourceLocation("textures/entity/steve.png")) + private val keybindList = listOf(topLeftKeybind, topRightKeybind, bottomLeftKeybind, bottomRightKeybind) @SubscribeEvent fun onDrawScreen(event: GuiEvent.DrawGuiContainerScreenEvent) { @@ -118,9 +121,9 @@ object LeapMenu : Module( } @SubscribeEvent - fun mouseClicked(event: GuiEvent.MouseClick) { + fun mouseClicked(event: GuiScreenEvent.MouseInputEvent.Pre) { val gui = event.gui as? GuiChest ?: return - if (event.gui.inventorySlots !is ContainerChest || gui.inventorySlots.name != "Spirit Leap" || leapTeammates.isEmpty()) return + if (!Mouse.getEventButtonState() || gui.inventorySlots !is ContainerChest || gui.inventorySlots.name != "Spirit Leap" || leapTeammates.isEmpty()) return val quadrant = getQuadrant() if ((type.equalsOneOf(1,2,3)) && leapTeammates.size < quadrant) return @@ -135,23 +138,18 @@ object LeapMenu : Module( } @SubscribeEvent - fun keyTyped(event: GuiEvent.KeyPress) { + fun keyTyped(event: GuiScreenEvent.KeyboardInputEvent.Pre) { val gui = event.gui as? GuiChest ?: return if ( gui.inventorySlots !is ContainerChest || gui.inventorySlots.name != "Spirit Leap" || - !event.keyCode.equalsOneOf(topLeftKeybind.key, topRightKeybind.key, bottomLeftKeybind.key, bottomRightKeybind.key) || + keybindList.none { it.isDown() } || leapTeammates.isEmpty() || !useNumberKeys ) return - val keyCodeNumber = when (event.keyCode) { - topLeftKeybind.key -> 1 - topRightKeybind.key -> 2 - bottomLeftKeybind.key -> 3 - bottomRightKeybind.key -> 4 - else -> return - } - val playerToLeap = if (keyCodeNumber > leapTeammates.size) return else leapTeammates[keyCodeNumber - 1] + + val index = keybindList.indexOfFirst { it.isDown() } + val playerToLeap = if (index + 1 > leapTeammates.size) return else leapTeammates[index] if (playerToLeap == EMPTY) return if (playerToLeap.isDead) return modMessage("This player is dead, can't leap.") diff --git a/src/main/kotlin/me/odinmain/features/impl/dungeon/PosMessages.kt b/src/main/kotlin/me/odinmain/features/impl/dungeon/PosMessages.kt index 3e71e8f97..e2eb70bd4 100644 --- a/src/main/kotlin/me/odinmain/features/impl/dungeon/PosMessages.kt +++ b/src/main/kotlin/me/odinmain/features/impl/dungeon/PosMessages.kt @@ -1,6 +1,6 @@ package me.odinmain.features.impl.dungeon -import me.odinmain.events.impl.PacketSentEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.impl.BooleanSetting @@ -29,7 +29,7 @@ object PosMessages : Module( val parsedStrings: MutableList = mutableListOf() @SubscribeEvent - fun posMessageSend(event: PacketSentEvent) { + fun posMessageSend(event: PacketEvent.Send) { if (event.packet !is C04PacketPlayerPosition || (onlyDungeons && !DungeonUtils.inDungeons)) return parsedStrings.forEach { message -> message.x2?.let { handleInString(message) } ?: handleAtString(message) diff --git a/src/main/kotlin/me/odinmain/features/impl/dungeon/TerracottaTimer.kt b/src/main/kotlin/me/odinmain/features/impl/dungeon/TerracottaTimer.kt index 1eacd3778..bdf0b3088 100644 --- a/src/main/kotlin/me/odinmain/features/impl/dungeon/TerracottaTimer.kt +++ b/src/main/kotlin/me/odinmain/features/impl/dungeon/TerracottaTimer.kt @@ -1,7 +1,7 @@ package me.odinmain.features.impl.dungeon import me.odinmain.events.impl.BlockChangeEvent -import me.odinmain.events.impl.RealServerTick +import me.odinmain.events.impl.ServerTickEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.utils.* @@ -29,7 +29,7 @@ object TerracottaTimer : Module( } @SubscribeEvent - fun onServerTick(event: RealServerTick) { + fun onServerTick(event: ServerTickEvent) { terracottaSpawning.removeAll { it.time -= 5 it.time <= 0 diff --git a/src/main/kotlin/me/odinmain/features/impl/floor7/TickTimers.kt b/src/main/kotlin/me/odinmain/features/impl/floor7/TickTimers.kt index 4864d12c6..592d7a1a1 100644 --- a/src/main/kotlin/me/odinmain/features/impl/floor7/TickTimers.kt +++ b/src/main/kotlin/me/odinmain/features/impl/floor7/TickTimers.kt @@ -1,6 +1,6 @@ package me.odinmain.features.impl.floor7 -import me.odinmain.events.impl.RealServerTick +import me.odinmain.events.impl.ServerTickEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.Setting.Companion.withDependency @@ -79,7 +79,7 @@ object TickTimers : Module( } @SubscribeEvent - fun onServerTick(event: RealServerTick) { + fun onServerTick(event: ServerTickEvent) { if (necronTime >= 0 && necronHud.enabled) necronTime-- if (goldorTickTime >= 0 && goldorHud.enabled) goldorTickTime-- diff --git a/src/main/kotlin/me/odinmain/features/impl/floor7/WitherDragons.kt b/src/main/kotlin/me/odinmain/features/impl/floor7/WitherDragons.kt index 572bad9fe..a7b667d1b 100644 --- a/src/main/kotlin/me/odinmain/features/impl/floor7/WitherDragons.kt +++ b/src/main/kotlin/me/odinmain/features/impl/floor7/WitherDragons.kt @@ -1,6 +1,6 @@ package me.odinmain.features.impl.floor7 -import me.odinmain.events.impl.RealServerTick +import me.odinmain.events.impl.ServerTickEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.impl.floor7.DragonBoxes.renderBoxes @@ -149,7 +149,7 @@ object WitherDragons : Module( } @SubscribeEvent - fun onServerTick(event: RealServerTick) { + fun onServerTick(event: ServerTickEvent) { currentTick++ DragonCheck.updateTime() KingRelics.onServerTick() diff --git a/src/main/kotlin/me/odinmain/features/impl/floor7/p3/ArrowAlign.kt b/src/main/kotlin/me/odinmain/features/impl/floor7/p3/ArrowAlign.kt index 9740771e0..8ba401c04 100644 --- a/src/main/kotlin/me/odinmain/features/impl/floor7/p3/ArrowAlign.kt +++ b/src/main/kotlin/me/odinmain/features/impl/floor7/p3/ArrowAlign.kt @@ -1,6 +1,6 @@ package me.odinmain.features.impl.floor7.p3 -import me.odinmain.events.impl.PacketSentEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.impl.BooleanSetting @@ -57,7 +57,7 @@ object ArrowAlign : Module( } @SubscribeEvent - fun onPacket(event: PacketSentEvent) { + fun onPacket(event: PacketEvent.Send) { val packet = event.packet as? C02PacketUseEntity ?: return if (DungeonUtils.getF7Phase() != M7Phases.P3 || clicksRemaining.isEmpty() || packet.action != C02PacketUseEntity.Action.INTERACT) return val entity = packet.getEntityFromWorld(mc.theWorld) ?: return diff --git a/src/main/kotlin/me/odinmain/features/impl/floor7/p3/TerminalSolver.kt b/src/main/kotlin/me/odinmain/features/impl/floor7/p3/TerminalSolver.kt index 7b76154ec..079581ec5 100644 --- a/src/main/kotlin/me/odinmain/features/impl/floor7/p3/TerminalSolver.kt +++ b/src/main/kotlin/me/odinmain/features/impl/floor7/p3/TerminalSolver.kt @@ -26,12 +26,14 @@ import net.minecraft.inventory.ContainerChest import net.minecraft.inventory.ContainerPlayer import net.minecraft.item.* import net.minecraft.network.play.server.S2FPacketSetSlot +import net.minecraftforge.client.event.GuiScreenEvent import net.minecraftforge.event.entity.player.ItemTooltipEvent import net.minecraftforge.fml.common.Loader import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import net.minecraftforge.fml.common.gameevent.TickEvent import net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent import org.lwjgl.input.Keyboard +import org.lwjgl.input.Mouse @AlwaysActive // So it can be used in other modules object TerminalSolver : Module( @@ -216,35 +218,39 @@ object TerminalSolver : Module( } @SubscribeEvent(receiveCanceled = true) - fun onGuiClick(event: GuiEvent.MouseClick) { + fun onGuiClick(event: GuiScreenEvent.MouseInputEvent.Pre) { + if (!Mouse.getEventButtonState() || currentTerm.type == TerminalTypes.NONE || !enabled) return val gui = event.gui as? GuiChest ?: return val needed = currentTerm.solution.count { it == gui.slotUnderMouse?.slotIndex } - if (renderType != 3 && currentTerm.type != TerminalTypes.NONE && middleClickGUI && enabled) { - event.isCanceled = true - windowClick(gui.slotUnderMouse?.slotIndex ?: return, if (needed >= 3) PlayerUtils.ClickType.Right else PlayerUtils.ClickType.Middle) - } - if (currentTerm.type == TerminalTypes.NONE || !enabled || (currentTerm.type == TerminalTypes.MELODY && cancelMelodySolver)) return - if (renderType == 3) { - CustomTermGui.mouseClicked(MouseUtils.mouseX.toInt(), MouseUtils.mouseY.toInt(), event.button) + if (renderType == 3 && !(currentTerm.type == TerminalTypes.MELODY && cancelMelodySolver)) { + CustomTermGui.mouseClicked(MouseUtils.mouseX.toInt(), MouseUtils.mouseY.toInt(), Mouse.getEventButton()) event.isCanceled = true return } if (blockIncorrectClicks && currentTerm.type != TerminalTypes.MELODY) { - event.isCanceled = when { + when { gui.slotUnderMouse?.slotIndex !in currentTerm.solution -> true - currentTerm.type == TerminalTypes.RUBIX && ((needed < 3 && event.button != 0) || (needed >= 3 && event.button != 1)) -> true + currentTerm.type == TerminalTypes.RUBIX && ((needed < 3 && Mouse.getEventButton() != 0) || (needed >= 3 && Mouse.getEventButton() != 1)) -> true else -> false + }.takeIf { it }?.let { + event.isCanceled = true + return } } + + if (middleClickGUI) { + windowClick(gui.slotUnderMouse?.slotIndex ?: return, if (Mouse.getEventButton() == 0) PlayerUtils.ClickType.Middle else PlayerUtils.ClickType.Right) + event.isCanceled = true + } } @SubscribeEvent - fun onGuiKeyPress(event: GuiEvent.KeyPress) { + fun onGuiKeyPress(event: GuiScreenEvent.KeyboardInputEvent.Pre) { if (currentTerm.type == TerminalTypes.NONE || !enabled || (currentTerm.type == TerminalTypes.MELODY && cancelMelodySolver)) return - if (renderType == 3 && (event.keyCode == mc.gameSettings.keyBindDrop.keyCode || event.keyCode in 2..10)) { - CustomTermGui.mouseClicked(MouseUtils.mouseX.toInt(), MouseUtils.mouseY.toInt(), if (Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && event.keyCode == mc.gameSettings.keyBindDrop.keyCode) 1 else 0) + if (renderType == 3 && (Keyboard.isKeyDown(mc.gameSettings.keyBindDrop.keyCode) || Keyboard.getEventKey() in 2..10)) { + CustomTermGui.mouseClicked(MouseUtils.mouseX.toInt(), MouseUtils.mouseY.toInt(), if (Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && Keyboard.isKeyDown(mc.gameSettings.keyBindDrop.keyCode)) 1 else 0) event.isCanceled = true } } diff --git a/src/main/kotlin/me/odinmain/features/impl/floor7/p3/TerminalSounds.kt b/src/main/kotlin/me/odinmain/features/impl/floor7/p3/TerminalSounds.kt index 2b190b53b..631a14b5c 100644 --- a/src/main/kotlin/me/odinmain/features/impl/floor7/p3/TerminalSounds.kt +++ b/src/main/kotlin/me/odinmain/features/impl/floor7/p3/TerminalSounds.kt @@ -10,8 +10,10 @@ import me.odinmain.utils.equalsOneOf import me.odinmain.utils.skyblock.PlayerUtils import net.minecraft.client.gui.inventory.GuiChest import net.minecraft.network.play.server.S29PacketSoundEffect +import net.minecraftforge.client.event.GuiScreenEvent import net.minecraftforge.fml.common.eventhandler.EventPriority import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import org.lwjgl.input.Mouse object TerminalSounds : Module( name = "Terminal Sounds", @@ -45,14 +47,14 @@ object TerminalSounds : Module( private var lastPlayed = System.currentTimeMillis() @SubscribeEvent - fun onPacket(event: PacketReceivedEvent) = with(event.packet) { + fun onPacket(event: PacketEvent.Receive) = with(event.packet) { if (this is S29PacketSoundEffect && soundName == "note.pling" && volume == 8f && pitch == 4.047619f && shouldReplaceSounds) event.isCanceled = true } @SubscribeEvent(priority = EventPriority.HIGHEST) - fun onSlotClick(event: GuiEvent.MouseClick) { - if (shouldReplaceSounds) clickSlot((event.gui as? GuiChest)?.slotUnderMouse?.slotIndex ?: return) + fun onSlotClick(event: GuiScreenEvent.MouseInputEvent.Pre) { + if (shouldReplaceSounds && Mouse.getEventButtonState()) clickSlot((event.gui as? GuiChest)?.slotUnderMouse?.slotIndex ?: return) } @SubscribeEvent diff --git a/src/main/kotlin/me/odinmain/features/impl/floor7/p3/TerminalTimes.kt b/src/main/kotlin/me/odinmain/features/impl/floor7/p3/TerminalTimes.kt index c7b912159..c3f3dca88 100644 --- a/src/main/kotlin/me/odinmain/features/impl/floor7/p3/TerminalTimes.kt +++ b/src/main/kotlin/me/odinmain/features/impl/floor7/p3/TerminalTimes.kt @@ -87,7 +87,7 @@ object TerminalTimes : Module( } @SubscribeEvent - fun onServerTick(event: RealServerTick) { + fun onServerTick(event: ServerTickEvent) { if (!terminalSplits || useRealTime) return currentTick += 50 } diff --git a/src/main/kotlin/me/odinmain/features/impl/floor7/p3/termsim/TermSimGui.kt b/src/main/kotlin/me/odinmain/features/impl/floor7/p3/termsim/TermSimGui.kt index df879cdd9..e2ae93d71 100644 --- a/src/main/kotlin/me/odinmain/features/impl/floor7/p3/termsim/TermSimGui.kt +++ b/src/main/kotlin/me/odinmain/features/impl/floor7/p3/termsim/TermSimGui.kt @@ -3,8 +3,7 @@ package me.odinmain.features.impl.floor7.p3.termsim import me.odinmain.OdinMain.display import me.odinmain.events.impl.GuiEvent -import me.odinmain.events.impl.PacketReceivedEvent -import me.odinmain.events.impl.PacketSentEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.features.impl.floor7.TerminalSimulator import me.odinmain.features.impl.floor7.TerminalSimulator.openRandomTerminal import me.odinmain.features.impl.floor7.TerminalSimulator.sendMessage @@ -64,7 +63,7 @@ open class TermSimGui(val name: String, val size: Int, private val inv: Inventor } @SubscribeEvent - fun onPacketSend(event: PacketSentEvent) { + fun onPacketSend(event: PacketEvent.Send) { val packet = event.packet as? C0EPacketClickWindow ?: return if (mc.currentScreen != this) return delaySlotClick(this.inventorySlots.inventorySlots[packet.slotId], packet.usedButton) @@ -72,7 +71,7 @@ open class TermSimGui(val name: String, val size: Int, private val inv: Inventor } @SubscribeEvent - fun onPacketReceived(event: PacketReceivedEvent) { + fun onPacketReceived(event: PacketEvent.Receive) { val packet = event.packet as? S2FPacketSetSlot ?: return if (mc.currentScreen !== this) return packet.func_149174_e()?.let { diff --git a/src/main/kotlin/me/odinmain/features/impl/nether/BlazeAttunement.kt b/src/main/kotlin/me/odinmain/features/impl/nether/BlazeAttunement.kt index bd92ed597..7ccf1c2f9 100644 --- a/src/main/kotlin/me/odinmain/features/impl/nether/BlazeAttunement.kt +++ b/src/main/kotlin/me/odinmain/features/impl/nether/BlazeAttunement.kt @@ -29,7 +29,7 @@ object BlazeAttunement : Module( private var currentBlazes = hashMapOf() init { - execute(1000) { + execute(250) { if (!overlay) return@execute currentBlazes.clear() mc.theWorld?.loadedEntityList?.forEach { entity -> diff --git a/src/main/kotlin/me/odinmain/features/impl/nether/RemovePerks.kt b/src/main/kotlin/me/odinmain/features/impl/nether/RemovePerks.kt index 182e921d8..a4a6a89cd 100644 --- a/src/main/kotlin/me/odinmain/features/impl/nether/RemovePerks.kt +++ b/src/main/kotlin/me/odinmain/features/impl/nether/RemovePerks.kt @@ -10,7 +10,9 @@ import me.odinmain.utils.name import me.odinmain.utils.skyblock.unformattedName import net.minecraft.client.gui.inventory.GuiChest import net.minecraft.inventory.ContainerChest +import net.minecraftforge.client.event.GuiScreenEvent import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import org.lwjgl.input.Mouse object RemovePerks : Module( name = "Remove Perks", @@ -21,13 +23,13 @@ object RemovePerks : Module( @SubscribeEvent fun renderSlot(event: GuiEvent.DrawSlotEvent) { - if ((event.gui.inventorySlots as? ContainerChest)?.name == "Perk Menu" && slotCheck(event.slot.stack?.unformattedName ?: return)) + if (event.gui.inventorySlots?.name == "Perk Menu" && slotCheck(event.slot.stack?.unformattedName ?: return)) event.isCanceled = true } @SubscribeEvent - fun guiMouseClick(event: GuiEvent.MouseClick) { - if (event.gui is GuiChest && (event.gui.inventorySlots as? ContainerChest)?.name == "Perk Menu" && slotCheck(event.gui.slotUnderMouse?.stack?.unformattedName ?: return)) + fun guiMouseClick(event: GuiScreenEvent.MouseInputEvent.Pre) = with(event.gui) { + if (Mouse.getEventButtonState() && this is GuiChest && inventorySlots?.name == "Perk Menu" && slotCheck(slotUnderMouse?.stack?.unformattedName ?: return)) event.isCanceled = true } diff --git a/src/main/kotlin/me/odinmain/features/impl/render/CPSDisplay.kt b/src/main/kotlin/me/odinmain/features/impl/render/CPSDisplay.kt index 3a208d743..ba870c2da 100644 --- a/src/main/kotlin/me/odinmain/features/impl/render/CPSDisplay.kt +++ b/src/main/kotlin/me/odinmain/features/impl/render/CPSDisplay.kt @@ -1,6 +1,6 @@ package me.odinmain.features.impl.render -import me.odinmain.events.impl.PacketSentEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.Setting.Companion.withDependency @@ -64,8 +64,6 @@ object CPSDisplay : Module( if (button == 2) 100f to 38f else 50f to 38f } - - private val leftAnim = EaseInOut(300) private val rightAnim = EaseInOut(300) @@ -85,7 +83,7 @@ object CPSDisplay : Module( } @SubscribeEvent - fun onSendPacket(event: PacketSentEvent) { // This is for any block placement packet that gets sent outside the rightclickmouse method :eyes: + fun onSendPacket(event: PacketEvent.Send) { // This is for any block placement packet that gets sent outside the rightclickmouse method :eyes: if (event.packet !is C08PacketPlayerBlockPlacement || !countPackets) return if (rightClicks.any { System.currentTimeMillis() - it < 5 }) return onRightClick() diff --git a/src/main/kotlin/me/odinmain/features/impl/render/RenderOptimizer.kt b/src/main/kotlin/me/odinmain/features/impl/render/RenderOptimizer.kt index a65b8f7a1..3e1323302 100644 --- a/src/main/kotlin/me/odinmain/features/impl/render/RenderOptimizer.kt +++ b/src/main/kotlin/me/odinmain/features/impl/render/RenderOptimizer.kt @@ -1,6 +1,6 @@ package me.odinmain.features.impl.render -import me.odinmain.events.impl.PacketReceivedEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.Setting.Companion.withDependency @@ -74,7 +74,7 @@ object RenderOptimizer : Module( ) @SubscribeEvent - fun onPacket(event: PacketReceivedEvent) { + fun onPacket(event: PacketEvent.Receive) { if (!LocationUtils.isInSkyblock) return if (event.packet is S1CPacketEntityMetadata && hide0HealthNames) { mc.theWorld?.getEntityByID(event.packet.entityId)?.let { entity -> diff --git a/src/main/kotlin/me/odinmain/features/impl/skyblock/AbilityTimers.kt b/src/main/kotlin/me/odinmain/features/impl/skyblock/AbilityTimers.kt index 97475c1a5..60078f9d6 100644 --- a/src/main/kotlin/me/odinmain/features/impl/skyblock/AbilityTimers.kt +++ b/src/main/kotlin/me/odinmain/features/impl/skyblock/AbilityTimers.kt @@ -1,6 +1,6 @@ package me.odinmain.features.impl.skyblock -import me.odinmain.events.impl.RealServerTick +import me.odinmain.events.impl.ServerTickEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.Setting.Companion.withDependency @@ -86,7 +86,7 @@ object AbilityTimers : Module( private inline val Int.formatTicks get() = String.format(Locale.US, "%.2f", this / 20.0) @SubscribeEvent - fun onServerTick(event: RealServerTick) { + fun onServerTick(event: ServerTickEvent) { if (witherImpactTicks > 0 && witherHud.enabled) witherImpactTicks-- if (tacTimer > 0 && tacHud.enabled) tacTimer-- if (enrageTimer > 0 && enrageHud.enabled) enrageTimer-- diff --git a/src/main/kotlin/me/odinmain/features/impl/skyblock/InvincibilityTimer.kt b/src/main/kotlin/me/odinmain/features/impl/skyblock/InvincibilityTimer.kt index 5ad0a5896..db32a64fd 100644 --- a/src/main/kotlin/me/odinmain/features/impl/skyblock/InvincibilityTimer.kt +++ b/src/main/kotlin/me/odinmain/features/impl/skyblock/InvincibilityTimer.kt @@ -2,7 +2,7 @@ package me.odinmain.features.impl.skyblock import me.odinmain.events.impl.ChatPacketEvent import me.odinmain.events.impl.GuiEvent.DrawSlotOverlayEvent -import me.odinmain.events.impl.RealServerTick +import me.odinmain.events.impl.ServerTickEvent import me.odinmain.features.Category import me.odinmain.features.Module import me.odinmain.features.settings.impl.BooleanSetting @@ -71,7 +71,7 @@ object InvincibilityTimer : Module( } @SubscribeEvent - fun onServerTick(event: RealServerTick) { + fun onServerTick(event: ServerTickEvent) { invincibilityTime.time-- } diff --git a/src/main/kotlin/me/odinmain/features/impl/skyblock/PetKeybinds.kt b/src/main/kotlin/me/odinmain/features/impl/skyblock/PetKeybinds.kt index b5377f7c0..331bd3eb7 100644 --- a/src/main/kotlin/me/odinmain/features/impl/skyblock/PetKeybinds.kt +++ b/src/main/kotlin/me/odinmain/features/impl/skyblock/PetKeybinds.kt @@ -12,6 +12,7 @@ import me.odinmain.utils.skyblock.getItemIndexInContainerChestByUUID import me.odinmain.utils.skyblock.modMessage import net.minecraft.client.gui.inventory.GuiChest import net.minecraft.inventory.ContainerChest +import net.minecraftforge.client.event.GuiScreenEvent import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import org.lwjgl.input.Keyboard @@ -43,7 +44,7 @@ object PetKeybinds : Module( val petList: MutableList by ListSetting("List", mutableListOf()) @SubscribeEvent - fun checkKeybinds(event: GuiEvent.KeyPress) { + fun checkKeybinds(event: GuiScreenEvent.KeyboardInputEvent.Pre) { val chest = (event.gui as? GuiChest)?.inventorySlots ?: return if (chest !is ContainerChest) return diff --git a/src/main/kotlin/me/odinmain/features/impl/skyblock/Splits.kt b/src/main/kotlin/me/odinmain/features/impl/skyblock/Splits.kt index 09ed897b2..5b64a01d0 100644 --- a/src/main/kotlin/me/odinmain/features/impl/skyblock/Splits.kt +++ b/src/main/kotlin/me/odinmain/features/impl/skyblock/Splits.kt @@ -23,7 +23,7 @@ object Splits : Module( val (times, current) = getAndUpdateSplitsTimes(currentSplits) if (currentSplits.splits.isEmpty()) return@HudSetting 0f to 0f - val x = getMCTextWidth("Professor: 00m 00s") + val x = getMCTextWidth("Professor: 0m 00s") currentSplits.splits.dropLast(1).forEachIndexed { index, split -> val time = formatTime(if (index >= times.size) 0 else times[index], numbersAfterDecimal) mcText(split.name, 1f, 9f + index * getMCTextHeight(), 1f, Color.WHITE, shadow = true, center = false) diff --git a/src/main/kotlin/me/odinmain/features/impl/skyblock/WardrobeKeybinds.kt b/src/main/kotlin/me/odinmain/features/impl/skyblock/WardrobeKeybinds.kt index d0a6ca992..1289d5638 100644 --- a/src/main/kotlin/me/odinmain/features/impl/skyblock/WardrobeKeybinds.kt +++ b/src/main/kotlin/me/odinmain/features/impl/skyblock/WardrobeKeybinds.kt @@ -11,6 +11,7 @@ import me.odinmain.utils.skyblock.getItemIndexInContainerChest import me.odinmain.utils.skyblock.modMessage import net.minecraft.client.gui.inventory.GuiChest import net.minecraft.inventory.ContainerChest +import net.minecraftforge.client.event.GuiScreenEvent import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import org.lwjgl.input.Keyboard @@ -22,7 +23,7 @@ object WardrobeKeybinds : Module( private val unequipKeybind by KeybindSetting("Unequip Keybind", Keyboard.KEY_NONE, "Unequips the current armor.") private val nextPageKeybind by KeybindSetting("Next Page Keybind", Keyboard.KEY_NONE, "Goes to the next page.") private val previousPageKeybind by KeybindSetting("Previous Page Keybind", Keyboard.KEY_NONE, "Goes to the previous page.") - private val delay by NumberSetting("Delay", 0L, 0L, 10000L, 10L, description = "The delay between each click.", unit = "ms") + private val delay by NumberSetting("Delay", 300L, 0L, 10000L, 10L, description = "The delay between each click.", unit = "ms") private val disallowUnequippingEquipped by BooleanSetting("Disable Unequip", false, description = "Prevents unequipping equipped armor.") private val advanced by DropdownSetting("Show Settings", false) @@ -37,15 +38,16 @@ object WardrobeKeybinds : Module( private val wardrobe9 by KeybindSetting("Wardrobe 9", Keyboard.KEY_9, "Wardrobe 9").withDependency { advanced } private val wardrobes = arrayOf(wardrobe1, wardrobe2, wardrobe3, wardrobe4, wardrobe5, wardrobe6, wardrobe7, wardrobe8, wardrobe9) + private val wardrobeRegex = Regex("Wardrobe \\((\\d)/(\\d)\\)") private val clickCoolDown = Clock(delay) @SubscribeEvent - fun onGuiKeyPress(event: GuiEvent.KeyPress) { - if (event.keyCode !in listOf(unequipKeybind.key, nextPageKeybind.key, previousPageKeybind.key) && wardrobes.none { it.key == event.keyCode }) return + fun onGuiKeyPress(event: GuiScreenEvent.KeyboardInputEvent.Pre) { + if (!unequipKeybind.isDown() || !nextPageKeybind.isDown() || !previousPageKeybind.isDown() || wardrobes.none { it.isDown() }) return val chest = (event.gui as? GuiChest)?.inventorySlots ?: return if (chest !is ContainerChest) return - val (current, total) = Regex("Wardrobe \\((\\d)/(\\d)\\)").find(chest.name)?.destructured ?: return + val (current, total) = wardrobeRegex.find(chest.name)?.destructured ?: return val equippedIndex = getItemIndexInContainerChest(chest, "equipped", 36..44, true) val index = when { diff --git a/src/main/kotlin/me/odinmain/utils/ServerUtils.kt b/src/main/kotlin/me/odinmain/utils/ServerUtils.kt index 5507d29d5..6b233919c 100644 --- a/src/main/kotlin/me/odinmain/utils/ServerUtils.kt +++ b/src/main/kotlin/me/odinmain/utils/ServerUtils.kt @@ -1,7 +1,7 @@ package me.odinmain.utils import me.odinmain.OdinMain.mc -import me.odinmain.events.impl.PacketReceivedEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.utils.clock.Executor import me.odinmain.utils.clock.Executor.Companion.register import net.minecraft.entity.Entity @@ -16,6 +16,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent object ServerUtils { private val packets = ArrayList>() + @JvmStatic fun handleSendPacket(packet: Packet<*>): Boolean { return packets.remove(packet) } @@ -44,7 +45,7 @@ object ServerUtils { } @SubscribeEvent - fun onPacket(event: PacketReceivedEvent) { + fun onPacket(event: PacketEvent.Receive) { when (event.packet) { is S37PacketStatistics -> averagePing = (System.nanoTime() - pingStartTime) / 1e6 diff --git a/src/main/kotlin/me/odinmain/utils/render/RenderUtils.kt b/src/main/kotlin/me/odinmain/utils/render/RenderUtils.kt index 064ca322e..37300da6b 100644 --- a/src/main/kotlin/me/odinmain/utils/render/RenderUtils.kt +++ b/src/main/kotlin/me/odinmain/utils/render/RenderUtils.kt @@ -25,10 +25,7 @@ import org.lwjgl.opengl.GL11 import org.lwjgl.opengl.GL13 import org.lwjgl.util.glu.Cylinder import java.awt.image.BufferedImage -import kotlin.math.cos -import kotlin.math.floor -import kotlin.math.roundToInt -import kotlin.math.sin +import kotlin.math.* object RenderUtils { diff --git a/src/main/kotlin/me/odinmain/utils/skyblock/KuudraUtils.kt b/src/main/kotlin/me/odinmain/utils/skyblock/KuudraUtils.kt index 5d283758d..f3e9e215c 100644 --- a/src/main/kotlin/me/odinmain/utils/skyblock/KuudraUtils.kt +++ b/src/main/kotlin/me/odinmain/utils/skyblock/KuudraUtils.kt @@ -2,7 +2,7 @@ package me.odinmain.utils.skyblock import me.odinmain.OdinMain.mc import me.odinmain.events.impl.ChatPacketEvent -import me.odinmain.events.impl.PacketReceivedEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.utils.* import me.odinmain.utils.clock.Executor import me.odinmain.utils.clock.Executor.Companion.register @@ -115,7 +115,7 @@ object KuudraUtils { } @SubscribeEvent - fun handleTabListPacket(event: PacketReceivedEvent) { + fun handleTabListPacket(event: PacketEvent.Receive) { if (event.packet !is S38PacketPlayerListItem || !event.packet.action.equalsOneOf(S38PacketPlayerListItem.Action.UPDATE_DISPLAY_NAME, S38PacketPlayerListItem.Action.ADD_PLAYER)) return kuudraTeammates = updateKuudraTeammates(kuudraTeammates, event.packet.entries) } diff --git a/src/main/kotlin/me/odinmain/utils/skyblock/LocationUtils.kt b/src/main/kotlin/me/odinmain/utils/skyblock/LocationUtils.kt index 23ee46996..c46701c8c 100644 --- a/src/main/kotlin/me/odinmain/utils/skyblock/LocationUtils.kt +++ b/src/main/kotlin/me/odinmain/utils/skyblock/LocationUtils.kt @@ -1,8 +1,7 @@ package me.odinmain.utils.skyblock import me.odinmain.OdinMain.mc -import me.odinmain.events.impl.PacketReceivedEvent -import me.odinmain.events.impl.SkyblockJoinIslandEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.features.impl.render.ClickGUIModule import me.odinmain.utils.* import me.odinmain.utils.clock.Executor @@ -35,11 +34,7 @@ object LocationUtils { sidebarLines.find { cleanLine(it).contains("Kuudra's Hollow (") }?.let { kuudraTier = it.substringBefore(")").lastOrNull()?.digitToIntOrNull() ?: 0 } - if (currentArea.isArea(Island.Unknown)) { - val previousArea = currentArea - currentArea = getArea() - if (!currentArea.isArea(Island.Unknown) && previousArea != currentArea) SkyblockJoinIslandEvent(currentArea).postAndCatch() - } + if (currentArea.isArea(Island.Unknown)) currentArea = getArea() if ((DungeonUtils.inDungeons || currentArea.isArea(Island.SinglePlayer)) && currentDungeon == null) currentDungeon = Dungeon(getFloor() ?: return@Executor) @@ -52,7 +47,6 @@ object LocationUtils { isInSkyblock = false currentArea = Island.Unknown kuudraTier = 0 - SkyblockJoinIslandEvent(currentArea).postAndCatch() currentDungeon = null } @@ -77,7 +71,7 @@ object LocationUtils { } @SubscribeEvent - fun onPacket(event: PacketReceivedEvent) { + fun onPacket(event: PacketEvent.Receive) { if (isOnHypixel || event.packet !is S3FPacketCustomPayload || event.packet.channelName != "MC|Brand") return if (event.packet.bufferData?.readStringFromBuffer(Short.MAX_VALUE.toInt())?.contains("hypixel", true) == true) isOnHypixel = true } diff --git a/src/main/kotlin/me/odinmain/utils/skyblock/SkyblockPlayer.kt b/src/main/kotlin/me/odinmain/utils/skyblock/SkyblockPlayer.kt index bfc966129..b6deca1de 100644 --- a/src/main/kotlin/me/odinmain/utils/skyblock/SkyblockPlayer.kt +++ b/src/main/kotlin/me/odinmain/utils/skyblock/SkyblockPlayer.kt @@ -1,7 +1,7 @@ package me.odinmain.utils.skyblock import me.odinmain.OdinMain.mc -import me.odinmain.events.impl.PacketReceivedEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.utils.noControlCodes import net.minecraft.network.play.server.S02PacketChat import net.minecraftforge.fml.common.eventhandler.EventPriority @@ -31,7 +31,7 @@ object SkyblockPlayer { var effectiveHP: Int = 0 @SubscribeEvent(priority = EventPriority.HIGHEST) - fun onPacket(event: PacketReceivedEvent) { + fun onPacket(event: PacketEvent.Receive) { if (event.packet !is S02PacketChat || event.packet.type != 2.toByte()) return val msg = event.packet.chatComponent.unformattedText.noControlCodes // https://regex101.com/r/3IFer3/1 diff --git a/src/main/kotlin/me/odinmain/utils/skyblock/dungeon/Dungeon.kt b/src/main/kotlin/me/odinmain/utils/skyblock/dungeon/Dungeon.kt index 0e3c258b8..cd842add5 100644 --- a/src/main/kotlin/me/odinmain/utils/skyblock/dungeon/Dungeon.kt +++ b/src/main/kotlin/me/odinmain/utils/skyblock/dungeon/Dungeon.kt @@ -4,7 +4,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import me.odinmain.OdinMain.mc import me.odinmain.OdinMain.scope -import me.odinmain.events.impl.PacketReceivedEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.events.impl.RoomEnterEvent import me.odinmain.features.impl.dungeon.LeapMenu import me.odinmain.features.impl.dungeon.LeapMenu.odinSorting @@ -62,7 +62,7 @@ class Dungeon(val floor: Floor) { dungeonStats.knownSecrets = dungeonStats.knownSecrets?.plus(roomSecrets) ?: roomSecrets } - fun onPacket(event: PacketReceivedEvent) { + fun onPacket(event: PacketEvent.Receive) { when (event.packet) { is S38PacketPlayerListItem -> handleTabListPacket(event.packet) is S3EPacketTeams -> handleScoreboardPacket(event.packet) diff --git a/src/main/kotlin/me/odinmain/utils/skyblock/dungeon/DungeonUtils.kt b/src/main/kotlin/me/odinmain/utils/skyblock/dungeon/DungeonUtils.kt index 9a01881ad..59ad9719f 100644 --- a/src/main/kotlin/me/odinmain/utils/skyblock/dungeon/DungeonUtils.kt +++ b/src/main/kotlin/me/odinmain/utils/skyblock/dungeon/DungeonUtils.kt @@ -1,7 +1,7 @@ package me.odinmain.utils.skyblock.dungeon import me.odinmain.OdinMain.mc -import me.odinmain.events.impl.PacketReceivedEvent +import me.odinmain.events.impl.PacketEvent import me.odinmain.events.impl.RoomEnterEvent import me.odinmain.features.impl.dungeon.MapInfo.togglePaul import me.odinmain.utils.* @@ -22,9 +22,7 @@ import net.minecraft.util.Vec3 import net.minecraftforge.event.entity.EntityJoinWorldEvent import net.minecraftforge.event.world.WorldEvent import net.minecraftforge.fml.common.eventhandler.SubscribeEvent -import kotlin.math.ceil -import kotlin.math.floor -import kotlin.math.roundToLong +import kotlin.math.* object DungeonUtils { @@ -182,7 +180,7 @@ object DungeonUtils { } @SubscribeEvent - fun onPacket(event: PacketReceivedEvent) { + fun onPacket(event: PacketEvent.Receive) { if (inDungeons) currentDungeon?.onPacket(event) }