diff --git a/src/main/java/keystrokesmod/Raven.java b/src/main/java/keystrokesmod/Raven.java index 8c813c5..3e09146 100644 --- a/src/main/java/keystrokesmod/Raven.java +++ b/src/main/java/keystrokesmod/Raven.java @@ -47,6 +47,7 @@ public class Raven { public static Profile currentProfile; public static PacketsHandler packetsHandler; private static boolean firstLoad; + public static KnockBackHelper knockBackHelper; public Raven() { moduleManager = new ModuleManager(); @@ -65,6 +66,7 @@ public class Raven { MinecraftForge.EVENT_BUS.register(new Ping()); MinecraftForge.EVENT_BUS.register(packetsHandler = new PacketsHandler()); MinecraftForge.EVENT_BUS.register(new ModuleUtils(this.mc)); + MinecraftForge.EVENT_BUS.register(knockBackHelper = new KnockBackHelper()); Reflection.getFields(); moduleManager.register(); scriptManager = new ScriptManager(); diff --git a/src/main/java/keystrokesmod/event/NoEventPacketEvent.java b/src/main/java/keystrokesmod/event/NoEventPacketEvent.java index 0f37de0..800487d 100644 --- a/src/main/java/keystrokesmod/event/NoEventPacketEvent.java +++ b/src/main/java/keystrokesmod/event/NoEventPacketEvent.java @@ -1,8 +1,10 @@ package keystrokesmod.event; import net.minecraft.network.Packet; +import net.minecraftforge.fml.common.eventhandler.Cancelable; import net.minecraftforge.fml.common.eventhandler.Event; +@Cancelable public class NoEventPacketEvent extends Event { private Packet packet; diff --git a/src/main/java/keystrokesmod/event/PreEntityVelocityEvent.java b/src/main/java/keystrokesmod/event/PreEntityVelocityEvent.java new file mode 100644 index 0000000..74c8d59 --- /dev/null +++ b/src/main/java/keystrokesmod/event/PreEntityVelocityEvent.java @@ -0,0 +1,14 @@ +package keystrokesmod.event; + +import net.minecraft.network.play.server.S12PacketEntityVelocity; +import net.minecraftforge.fml.common.eventhandler.Cancelable; +import net.minecraftforge.fml.common.eventhandler.Event; + +@Cancelable +public class PreEntityVelocityEvent extends Event { + public S12PacketEntityVelocity packet; + + public PreEntityVelocityEvent(S12PacketEntityVelocity packet) { + this.packet = packet; + } +} \ No newline at end of file diff --git a/src/main/java/keystrokesmod/event/PreExplosionPacketEvent.java b/src/main/java/keystrokesmod/event/PreExplosionPacketEvent.java new file mode 100644 index 0000000..32febe6 --- /dev/null +++ b/src/main/java/keystrokesmod/event/PreExplosionPacketEvent.java @@ -0,0 +1,15 @@ +package keystrokesmod.event; + +import net.minecraft.network.play.server.S27PacketExplosion; +import net.minecraftforge.fml.common.eventhandler.Cancelable; +import net.minecraftforge.fml.common.eventhandler.Event; + +@Cancelable +public class PreExplosionPacketEvent extends Event { + public S27PacketExplosion packet; + + public PreExplosionPacketEvent(S27PacketExplosion packet) { + this.packet = packet; + } + +} \ No newline at end of file diff --git a/src/main/java/keystrokesmod/event/ReceiveAllPacketsEvent.java b/src/main/java/keystrokesmod/event/ReceiveAllPacketsEvent.java new file mode 100644 index 0000000..2178eec --- /dev/null +++ b/src/main/java/keystrokesmod/event/ReceiveAllPacketsEvent.java @@ -0,0 +1,18 @@ +package keystrokesmod.event; + +import net.minecraft.network.Packet; +import net.minecraftforge.fml.common.eventhandler.Cancelable; +import net.minecraftforge.fml.common.eventhandler.Event; + +@Cancelable +public class ReceiveAllPacketsEvent extends Event { + private Packet packet; + + public ReceiveAllPacketsEvent(Packet packet) { + this.packet = packet; + } + + public Packet getPacket() { + return packet; + } +} diff --git a/src/main/java/keystrokesmod/event/RunGameLoopEvent.java b/src/main/java/keystrokesmod/event/RunGameLoopEvent.java new file mode 100644 index 0000000..e47f82c --- /dev/null +++ b/src/main/java/keystrokesmod/event/RunGameLoopEvent.java @@ -0,0 +1,6 @@ +package keystrokesmod.event; + +import net.minecraftforge.fml.common.eventhandler.Event; + +public class RunGameLoopEvent extends Event { +} \ No newline at end of file diff --git a/src/main/java/keystrokesmod/event/SendAllPacketsEvent.java b/src/main/java/keystrokesmod/event/SendAllPacketsEvent.java new file mode 100644 index 0000000..1c97a69 --- /dev/null +++ b/src/main/java/keystrokesmod/event/SendAllPacketsEvent.java @@ -0,0 +1,18 @@ +package keystrokesmod.event; + +import net.minecraft.network.Packet; +import net.minecraftforge.fml.common.eventhandler.Cancelable; +import net.minecraftforge.fml.common.eventhandler.Event; + +@Cancelable +public class SendAllPacketsEvent extends Event { + private Packet packet; + + public SendAllPacketsEvent(Packet packet) { + this.packet = packet; + } + + public Packet getPacket() { + return packet; + } +} diff --git a/src/main/java/keystrokesmod/mixin/impl/accessor/IAccessorMinecraft.java b/src/main/java/keystrokesmod/mixin/impl/accessor/IAccessorMinecraft.java index 7d2d58a..b6e1f85 100644 --- a/src/main/java/keystrokesmod/mixin/impl/accessor/IAccessorMinecraft.java +++ b/src/main/java/keystrokesmod/mixin/impl/accessor/IAccessorMinecraft.java @@ -1,6 +1,7 @@ package keystrokesmod.mixin.impl.accessor; import net.minecraft.client.Minecraft; +import net.minecraft.network.NetworkManager; import net.minecraft.util.Timer; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -14,6 +15,9 @@ public interface IAccessorMinecraft { @Accessor("timer") Timer getTimer(); + @Accessor("myNetworkManager") + NetworkManager getMyNetworkManager(); + @Accessor("rightClickDelayTimer") int getRightClickDelayTimer(); diff --git a/src/main/java/keystrokesmod/mixin/impl/accessor/IAccessorNetworkManager.java b/src/main/java/keystrokesmod/mixin/impl/accessor/IAccessorNetworkManager.java new file mode 100644 index 0000000..49a7648 --- /dev/null +++ b/src/main/java/keystrokesmod/mixin/impl/accessor/IAccessorNetworkManager.java @@ -0,0 +1,12 @@ +package keystrokesmod.mixin.impl.accessor; + +import net.minecraft.network.INetHandler; +import net.minecraft.network.NetworkManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(NetworkManager.class) +public interface IAccessorNetworkManager { + @Accessor("packetListener") + INetHandler getPacketListener(); +} \ No newline at end of file diff --git a/src/main/java/keystrokesmod/mixin/impl/client/MixinMinecraft.java b/src/main/java/keystrokesmod/mixin/impl/client/MixinMinecraft.java index 9be8fba..3ff8de7 100644 --- a/src/main/java/keystrokesmod/mixin/impl/client/MixinMinecraft.java +++ b/src/main/java/keystrokesmod/mixin/impl/client/MixinMinecraft.java @@ -1,12 +1,10 @@ package keystrokesmod.mixin.impl.client; +import keystrokesmod.event.*; +import net.minecraftforge.fml.common.eventhandler.Cancelable; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import org.objectweb.asm.Opcodes; -import keystrokesmod.event.GuiUpdateEvent; -import keystrokesmod.event.PreInputEvent; -import keystrokesmod.event.PreSlotScrollEvent; -import keystrokesmod.event.SlotUpdateEvent; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.InventoryPlayer; @@ -58,4 +56,9 @@ public class MixinMinecraft { } inventoryPlayer.currentItem = slot; } + + @Inject(method = "runGameLoop", at= @At("HEAD")) + public void onRunGameLoop(CallbackInfo ci) { + MinecraftForge.EVENT_BUS.post(new RunGameLoopEvent()); + } } \ No newline at end of file diff --git a/src/main/java/keystrokesmod/mixin/impl/network/MixinNetHandlerPlayClient.java b/src/main/java/keystrokesmod/mixin/impl/network/MixinNetHandlerPlayClient.java index 0f23637..0fa924a 100644 --- a/src/main/java/keystrokesmod/mixin/impl/network/MixinNetHandlerPlayClient.java +++ b/src/main/java/keystrokesmod/mixin/impl/network/MixinNetHandlerPlayClient.java @@ -1,8 +1,13 @@ package keystrokesmod.mixin.impl.network; +import keystrokesmod.event.PreEntityVelocityEvent; +import keystrokesmod.event.PreExplosionPacketEvent; import keystrokesmod.module.ModuleManager; import net.minecraft.client.network.NetHandlerPlayClient; import net.minecraft.network.play.server.S08PacketPlayerPosLook; +import net.minecraft.network.play.server.S12PacketEntityVelocity; +import net.minecraft.network.play.server.S27PacketExplosion; +import net.minecraftforge.common.MinecraftForge; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -20,4 +25,22 @@ public class MixinNetHandlerPlayClient { public void handlePlayerPosLook(S08PacketPlayerPosLook packetIn, CallbackInfo ci) { ModuleManager.noRotate.handlePlayerPosLook(packetIn); } + + @Inject(method = "handleEntityVelocity", at = @At("HEAD"), cancellable = true) + public void handleEntityVelocityInjection(S12PacketEntityVelocity packet, CallbackInfo ci) { + PreEntityVelocityEvent preEntityVelocityEvent = new PreEntityVelocityEvent(packet); + MinecraftForge.EVENT_BUS.post(preEntityVelocityEvent); + if (preEntityVelocityEvent.isCanceled()) { + ci.cancel(); + } + } + + @Inject(method = "handleExplosion", at = @At("HEAD"), cancellable = true) + public void handleExplosionInjection(S27PacketExplosion packet, CallbackInfo ci) { + PreExplosionPacketEvent event = new PreExplosionPacketEvent(packet); + MinecraftForge.EVENT_BUS.post(event); + if (event.isCanceled()) { + ci.cancel(); + } + } } \ No newline at end of file diff --git a/src/main/java/keystrokesmod/mixin/impl/network/MixinNetworkManager.java b/src/main/java/keystrokesmod/mixin/impl/network/MixinNetworkManager.java index 44136a5..f3b157f 100644 --- a/src/main/java/keystrokesmod/mixin/impl/network/MixinNetworkManager.java +++ b/src/main/java/keystrokesmod/mixin/impl/network/MixinNetworkManager.java @@ -1,9 +1,7 @@ package keystrokesmod.mixin.impl.network; import io.netty.channel.ChannelHandlerContext; -import keystrokesmod.event.NoEventPacketEvent; -import keystrokesmod.event.ReceivePacketEvent; -import keystrokesmod.event.SendPacketEvent; +import keystrokesmod.event.*; import keystrokesmod.utility.PacketUtils; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; @@ -16,6 +14,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public class MixinNetworkManager { @Inject(method = "sendPacket(Lnet/minecraft/network/Packet;)V", at = @At("HEAD"), cancellable = true) public void sendPacket(Packet p_sendPacket_1_, CallbackInfo ci) { + SendAllPacketsEvent sendAllPacketsEvent = new SendAllPacketsEvent(p_sendPacket_1_); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(sendAllPacketsEvent); + if (sendAllPacketsEvent.isCanceled()) { + ci.cancel(); + } if (PacketUtils.skipSendEvent.contains(p_sendPacket_1_)) { PacketUtils.skipSendEvent.remove(p_sendPacket_1_); net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new NoEventPacketEvent(p_sendPacket_1_)); @@ -32,6 +35,11 @@ public class MixinNetworkManager { @Inject(method = "channelRead0(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/Packet;)V", at = @At("HEAD"), cancellable = true) public void receivePacket(ChannelHandlerContext p_channelRead0_1_, Packet p_channelRead0_2_, CallbackInfo ci) { + ReceiveAllPacketsEvent receiveAllPacketsEvent = new ReceiveAllPacketsEvent(p_channelRead0_2_); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(receiveAllPacketsEvent); + if (receiveAllPacketsEvent.isCanceled()) { + ci.cancel(); + } if (PacketUtils.skipReceiveEvent.contains(p_channelRead0_2_)) { PacketUtils.skipReceiveEvent.remove(p_channelRead0_2_); return; diff --git a/src/main/java/keystrokesmod/module/impl/combat/KillAura.java b/src/main/java/keystrokesmod/module/impl/combat/KillAura.java index d89dd99..d4ed5ff 100644 --- a/src/main/java/keystrokesmod/module/impl/combat/KillAura.java +++ b/src/main/java/keystrokesmod/module/impl/combat/KillAura.java @@ -4,6 +4,7 @@ import keystrokesmod.Raven; import keystrokesmod.clickgui.ClickGui; import keystrokesmod.event.*; import keystrokesmod.mixin.impl.accessor.IAccessorMinecraft; +import keystrokesmod.mixin.impl.accessor.IAccessorNetworkManager; import keystrokesmod.module.Module; import keystrokesmod.module.ModuleManager; import keystrokesmod.module.impl.client.Settings; @@ -29,6 +30,10 @@ import net.minecraft.network.Packet; import net.minecraft.network.handshake.client.C00Handshake; import net.minecraft.network.login.client.C00PacketLoginStart; import net.minecraft.network.play.client.*; +import net.minecraft.network.play.server.S12PacketEntityVelocity; +import net.minecraft.network.play.server.S14PacketEntity; +import net.minecraft.network.play.server.S19PacketEntityHeadLook; +import net.minecraft.network.play.server.S27PacketExplosion; import net.minecraft.util.*; import net.minecraftforge.client.event.MouseEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent; @@ -71,9 +76,7 @@ public class KillAura extends Module { private ButtonSetting silentSwing; private ButtonSetting weaponOnly; - private String[] autoBlockModes = new String[] { "Manual", "Vanilla", "Partial", "Interact A", "Interact B" }; - private String[] interactAModes = new String[] { "10", "9.5" }; - private String[] interactBModes = new String[] { "10", "9.5" }; + private String[] autoBlockModes = new String[] { "Manual", "Vanilla", "Partial", "Via A", "Via B" }; private String[] rotationModes = new String[] { "Silent", "Lock view", "None" }; private String[] rotateModes = new String[] { "Attacking", "Swinging" }; private String[] sortModes = new String[] { "Distance", "Health", "Hurttime", "Yaw" }; @@ -98,14 +101,14 @@ public class KillAura extends Module { private boolean firstCycle = true; private boolean partialDown; private int partialTicks; - private int firstEdge, firstGyatt; + private int cycleCount2, cycleCount1; private int unBlockDelay; private boolean canBlockServerside; private boolean checkUsing; // blink related private ConcurrentLinkedQueue blinkedPackets = new ConcurrentLinkedQueue<>(); - private AtomicBoolean blinking = new AtomicBoolean(false); + public AtomicBoolean blinking = new AtomicBoolean(false); public boolean lag; public boolean swapped; @@ -133,8 +136,6 @@ public class KillAura extends Module { super("KillAura", category.combat); this.registerSetting(aps = new SliderSetting("APS", 16.0, 1.0, 20.0, 0.5)); this.registerSetting(autoBlockMode = new SliderSetting("Autoblock", 0, autoBlockModes)); - this.registerSetting(interactA = new SliderSetting("Interact mode", " aps", 0, interactAModes)); - this.registerSetting(interactB = new SliderSetting("Interact mode", " aps", 0, interactBModes)); this.registerSetting(fov = new SliderSetting("FOV", 360.0, 30.0, 360.0, 4.0)); this.registerSetting(attackRange = new SliderSetting("Range (attack)", 3.0, 3.0, 6.0, 0.05)); this.registerSetting(swingRange = new SliderSetting("Range (swing)", 3.3, 3.0, 8.0, 0.05)); @@ -159,11 +160,6 @@ public class KillAura extends Module { this.registerSetting(weaponOnly = new ButtonSetting("Weapon only", false)); } - public void guiUpdate() { - this.interactA.setVisible(autoBlockMode.getInput() == 3, this); - this.interactB.setVisible(autoBlockMode.getInput() == 4, this); - } - @Override public String getInfo() { if (rotationMode.getInput() == 2) { // None, return FOV if rotation mode is none @@ -187,7 +183,7 @@ public class KillAura extends Module { resetBlinkState(true); } blinking.set(false); - interactTicks = firstEdge = 0; + interactTicks = cycleCount1 = cycleCount2 = 0; setTarget(null); if (rotated || reset) { resetYaw(); @@ -211,10 +207,10 @@ public class KillAura extends Module { } if (target == null || !manualBlock() && manualBlock.isToggled()) { if (ModuleUtils.swapTick == 0 && !ModuleUtils.isBlocked) { - interactTicks = firstEdge = 1; + interactTicks = cycleCount2 = 1; } else { - interactTicks = firstEdge = 0; + interactTicks = cycleCount2 = 0; } } if (target != null && Utils.holdingSword()) { @@ -425,7 +421,7 @@ public class KillAura extends Module { } } } - if (blinking.get() && !e.isCanceled()) { // blink + if (blinking.get() && !e.isCanceled()) { if (packet instanceof C00PacketLoginStart || packet instanceof C00Handshake) { return; } @@ -921,178 +917,101 @@ public class KillAura extends Module { break; } break; - case 3: // interact a - switch ((int) interactA.getInput()) { - case 0: - getInteractA0(distance, swung); - break; + case 3: // via a + if (interactTicks >= 3) { + interactTicks = 0; + } + interactTicks++; + if (firstCycle) { + switch (interactTicks) { + case 1: + blinking.set(true); + ++cycleCount1; + if (cycleCount1 > 2) { + cycleCount1 = 0; + } + if (ModuleUtils.isBlocked) { + if (cycleCount1 <= -1) { + sendUnBlockPacket(); + } + else { + setSwapSlot(); + swapped = true; + } + } + break; + case 2: + if (swapped) { + setCurrentSlot(); + swapped = false; + } + handleInteractAndAttack(distance, true, true, swung); + sendBlockPacket(); + releasePackets(); // release + interactTicks = 0; + ++cycleCount2; + if (cycleCount2 > 5) { + firstCycle = false; + cycleCount2 = 0; + } + break; + } + } + else { + switch (interactTicks) { + case 1: + if (ModuleUtils.isBlocked) { + setSwapSlot(); + swapped = true; + } + break; + case 2: + if (swapped) { + setCurrentSlot(); + swapped = false; + } + handleInteractAndAttack(distance, true, true, swung); + sendBlockPacket(); + releasePackets(); // release + break; + case 3: + firstCycle = true; + interactTicks = 0; + break; + } + } + break; + case 4: // via b + interactTicks++; + switch (interactTicks) { case 1: - getInteractA1(distance, swung); + blinking.set(true); + if (ModuleUtils.isBlocked) { + setSwapSlot(); + swapped = true; + } break; - } - break; - case 4: // interact b - switch ((int) interactB.getInput()) { - case 0: - getInteractB0(distance, swung); + case 2: + if (swapped) { + setCurrentSlot(); + swapped = false; + } + handleInteractAndAttack(distance, true, true, swung); + sendBlockPacket(); + if (++cycleCount2 > 1) { + interactTicks = 0; + } + else { + releasePackets(); // release + } break; - case 1: - getInteractB1(distance, swung); - break; - } - break; - } - } - - private void getInteractA0(double distance, boolean swung) { - if (interactTicks >= 2) { - interactTicks = 0; - } - interactTicks++; - switch (interactTicks) { - case 1: - blinking.set(true); - if (ModuleUtils.isBlocked) { - sendUnBlockPacket(); - } - break; - case 2: - handleInteractAndAttack(distance, true, true, swung); - sendBlockPacket(); - releasePackets(); // release - break; - } - } - - private void getInteractA1(double distance, boolean swung) { - if (interactTicks >= 3) { - interactTicks = 0; - } - interactTicks++; - if (firstCycle) { - switch (interactTicks) { - case 1: - blinking.set(true); - if (ModuleUtils.isBlocked) { - sendUnBlockPacket(); - } - break; - case 2: - handleInteractAndAttack(distance, true, true, swung); - sendBlockPacket(); - releasePackets(); // release - interactTicks = 0; - firstCycle = false; - break; - } - } - else { - switch (interactTicks) { - case 1: - blinking.set(true); - if (ModuleUtils.isBlocked) { - setSwapSlot(); - swapped = true; - } - break; - case 2: - if (swapped) { - setCurrentSlot(); - swapped = false; - } - handleInteractAndAttack(distance, true, true, swung); - sendBlockPacket(); - releasePackets(); // release - firstCycle = true; - interactTicks = 0; - break; - } - } - } - - private void getInteractB0(double distance, boolean swung) { - if (interactTicks >= 2) { - interactTicks = 0; - } - interactTicks++; - switch (interactTicks) { - case 1: - blinking.set(true); - if (ModuleUtils.isBlocked) { - setSwapSlot(); - swapped = true; - } - break; - case 2: - if (swapped) { - setCurrentSlot(); - swapped = false; - } - handleInteractAndAttack(distance, true, true, swung); - sendBlockPacket(); - releasePackets(); // release - break; - } - } - - private void getInteractB1(double distance, boolean swung) { - if (interactTicks >= 3) { - interactTicks = 0; - } - interactTicks++; - if (firstCycle) { - switch (interactTicks) { - case 1: - blinking.set(true); - if (ModuleUtils.isBlocked) { - setSwapSlot(); - swapped = true; - } - break; - case 2: - if (swapped) { - setCurrentSlot(); - swapped = false; - } - handleInteractAndAttack(distance, true, true, swung); - sendBlockPacket(); - releasePackets(); // release - interactTicks = 0; - ++firstEdge; - if (firstEdge > 5) { + case 3: + releasePackets(); // release + interactTicks = 0; firstCycle = false; - firstEdge = 0; - } - break; - } - } - - - - - else { - switch (interactTicks) { - case 1: - blinking.set(true); - if (ModuleUtils.isBlocked) { - setSwapSlot(); - swapped = true; - } - break; - case 2: - if (swapped) { - setCurrentSlot(); - swapped = false; - } - handleInteractAndAttack(distance, true, true, swung); - sendBlockPacket(); - releasePackets(); // release - break; - case 3: - firstCycle = true; - interactTicks = 0; - break; - } + break; + } + break; } } @@ -1367,7 +1286,6 @@ public class KillAura extends Module { for (Packet packet : blinkedPackets) { Raven.packetsHandler.handlePacket(packet); PacketUtils.sendPacketNoEvent(packet); - //Utils.print("blink packets"); } } } diff --git a/src/main/java/keystrokesmod/module/impl/combat/Velocity.java b/src/main/java/keystrokesmod/module/impl/combat/Velocity.java index be5e3fa..177491f 100644 --- a/src/main/java/keystrokesmod/module/impl/combat/Velocity.java +++ b/src/main/java/keystrokesmod/module/impl/combat/Velocity.java @@ -1,24 +1,29 @@ package keystrokesmod.module.impl.combat; +import keystrokesmod.Raven; +import keystrokesmod.event.PreMotionEvent; import keystrokesmod.event.PreUpdateEvent; +import keystrokesmod.event.ReceiveAllPacketsEvent; import keystrokesmod.event.ReceivePacketEvent; -import keystrokesmod.event.SendPacketEvent; import keystrokesmod.module.Module; import keystrokesmod.module.ModuleManager; import keystrokesmod.module.impl.movement.LongJump; import keystrokesmod.module.setting.impl.ButtonSetting; import keystrokesmod.module.setting.impl.KeySetting; import keystrokesmod.module.setting.impl.SliderSetting; +import keystrokesmod.utility.PacketUtils; import keystrokesmod.utility.Utils; import keystrokesmod.utility.ModuleUtils; import net.minecraft.network.Packet; -import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement; import net.minecraft.network.play.server.S12PacketEntityVelocity; import net.minecraft.network.play.server.S27PacketExplosion; +import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import org.lwjgl.input.Keyboard; +import java.util.concurrent.ConcurrentLinkedQueue; + public class Velocity extends Module { public SliderSetting velocityModes; public static SliderSetting vertical, horizontal, reverseHorizontal, explosionsHorizontal, explosionsVertical; @@ -27,7 +32,7 @@ public class Velocity extends Module { private ButtonSetting onlyWhileAttacking; private ButtonSetting onlyWhileTargeting; private ButtonSetting disableS; - private ButtonSetting zzWhileNotTargeting; + private ButtonSetting zzWhileNotTargeting, delayPacket; public ButtonSetting allowSelfFireball; public static ButtonSetting reverseDebug; private KeySetting switchToReverse, switchToPacket; @@ -111,8 +116,8 @@ public class Velocity extends Module { } } - @SubscribeEvent - public void onReceivePacket(ReceivePacketEvent e) { + @SubscribeEvent(priority = EventPriority.LOWEST) + public void onReceivePacketAll(ReceiveAllPacketsEvent e) { if (velocityModes.getInput() >= 1) { if (!Utils.nullCheck() || LongJump.stopVelocity || e.isCanceled() || ModuleManager.bedAura.cancelKnockback() || ModuleManager.tower.cancelKnockback() || velocityModes.getInput() == 2 && ModuleUtils.firstDamage || ModuleManager.bhop.isEnabled() && ModuleManager.bhop.damageBoost.isToggled() && ModuleUtils.firstDamage && (!ModuleManager.bhop.damageBoostRequireKey.isToggled() || ModuleManager.bhop.damageBoostKey.isPressed())) { return; @@ -204,6 +209,9 @@ public class Velocity extends Module { if (onlyWhileAttacking.isToggled() && !ModuleUtils.isAttacking) { return; } + if (dontEditMotion()) { + return; + } if (onlyWhileTargeting.isToggled() && (mc.objectMouseOver == null || mc.objectMouseOver.entityHit == null)) { return; } @@ -231,10 +239,22 @@ public class Velocity extends Module { } private boolean dontEditMotion() { - if (zzWhileNotTargeting.isToggled() && !ModuleManager.killAura.isTargeting) { + if (velocityModes.getInput() == 1 && zzWhileNotTargeting.isToggled() && !ModuleManager.killAura.isTargeting) { return true; } + return false; + } + private boolean blinkModules() { + if (ModuleManager.killAura.isEnabled() && ModuleManager.killAura.blinking.get()) { + return true; + } + if (ModuleManager.blink.isEnabled() && ModuleManager.blink.started) { + return true; + } + if (ModuleManager.antiVoid.isEnabled() && ModuleManager.antiVoid.started) { + return true; + } return false; } diff --git a/src/main/java/keystrokesmod/module/impl/movement/InvMove.java b/src/main/java/keystrokesmod/module/impl/movement/InvMove.java index 230b93c..6392a17 100644 --- a/src/main/java/keystrokesmod/module/impl/movement/InvMove.java +++ b/src/main/java/keystrokesmod/module/impl/movement/InvMove.java @@ -41,20 +41,7 @@ public class InvMove extends Module { } @SubscribeEvent - public void onSendPacketNoEvent(NoEventPacketEvent e) { - if (!Utils.nullCheck()) { - return; - } - if (e.getPacket() instanceof C0EPacketClickWindow) { - if (modes.getInput() == 1) { - stopMoving = true; - ticks = 0; - } - } - } - - @SubscribeEvent - public void onSendPacket(SendPacketEvent e) { + public void onSendPacketAll(SendAllPacketsEvent e) { if (!Utils.nullCheck()) { return; } diff --git a/src/main/java/keystrokesmod/module/impl/movement/LongJump.java b/src/main/java/keystrokesmod/module/impl/movement/LongJump.java index 0f4b3ab..b453786 100644 --- a/src/main/java/keystrokesmod/module/impl/movement/LongJump.java +++ b/src/main/java/keystrokesmod/module/impl/movement/LongJump.java @@ -272,7 +272,7 @@ public class LongJump extends Module { return; } if (ev.phase == TickEvent.Phase.END) { - if (mc.currentScreen != null || !renderFloatProgress.isToggled() || mode.getInput() != 0) { + if (mc.currentScreen != null || !renderFloatProgress.isToggled() || mode.getInput() != 0 || !function) { return; } } @@ -343,12 +343,19 @@ public class LongJump extends Module { } } + @SubscribeEvent + public void onPostPlayerInput(PostPlayerInputEvent e) { + if (!function) { + return; + } + mc.thePlayer.movementInput.jump = false; + } + @SubscribeEvent(priority = EventPriority.LOWEST) // called last in order to apply fix public void onMoveInput(PrePlayerInputEvent e) { if (!function) { return; } - mc.thePlayer.movementInput.jump = false; if (rotateTick > 0 || fireballTime > 0) { if (Utils.isMoving()) e.setForward(1); e.setStrafe(0); @@ -420,6 +427,7 @@ public class LongJump extends Module { boostTicks = -1; resetSlot(); enabled = function = notMoving = stopVelocity = stopModules = swapped = false; + filledWidth = 0; if (!manual.isToggled()) { disable(); } diff --git a/src/main/java/keystrokesmod/module/impl/player/AntiVoid.java b/src/main/java/keystrokesmod/module/impl/player/AntiVoid.java index 43d43ae..ad83cb2 100644 --- a/src/main/java/keystrokesmod/module/impl/player/AntiVoid.java +++ b/src/main/java/keystrokesmod/module/impl/player/AntiVoid.java @@ -2,6 +2,7 @@ package keystrokesmod.module.impl.player; import keystrokesmod.Raven; import keystrokesmod.event.PreUpdateEvent; +import keystrokesmod.event.ReceivePacketEvent; import keystrokesmod.event.SendPacketEvent; import keystrokesmod.module.Module; import keystrokesmod.module.ModuleManager; @@ -18,6 +19,8 @@ import net.minecraft.network.handshake.client.C00Handshake; import net.minecraft.network.login.client.C00PacketLoginStart; import net.minecraft.network.play.client.C02PacketUseEntity; import net.minecraft.network.play.client.C03PacketPlayer; +import net.minecraft.network.play.client.C0FPacketConfirmTransaction; +import net.minecraft.network.play.server.S12PacketEntityVelocity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraftforge.client.event.RenderWorldLastEvent; @@ -65,14 +68,14 @@ public class AntiVoid extends Module { wait = false; return; } - if (!started && (Utils.isReplay() || Utils.isBedwarsPractice() && disablePractice.isToggled())) { + if (!started && (Utils.isReplay() || Utils.spectatorCheck() || Utils.isBedwarsPractice() && disablePractice.isToggled())) { return; } if (packet.getClass().getSimpleName().startsWith("S")) { return; } if (ModuleManager.killAura.isTargeting || ModuleManager.killAura.justUnTargeted) { - return; + //return; } if (wait) { return; @@ -147,11 +150,13 @@ public class AntiVoid extends Module { started = false; } - private boolean dist() { + public boolean dist() { double minMotion = 0.06; - // 1x1 - int dist1 = 2; + int dist2 = 4; + int dist3 = 6; + int dist4 = 8; + // 1x1 if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX, (int) mc.thePlayer.posZ) > dist1) { return true; @@ -199,8 +204,6 @@ public class AntiVoid extends Module { // 2x2 - int dist2 = 5; - if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 2, (int) mc.thePlayer.posZ) > dist2) { if (mc.thePlayer.motionX <= -minMotion) { return true; @@ -264,8 +267,6 @@ public class AntiVoid extends Module { // 3x3 - int dist3 = 9; - if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 3, (int) mc.thePlayer.posZ) > dist3) { if (mc.thePlayer.motionX >= minMotion) { return true; @@ -389,8 +390,6 @@ public class AntiVoid extends Module { // 4x4 - int dist4 = 16; - if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 4, (int) mc.thePlayer.posZ) > dist4) { if (mc.thePlayer.motionX >= minMotion) { return true; diff --git a/src/main/java/keystrokesmod/module/impl/player/Blink.java b/src/main/java/keystrokesmod/module/impl/player/Blink.java index 6b6f8a3..3d313b8 100644 --- a/src/main/java/keystrokesmod/module/impl/player/Blink.java +++ b/src/main/java/keystrokesmod/module/impl/player/Blink.java @@ -2,9 +2,12 @@ package keystrokesmod.module.impl.player; import keystrokesmod.Raven; import keystrokesmod.event.PreUpdateEvent; +import keystrokesmod.event.ReceiveAllPacketsEvent; +import keystrokesmod.event.ReceivePacketEvent; import keystrokesmod.event.SendPacketEvent; import keystrokesmod.module.Module; import keystrokesmod.module.ModuleManager; +import keystrokesmod.module.impl.movement.LongJump; import keystrokesmod.module.impl.render.HUD; import keystrokesmod.module.setting.impl.ButtonSetting; import keystrokesmod.module.setting.impl.DescriptionSetting; @@ -23,6 +26,7 @@ import net.minecraft.network.login.client.C01PacketEncryptionResponse; import net.minecraft.network.play.client.C00PacketKeepAlive; import net.minecraft.network.play.client.C02PacketUseEntity; import net.minecraft.network.play.client.C0FPacketConfirmTransaction; +import net.minecraft.network.play.server.*; import net.minecraft.network.status.client.C00PacketServerQuery; import net.minecraft.network.status.client.C01PacketPing; import net.minecraft.util.AxisAlignedBB; @@ -33,6 +37,7 @@ import net.minecraftforge.fml.common.gameevent.TickEvent; import org.lwjgl.opengl.GL11; import java.awt.*; +import java.util.Objects; import java.util.concurrent.ConcurrentLinkedQueue; import static keystrokesmod.module.impl.render.HUD.theme; @@ -47,7 +52,8 @@ public class Blink extends Module { //final private int color = Theme.getGradient((int) theme.getInput(), 255); private int color = new Color(0, 187, 255, 255).getRGB(); private int blinkTicks; - private boolean started; + public boolean started; + public Blink() { super("Blink", category.player); this.registerSetting(maximumBlinkTicks = new SliderSetting("Max Blink Ticks", "", 0, 0, 40, 1)); diff --git a/src/main/java/keystrokesmod/module/impl/player/Disabler.java b/src/main/java/keystrokesmod/module/impl/player/Disabler.java index 5db6dae..cb5e49d 100644 --- a/src/main/java/keystrokesmod/module/impl/player/Disabler.java +++ b/src/main/java/keystrokesmod/module/impl/player/Disabler.java @@ -6,6 +6,7 @@ import keystrokesmod.module.ModuleManager; import keystrokesmod.module.impl.render.HUD; import keystrokesmod.module.setting.impl.ButtonSetting; import keystrokesmod.module.setting.impl.SliderSetting; +import keystrokesmod.utility.ModuleUtils; import keystrokesmod.utility.RenderUtils; import keystrokesmod.utility.Theme; import keystrokesmod.utility.Utils; @@ -27,7 +28,6 @@ public class Disabler extends Module { int tickCounter = 0; boolean waitingForGround = false; - int airTicks = 0; boolean applyingMotion = false; int stateTickCounter = 0; boolean warningDisplayed = false; @@ -53,7 +53,7 @@ public class Disabler extends Module { public Disabler() { super("Disabler", Module.category.player); - this.registerSetting(disablerTicks = new SliderSetting("Ticks", "", 150, 110, 150, 5)); + this.registerSetting(disablerTicks = new SliderSetting("Ticks", "", 150, 85, 150, 5)); this.registerSetting(activationDelay = new SliderSetting("Activation delay", " seconds", 0, 0, 4, 0.5)); } @@ -71,7 +71,6 @@ public class Disabler extends Module { private void resetState() { shouldRun = true; tickCounter = 0; - airTicks = 0; applyingMotion = false; waitingForGround = true; stateTickCounter = 0; @@ -112,16 +111,15 @@ public class Disabler extends Module { if ((now - lobbyTime) < activationDelayMillis) { return; } - - if (waitingForGround) { + if (!running) { savedYaw = e.getYaw(); savedPitch = e.getPitch(); - if (!running) { - //mc.thePlayer.motionY = 0; - } running = true; + } + e.setRotations(savedYaw, savedPitch); + + if (waitingForGround) { /*if (mc.thePlayer.ticksExisted <= 3) { - mc.thePlayer.motionY = 0.42f; waitingForGround = false; worldJoin = true; } @@ -130,13 +128,10 @@ public class Disabler extends Module { waitingForGround = false; worldJoin = false; } - e.setRotations(savedYaw, savedPitch); return; } - e.setRotations(savedYaw, savedPitch); - airTicks = mc.thePlayer.onGround ? 0 : airTicks + 1; - if (airTicks >= 10 || worldJoin) { + if (ModuleUtils.inAirTicks >= 10 || worldJoin) { if (!applyingMotion) { applyingMotion = true; firstY = mc.thePlayer.posY; @@ -166,9 +161,6 @@ public class Disabler extends Module { if (mc.thePlayer.ticksExisted % 2 == 0) { e.setPosZ(e.getPosZ() + 0.075); - e.setPosX(e.getPosX() + 0.075); - e.setPosY(e.getPosY() + 0.075); - //e.setYaw(e.getYaw() + 8); } tickCounter++; diff --git a/src/main/java/keystrokesmod/module/impl/player/NoFall.java b/src/main/java/keystrokesmod/module/impl/player/NoFall.java index 8caeaec..424a05d 100644 --- a/src/main/java/keystrokesmod/module/impl/player/NoFall.java +++ b/src/main/java/keystrokesmod/module/impl/player/NoFall.java @@ -31,7 +31,7 @@ public class NoFall extends Module { public SliderSetting mode; private SliderSetting minFallDistance; private ButtonSetting disableAdventure; - private ButtonSetting ignoreVoid; + private ButtonSetting ignoreVoid, voidC; private ButtonSetting hideSound; private String[] modes = new String[]{"Spoof", "NoGround", "Packet A", "Packet B", "CTW Packet", "Prediction"}; @@ -47,7 +47,8 @@ public class NoFall extends Module { this.registerSetting(mode = new SliderSetting("Mode", 2, modes)); this.registerSetting(disableAdventure = new ButtonSetting("Disable adventure", false)); this.registerSetting(minFallDistance = new SliderSetting("Minimum fall distance", 3, 0, 10, 0.1)); - this.registerSetting(ignoreVoid = new ButtonSetting("Ignore void", true)); + this.registerSetting(ignoreVoid = new ButtonSetting("Ignore void", false)); + this.registerSetting(voidC = new ButtonSetting("Experimental void check", true)); //this.registerSetting(hideSound = new ButtonSetting("Hide fall damage sound", false)); } @@ -138,10 +139,10 @@ public class NoFall extends Module { Utils.resetTimer(); if (mc.thePlayer.ticksExisted % 2 == 0) { if (mc.thePlayer.motionY < -0.01) { - timerVal = 0.65; + timerVal = 0.64; } if (mc.thePlayer.motionY < -1.0) { - timerVal = 0.54; + timerVal = 0.53; } if (mc.thePlayer.motionY < -1.6) { timerVal = 0.46; @@ -228,6 +229,407 @@ public class NoFall extends Module { if (mc.thePlayer.capabilities.isFlying) { return true; } + if (voidC.isToggled() && Utils.overVoid(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ) && !dist()) { + return true; + } + return false; + } + + + + + + public boolean dist() { + double minMotion = 0.06; + // 1x1 + + int dist1 = 0; + int dist2 = 1; + int dist3 = 2; + int dist4 = 4; + + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX, (int) mc.thePlayer.posZ) > dist1) { + return true; + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 1, (int) mc.thePlayer.posZ) > dist1) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 1, (int) mc.thePlayer.posZ) > dist1) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX, (int) mc.thePlayer.posZ - 1) > dist1) { + if (mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX, (int) mc.thePlayer.posZ + 1) > dist1) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 1, (int) mc.thePlayer.posZ - 1) > dist1) { + if (mc.thePlayer.motionX <= -minMotion && mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 1, (int) mc.thePlayer.posZ + 1) > dist1) { + if (mc.thePlayer.motionX >= minMotion && mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 1, (int) mc.thePlayer.posZ + 1) > dist1) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 1, (int) mc.thePlayer.posZ - 1) > dist1) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + + // 2x2 + + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 2, (int) mc.thePlayer.posZ) > dist2) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 2, (int) mc.thePlayer.posZ) > dist2) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX, (int) mc.thePlayer.posZ - 2) > dist2) { + if (mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX, (int) mc.thePlayer.posZ + 2) > dist2) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 2, (int) mc.thePlayer.posZ - 1) > dist2) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 1, (int) mc.thePlayer.posZ - 2) > dist2) { + if (mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 2, (int) mc.thePlayer.posZ + 1) > dist2) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 1, (int) mc.thePlayer.posZ + 2) > dist2) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 2, (int) mc.thePlayer.posZ - 2) > dist2) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 2, (int) mc.thePlayer.posZ - 2) > dist2) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 2, (int) mc.thePlayer.posZ + 2) > dist2) { + if (mc.thePlayer.motionX >= minMotion && mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 2, (int) mc.thePlayer.posZ - 2) > dist2) { + if (mc.thePlayer.motionX <= -minMotion && mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + + // 3x3 + + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 3, (int) mc.thePlayer.posZ) > dist3) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 3, (int) mc.thePlayer.posZ) > dist3) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX, (int) mc.thePlayer.posZ + 3) > dist3) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX, (int) mc.thePlayer.posZ - 3) > dist3) { + if (mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 3, (int) mc.thePlayer.posZ - 3) > dist3) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 3, (int) mc.thePlayer.posZ + 3) > dist3) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 3, (int) mc.thePlayer.posZ + 3) > dist3) { + if (mc.thePlayer.motionX >= minMotion && mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 3, (int) mc.thePlayer.posZ - 3) > dist3) { + if (mc.thePlayer.motionX <= -minMotion && mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 3, (int) mc.thePlayer.posZ + 1) > dist3) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 3, (int) mc.thePlayer.posZ + 2) > dist3) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 1, (int) mc.thePlayer.posZ + 3) > dist3) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 2, (int) mc.thePlayer.posZ + 3) > dist3) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 3, (int) mc.thePlayer.posZ - 1) > dist3) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 3, (int) mc.thePlayer.posZ - 2) > dist3) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 1, (int) mc.thePlayer.posZ - 3) > dist3) { + if (mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 2, (int) mc.thePlayer.posZ - 3) > dist3) { + if (mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 3, (int) mc.thePlayer.posZ - 1) > dist3) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 3, (int) mc.thePlayer.posZ - 2) > dist3) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 1, (int) mc.thePlayer.posZ - 3) > dist3) { + if (mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 2, (int) mc.thePlayer.posZ - 3) > dist3) { + if (mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 3, (int) mc.thePlayer.posZ + 1) > dist3) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 3, (int) mc.thePlayer.posZ + 2) > dist3) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 1, (int) mc.thePlayer.posZ + 3) > dist3) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 2, (int) mc.thePlayer.posZ + 3) > dist3) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + + // 4x4 + + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 4, (int) mc.thePlayer.posZ) > dist4) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 4, (int) mc.thePlayer.posZ) > dist4) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX, (int) mc.thePlayer.posZ + 4) > dist4) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX, (int) mc.thePlayer.posZ - 4) > dist4) { + if (mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 4, (int) mc.thePlayer.posZ + 4) > dist4) { + if (mc.thePlayer.motionX >= minMotion && mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 4, (int) mc.thePlayer.posZ - 4) > dist4) { + if (mc.thePlayer.motionX <= -minMotion && mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 4, (int) mc.thePlayer.posZ + 4) > dist4) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 4, (int) mc.thePlayer.posZ - 4) > dist4) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 4, (int) mc.thePlayer.posZ + 3) > dist4) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 4, (int) mc.thePlayer.posZ + 2) > dist4) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 4, (int) mc.thePlayer.posZ + 1) > dist4) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 3, (int) mc.thePlayer.posZ + 4) > dist4) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 2, (int) mc.thePlayer.posZ + 4) > dist4) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 1, (int) mc.thePlayer.posZ + 4) > dist4) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 4, (int) mc.thePlayer.posZ - 3) > dist4) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 4, (int) mc.thePlayer.posZ - 2) > dist4) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX + 4, (int) mc.thePlayer.posZ - 1) > dist4) { + if (mc.thePlayer.motionX >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 3, (int) mc.thePlayer.posZ + 4) > dist4) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 2, (int) mc.thePlayer.posZ + 4) > dist4) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 1, (int) mc.thePlayer.posZ + 4) > dist4) { + if (mc.thePlayer.motionZ >= minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 4, (int) mc.thePlayer.posZ + 3) > dist4) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 4, (int) mc.thePlayer.posZ + 2) > dist4) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 4, (int) mc.thePlayer.posZ + 1) > dist4) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 4, (int) mc.thePlayer.posZ - 3) > dist4) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 4, (int) mc.thePlayer.posZ - 2) > dist4) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 4, (int) mc.thePlayer.posZ - 1) > dist4) { + if (mc.thePlayer.motionX <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 3, (int) mc.thePlayer.posZ - 4) > dist4) { + if (mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 2, (int) mc.thePlayer.posZ - 4) > dist4) { + if (mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + if (Utils.distanceToGround(mc.thePlayer, (int) mc.thePlayer.posX - 1, (int) mc.thePlayer.posZ - 4) > dist4) { + if (mc.thePlayer.motionZ <= -minMotion) { + return true; + } + } + + + + + return false; } diff --git a/src/main/java/keystrokesmod/module/impl/player/Scaffold.java b/src/main/java/keystrokesmod/module/impl/player/Scaffold.java index 41cad43..89a2760 100644 --- a/src/main/java/keystrokesmod/module/impl/player/Scaffold.java +++ b/src/main/java/keystrokesmod/module/impl/player/Scaffold.java @@ -324,30 +324,30 @@ public class Scaffold extends Module { if (quad <= 5 || quad >= 85) { yawAngle = 125.625F; - minOffset = 10; + minOffset = 9; } if (quad > 5 && quad <= 15 || quad >= 75 && quad < 85) { yawAngle = 127.625F; - minOffset = 10; + minOffset = 8; } if (quad > 15 && quad <= 25 || quad >= 65 && quad < 75) { yawAngle = 129.625F; - minOffset = 8; + minOffset = 6; } if (quad > 25 && quad <= 32 || quad >= 58 && quad < 65) { yawAngle = 132.625F; - minOffset = 8; + minOffset = 6; } if (quad > 32 && quad <= 38 || quad >= 52 && quad < 58) { yawAngle = 134.625F; - minOffset = 7; + minOffset = 6; } if (quad > 38 && quad <= 42 || quad >= 48 && quad < 52) { yawAngle = 136.625F; - minOffset = 6; + minOffset = 5; } if (quad > 42 && quad <= 45 || quad >= 45 && quad < 48) { - yawAngle = 140.125F; + yawAngle = 140.175F; minOffset = 5; } @@ -643,7 +643,7 @@ public class Scaffold extends Module { public void onPreUpdate(PreUpdateEvent e) { stopUpdate = stopUpdate2 = false; if (!isEnabled) { - return; + stopUpdate2 = true; } if (LongJump.function) { startYPos = -1; diff --git a/src/main/java/keystrokesmod/utility/KnockBackHelper.java b/src/main/java/keystrokesmod/utility/KnockBackHelper.java new file mode 100644 index 0000000..277e880 --- /dev/null +++ b/src/main/java/keystrokesmod/utility/KnockBackHelper.java @@ -0,0 +1,77 @@ +package keystrokesmod.utility; + +import keystrokesmod.event.ReceivePacketEvent; +import keystrokesmod.event.RunGameLoopEvent; +import net.minecraft.client.Minecraft; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S12PacketEntityVelocity; +import net.minecraft.network.play.server.S27PacketExplosion; +import net.minecraftforge.event.entity.EntityJoinWorldEvent; +import net.minecraftforge.fml.common.eventhandler.EventPriority; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.util.ArrayDeque; +import java.util.Queue; + +public class KnockBackHelper { + + private final Minecraft mc = Minecraft.getMinecraft(); + + private final Queue packets = new ArrayDeque<>(); + + private boolean cancel = false; + + private boolean releasePackets = false; + + @SubscribeEvent(priority = EventPriority.LOWEST) + public void onReceivePacket(ReceivePacketEvent e) { + if (e.getPacket() instanceof S12PacketEntityVelocity || e.getPacket() instanceof S27PacketExplosion) { + if (e.getPacket() instanceof S12PacketEntityVelocity && + ((S12PacketEntityVelocity) e.getPacket()).getEntityID() == mc.thePlayer.getEntityId() && + cancel) + { + this.packets.add(e.getPacket()); + e.setCanceled(true); + } + else if (e.getPacket() instanceof S27PacketExplosion && cancel) { + this.packets.add(e.getPacket()); + e.setCanceled(true); + } + } + } + + @SubscribeEvent + public void onGameLoop(RunGameLoopEvent e) { + if (!Utils.nullCheck() || !this.releasePackets) { + return; + } + while (!this.packets.isEmpty()) { + Packet p = this.packets.poll(); + if (p != null) p.processPacket(mc.getNetHandler()); + } + this.releasePackets = false; + } + + @SubscribeEvent + public void onWorldJoin(EntityJoinWorldEvent e) { + if (e.entity == mc.thePlayer) { + this.packets.clear(); // Clears the buffered packets when you join a new world. + } + } + + /** + * Starts capturing packets, buffering them until {@link #releasePackets()} is called. + */ + public void capturePackets() { + this.cancel = true; + } + + /** + * Releases the buffered packets and sends them to your client. + */ + public void releasePackets() { + this.cancel = false; + this.releasePackets = true; + } + +} \ No newline at end of file diff --git a/src/main/java/keystrokesmod/utility/ModuleUtils.java b/src/main/java/keystrokesmod/utility/ModuleUtils.java index ccedd00..f2a005c 100644 --- a/src/main/java/keystrokesmod/utility/ModuleUtils.java +++ b/src/main/java/keystrokesmod/utility/ModuleUtils.java @@ -74,45 +74,32 @@ public class ModuleUtils { public void onWorldJoin(EntityJoinWorldEvent e) { if (e.entity == mc.thePlayer) { ModuleManager.disabler.disablerLoaded = false; + inAirTicks = 0; } } @SubscribeEvent - public void onSendPacketNoEvent(NoEventPacketEvent e) { + public void onSendPacketAll(SendAllPacketsEvent e) { if (!Utils.nullCheck()) { return; } - - if (e.getPacket() instanceof C09PacketHeldItemChange) { - swapTick = 2; - } - - // isBlocked - if (e.getPacket() instanceof C07PacketPlayerDigging && isBlocked) { - C07PacketPlayerDigging c07 = (C07PacketPlayerDigging) e.getPacket(); - String edger; - edger = String.valueOf(c07.getStatus()); - if (Objects.equals(edger, "RELEASE_USE_ITEM")) { + Packet packet = e.getPacket(); + if (packet instanceof C07PacketPlayerDigging && isBlocked) { + C07PacketPlayerDigging c07 = (C07PacketPlayerDigging) packet; + if (Objects.equals(String.valueOf(c07.getStatus()), "RELEASE_USE_ITEM")) { isBlocked = false; } } - if (e.getPacket() instanceof C09PacketHeldItemChange && isBlocked) { + if (packet instanceof C09PacketHeldItemChange && isBlocked) { isBlocked = false; } - if (e.getPacket() instanceof C08PacketPlayerBlockPlacement && Utils.holdingSword() && !BlockUtils.isInteractable(mc.objectMouseOver) && !isBlocked) { + if (packet instanceof C08PacketPlayerBlockPlacement && Utils.holdingSword() && !BlockUtils.isInteractable(mc.objectMouseOver) && !isBlocked) { isBlocked = true; } - - // - // isAttacking - - if (e.getPacket() instanceof C02PacketUseEntity) { - isAttacking = true; - attackingTicks = 5; - } - - // - + if (packet instanceof C02PacketUseEntity) { + isAttacking = true; + attackingTicks = 5; + } } @SubscribeEvent @@ -121,32 +108,6 @@ public class ModuleUtils { return; } - // isBlocked - if (e.getPacket() instanceof C07PacketPlayerDigging && isBlocked) { - C07PacketPlayerDigging c07 = (C07PacketPlayerDigging) e.getPacket(); - String edger; - edger = String.valueOf(c07.getStatus()); - if (Objects.equals(edger, "RELEASE_USE_ITEM")) { - isBlocked = false; - } - } - if (e.getPacket() instanceof C09PacketHeldItemChange && isBlocked) { - isBlocked = false; - } - if (e.getPacket() instanceof C08PacketPlayerBlockPlacement && Utils.holdingSword() && !BlockUtils.isInteractable(mc.objectMouseOver) && !isBlocked) { - isBlocked = true; - } - - // - // isAttacking - - if (e.getPacket() instanceof C02PacketUseEntity) { - isAttacking = true; - attackingTicks = 5; - } - - // - if (e.getPacket() instanceof C09PacketHeldItemChange) { swapTick = 2; } @@ -173,7 +134,7 @@ public class ModuleUtils { } @SubscribeEvent - public void onReceivePacket(ReceivePacketEvent e) { + public void onReceivePacketAll(ReceiveAllPacketsEvent e) { if (!Utils.nullCheck()) { return; } diff --git a/src/main/java/keystrokesmod/utility/PacketsHandler.java b/src/main/java/keystrokesmod/utility/PacketsHandler.java index e8aad19..444684b 100644 --- a/src/main/java/keystrokesmod/utility/PacketsHandler.java +++ b/src/main/java/keystrokesmod/utility/PacketsHandler.java @@ -1,9 +1,7 @@ package keystrokesmod.utility; -import keystrokesmod.event.PostUpdateEvent; -import keystrokesmod.event.ReceivePacketEvent; -import keystrokesmod.event.SendPacketEvent; +import keystrokesmod.event.*; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.network.Packet; @@ -80,6 +78,57 @@ public class PacketsHandler { } } + public void onSendPacketAll(SendAllPacketsEvent e) { + if (e.isCanceled()) { + return; + } + if (e.getPacket() instanceof C02PacketUseEntity) { // sending a C07 on the same tick as C02 can ban, this usually happens when you unblock and attack on the same tick + if (C07.get()) { + e.setCanceled(true); + return; + } + C02.set(true); + } + else if (e.getPacket() instanceof C08PacketPlayerBlockPlacement) { + C08.set(true); + } + else if (e.getPacket() instanceof C07PacketPlayerDigging) { + C07.set(true); + } + else if (e.getPacket() instanceof C0APacketAnimation) { + if (C07.get()) { + e.setCanceled(true); + return; + } + C0A.set(true); + } + else if (e.getPacket() instanceof C09PacketHeldItemChange) { + if (((C09PacketHeldItemChange) e.getPacket()).getSlotId() == playerSlot.get() && ((C09PacketHeldItemChange) e.getPacket()).getSlotId() == serverSlot.get()) { + e.setCanceled(true); + return; + } + C09.set(true); + playerSlot.set(((C09PacketHeldItemChange) e.getPacket()).getSlotId()); + serverSlot.set(((C09PacketHeldItemChange) e.getPacket()).getSlotId()); + } + } + + @SubscribeEvent + public void onReceivePacketAll(ReceiveAllPacketsEvent e) { + if (e.getPacket() instanceof S09PacketHeldItemChange) { + S09PacketHeldItemChange packet = (S09PacketHeldItemChange) e.getPacket(); + if (packet.getHeldItemHotbarIndex() >= 0 && packet.getHeldItemHotbarIndex() < InventoryPlayer.getHotbarSize()) { + serverSlot.set(packet.getHeldItemHotbarIndex()); + } + } + else if (e.getPacket() instanceof S0CPacketSpawnPlayer && Minecraft.getMinecraft().thePlayer != null) { + if (((S0CPacketSpawnPlayer) e.getPacket()).getEntityID() != Minecraft.getMinecraft().thePlayer.getEntityId()) { + return; + } + this.playerSlot.set(-1); + } + } + @SubscribeEvent(priority = EventPriority.HIGHEST) public void onPostUpdate(PostUpdateEvent e) { if (delay.get()) { diff --git a/src/main/java/keystrokesmod/utility/ScaffoldBlockCount.java b/src/main/java/keystrokesmod/utility/ScaffoldBlockCount.java index 618f144..9371aee 100644 --- a/src/main/java/keystrokesmod/utility/ScaffoldBlockCount.java +++ b/src/main/java/keystrokesmod/utility/ScaffoldBlockCount.java @@ -10,8 +10,8 @@ import org.lwjgl.opengl.GL11; public class ScaffoldBlockCount { private final Minecraft mc; - private Timer fadeTimer; - private Timer fadeInTimer; + public static Timer fadeTimer; + public static Timer fadeInTimer; private float previousAlpha; public ScaffoldBlockCount(Minecraft mc) { @@ -72,8 +72,8 @@ public class ScaffoldBlockCount { } public void onDisable() { + ScaffoldBlockCount.fadeInTimer = null; + ScaffoldBlockCount.fadeTimer = null; FMLCommonHandler.instance().bus().unregister(this); - fadeInTimer = null; - fadeTimer = null; } } diff --git a/src/main/java/keystrokesmod/utility/Utils.java b/src/main/java/keystrokesmod/utility/Utils.java index 1d97d52..cb340a1 100644 --- a/src/main/java/keystrokesmod/utility/Utils.java +++ b/src/main/java/keystrokesmod/utility/Utils.java @@ -749,7 +749,7 @@ public class Utils { } final Scoreboard scoreboard = mc.theWorld.getScoreboard(); if (scoreboard == null) { - return -1; + return -2; } final ScoreObjective objective = scoreboard.getObjectiveInDisplaySlot(1); if (objective == null) { diff --git a/src/main/java/keystrokesmod/utility/profile/Manager.java b/src/main/java/keystrokesmod/utility/profile/Manager.java index 6429faa..63ecde4 100644 --- a/src/main/java/keystrokesmod/utility/profile/Manager.java +++ b/src/main/java/keystrokesmod/utility/profile/Manager.java @@ -3,6 +3,7 @@ package keystrokesmod.utility.profile; import keystrokesmod.Raven; import keystrokesmod.module.Module; import keystrokesmod.module.setting.impl.ButtonSetting; +import keystrokesmod.utility.ScaffoldBlockCount; import keystrokesmod.utility.Utils; import java.awt.*; diff --git a/src/main/java/keystrokesmod/utility/profile/ProfileManager.java b/src/main/java/keystrokesmod/utility/profile/ProfileManager.java index 49ad5ad..6d7af37 100644 --- a/src/main/java/keystrokesmod/utility/profile/ProfileManager.java +++ b/src/main/java/keystrokesmod/utility/profile/ProfileManager.java @@ -17,9 +17,12 @@ import keystrokesmod.module.setting.impl.ButtonSetting; import keystrokesmod.module.setting.impl.KeySetting; import keystrokesmod.module.setting.impl.SliderSetting; import keystrokesmod.script.Manager; +import keystrokesmod.utility.ModuleUtils; +import keystrokesmod.utility.ScaffoldBlockCount; import keystrokesmod.utility.Utils; import net.minecraft.client.Minecraft; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.FMLCommonHandler; import java.io.File; import java.io.FileReader; @@ -258,7 +261,10 @@ public class ProfileManager { for (Setting setting : module.getSettings()) { setting.loadProfile(moduleInformation); } - + ScaffoldBlockCount.fadeInTimer = null; + ScaffoldBlockCount.fadeTimer = null; + FMLCommonHandler.instance().bus().unregister(this); + ModuleUtils.profileTicks = 0; Raven.currentProfile = getProfile(name); } MinecraftForge.EVENT_BUS.post(new PostProfileLoadEvent(Raven.currentProfile.getName())); diff --git a/src/main/java/keystrokesmod/utility/profile/ProfileModule.java b/src/main/java/keystrokesmod/utility/profile/ProfileModule.java index 4e04b29..20487e8 100644 --- a/src/main/java/keystrokesmod/utility/profile/ProfileModule.java +++ b/src/main/java/keystrokesmod/utility/profile/ProfileModule.java @@ -38,7 +38,6 @@ public class ProfileModule extends Module { if (Settings.sendMessage.isToggled()) { Utils.sendMessage("&7Enabled profile: &b" + this.getName()); - ModuleUtils.profileTicks = 0; } saved = true; } diff --git a/src/main/resources/mixins.raven.json b/src/main/resources/mixins.raven.json index d40f54c..f7449e3 100644 --- a/src/main/resources/mixins.raven.json +++ b/src/main/resources/mixins.raven.json @@ -40,6 +40,7 @@ "accessor.IAccessorGuiScreenBook", "accessor.IAccessorGuiScreen", "accessor.IAccessorS14PacketEntity", - "accessor.IAccessorEntityPlayer" + "accessor.IAccessorEntityPlayer", + "accessor.IAccessorNetworkManager" ] } \ No newline at end of file