From e2383856d51903bb6ce3eb9203434764e76ba35c Mon Sep 17 00:00:00 2001 From: Ridan Vandenbergh Date: Fri, 10 Aug 2018 12:47:33 +0200 Subject: [PATCH] fix freecam --- .../kami/event/ForgeEventProcessor.java | 4 ++ .../kami/event/events/PlayerMoveEvent.java | 53 +++++++++++++++++++ .../mixin/client/MixinEntityPlayerSP.java | 13 +++++ .../client/MixinStateImplementation.java | 16 ------ .../kami/module/modules/player/Freecam.java | 29 +++++----- 5 files changed, 83 insertions(+), 32 deletions(-) create mode 100644 src/main/java/me/zeroeightsix/kami/event/events/PlayerMoveEvent.java diff --git a/src/main/java/me/zeroeightsix/kami/event/ForgeEventProcessor.java b/src/main/java/me/zeroeightsix/kami/event/ForgeEventProcessor.java index a2ff7ab9..72924879 100644 --- a/src/main/java/me/zeroeightsix/kami/event/ForgeEventProcessor.java +++ b/src/main/java/me/zeroeightsix/kami/event/ForgeEventProcessor.java @@ -139,5 +139,9 @@ public class ForgeEventProcessor { public void onEntityJoinWorldEvent(EntityJoinWorldEvent entityJoinWorldEvent) { KamiMod.EVENT_BUS.post(entityJoinWorldEvent); } + @SubscribeEvent + public void onPlayerPush(PlayerSPPushOutOfBlocksEvent event) { + KamiMod.EVENT_BUS.post(event); + } } diff --git a/src/main/java/me/zeroeightsix/kami/event/events/PlayerMoveEvent.java b/src/main/java/me/zeroeightsix/kami/event/events/PlayerMoveEvent.java new file mode 100644 index 00000000..3cbedca9 --- /dev/null +++ b/src/main/java/me/zeroeightsix/kami/event/events/PlayerMoveEvent.java @@ -0,0 +1,53 @@ +package me.zeroeightsix.kami.event.events; + +import me.zeroeightsix.kami.event.KamiEvent; +import net.minecraft.entity.MoverType; +import net.minecraft.util.math.BlockPos; + +/** + * @author 086 + */ +public class PlayerMoveEvent extends KamiEvent { + + MoverType type; + double x, y, z; + + public PlayerMoveEvent(MoverType type, double x, double y, double z) { + this.type = type; + this.x = x; + this.y = y; + this.z = z; + } + + public MoverType getType() { + return type; + } + + public void setType(MoverType type) { + this.type = type; + } + + public double getX() { + return x; + } + + public double getY() { + return y; + } + + public double getZ() { + return z; + } + + public void setX(double x) { + this.x = x; + } + + public void setY(double y) { + this.y = y; + } + + public void setZ(double z) { + this.z = z; + } +} diff --git a/src/main/java/me/zeroeightsix/kami/mixin/client/MixinEntityPlayerSP.java b/src/main/java/me/zeroeightsix/kami/mixin/client/MixinEntityPlayerSP.java index deb84531..e004f022 100644 --- a/src/main/java/me/zeroeightsix/kami/mixin/client/MixinEntityPlayerSP.java +++ b/src/main/java/me/zeroeightsix/kami/mixin/client/MixinEntityPlayerSP.java @@ -1,12 +1,18 @@ package me.zeroeightsix.kami.mixin.client; +import me.zeroeightsix.kami.KamiMod; +import me.zeroeightsix.kami.event.KamiEvent; +import me.zeroeightsix.kami.event.events.PlayerMoveEvent; import me.zeroeightsix.kami.module.ModuleManager; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.MoverType; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; /** * Created by 086 on 12/12/2017. @@ -24,4 +30,11 @@ public class MixinEntityPlayerSP { if (ModuleManager.isModuleEnabled("PortalChat")) return; } + @Inject(method = "move", at = @At("HEAD"), cancellable = true) + public void move(MoverType type, double x, double y, double z, CallbackInfo info) { + PlayerMoveEvent event = new PlayerMoveEvent(type, x, y, z); + KamiMod.EVENT_BUS.post(event); + if (event.isCancelled()) info.cancel(); + } + } diff --git a/src/main/java/me/zeroeightsix/kami/mixin/client/MixinStateImplementation.java b/src/main/java/me/zeroeightsix/kami/mixin/client/MixinStateImplementation.java index 7323cdec..8f6a0f0e 100644 --- a/src/main/java/me/zeroeightsix/kami/mixin/client/MixinStateImplementation.java +++ b/src/main/java/me/zeroeightsix/kami/mixin/client/MixinStateImplementation.java @@ -34,20 +34,4 @@ public class MixinStateImplementation { block.addCollisionBoxToList(state, worldIn, pos, entityBox, collidingBoxes, entityIn, isActualState); } -// @Inject(method = "shouldSideBeRendered", at = @At("HEAD"), cancellable = true) -// public void shouldSideBeRendered(IBlockAccess blockAccess, BlockPos pos, EnumFacing facing, CallbackInfoReturnable callbackInfoReturnable) { -// if (ModuleManager.isModuleEnabled("Xray")) { -// callbackInfoReturnable.setReturnValue(Xray.isXrayBlock(block)); -// callbackInfoReturnable.cancel(); -// } -// } -// -// @Inject(method = "getLightValue()I", at = @At("HEAD"), cancellable = true) -// public void getLightValue(CallbackInfoReturnable callbackInfoReturnable) { -// if (ModuleManager.isModuleEnabled("Xray")) { -// callbackInfoReturnable.setReturnValue(16); -// callbackInfoReturnable.cancel(); -// } -// } - } diff --git a/src/main/java/me/zeroeightsix/kami/module/modules/player/Freecam.java b/src/main/java/me/zeroeightsix/kami/module/modules/player/Freecam.java index 6e38cbde..912f1a14 100644 --- a/src/main/java/me/zeroeightsix/kami/module/modules/player/Freecam.java +++ b/src/main/java/me/zeroeightsix/kami/module/modules/player/Freecam.java @@ -2,7 +2,8 @@ package me.zeroeightsix.kami.module.modules.player; import me.zero.alpine.listener.EventHandler; import me.zero.alpine.listener.Listener; -import me.zeroeightsix.kami.event.events.PacketEvent; +import me.zero.alpine.type.Cancellable; +import me.zeroeightsix.kami.event.events.*; import me.zeroeightsix.kami.module.Module; import me.zeroeightsix.kami.setting.Setting; import net.minecraft.client.entity.EntityOtherPlayerMP; @@ -11,6 +12,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.play.client.CPacketInput; import net.minecraft.network.play.client.CPacketPlayer; import net.minecraft.network.play.server.SPacketPlayerPosLook; +import net.minecraftforge.client.event.PlayerSPPushOutOfBlocksEvent; /** * Created by 086 on 22/12/2017. @@ -23,9 +25,6 @@ public class Freecam extends Module { private double posX, posY, posZ; private float pitch, yaw; - private double startPosX, startPosY, startPosZ; - private float startPitch, startYaw; - private EntityOtherPlayerMP clonedPlayer; private boolean isRidingEntity; @@ -88,6 +87,16 @@ public class Freecam extends Module { mc.player.fallDistance = 0; } + @EventHandler + private Listener moveListener = new Listener<>(event -> { + mc.player.noClip = true; + }); + + @EventHandler + private Listener pushListener = new Listener<>(event -> { + event.setCanceled(true); + }); + @EventHandler private Listener sendListener = new Listener<>(event -> { if(event.getPacket() instanceof CPacketPlayer || event.getPacket() instanceof CPacketInput) { @@ -95,16 +104,4 @@ public class Freecam extends Module { } }); - @EventHandler - private Listener receiveListener = new Listener<>(event -> { - if (event.getPacket() instanceof SPacketPlayerPosLook) { - SPacketPlayerPosLook packet = (SPacketPlayerPosLook) event.getPacket(); - startPosX = packet.getX(); - startPosY = packet.getY(); - startPosZ = packet.getZ(); - startPitch = packet.getPitch(); - startYaw = packet.getYaw(); - } - }); - }