From 4ca81e450467dee7e26d9f02f76a0ccc2f1a2a39 Mon Sep 17 00:00:00 2001 From: noil Date: Tue, 16 May 2023 01:52:28 -0400 Subject: [PATCH] Add PearlDupeModule --- .../impl/management/ModuleManager.java | 1 + .../impl/module/misc/PearlDupeModule.java | 49 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/main/java/me/rigamortis/seppuku/impl/module/misc/PearlDupeModule.java diff --git a/src/main/java/me/rigamortis/seppuku/impl/management/ModuleManager.java b/src/main/java/me/rigamortis/seppuku/impl/management/ModuleManager.java index 4a1bdd2..9f1c7c2 100644 --- a/src/main/java/me/rigamortis/seppuku/impl/management/ModuleManager.java +++ b/src/main/java/me/rigamortis/seppuku/impl/management/ModuleManager.java @@ -177,6 +177,7 @@ public final class ModuleManager { add(new AutoTrapModule()); add(new ChestFarmerModule()); add(new FastProjectile()); + add(new PearlDupeModule()); // p2w experience if (Seppuku.INSTANCE.getCapeManager().hasCape()) diff --git a/src/main/java/me/rigamortis/seppuku/impl/module/misc/PearlDupeModule.java b/src/main/java/me/rigamortis/seppuku/impl/module/misc/PearlDupeModule.java new file mode 100644 index 0000000..39dc552 --- /dev/null +++ b/src/main/java/me/rigamortis/seppuku/impl/module/misc/PearlDupeModule.java @@ -0,0 +1,49 @@ +package me.rigamortis.seppuku.impl.module.misc; + +import me.rigamortis.seppuku.api.event.EventStageable; +import me.rigamortis.seppuku.api.event.network.EventReceivePacket; +import me.rigamortis.seppuku.api.module.Module; +import me.rigamortis.seppuku.api.value.Value; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.network.play.server.SPacketPlayerPosLook; +import team.stiff.pomelo.impl.annotated.handler.annotation.Listener; + +/** + * @author noil + */ +public class PearlDupeModule extends Module { + private final Value message = new Value<>("Message", new String[] { "msg", "text" }, "Command to send", "kill"); + +// private static final int TP_DISTANCE = 16; + + public PearlDupeModule() { + super("PearlDupe", new String[] { "pearldupe", "dupepearl", "pearlexploit" }, "Sends /kill (or another command) when receiving a teleport position packet. Be careful!", "NONE", -1, Module.ModuleType.MISC); + } + + @Listener + public void onReceivePacket(EventReceivePacket event) { + if (event.getStage() != EventStageable.EventStage.PRE) + return; + + if (event.getPacket() instanceof SPacketPlayerPosLook) { + final Minecraft mc = Minecraft.getMinecraft(); + final EntityPlayerSP localPlayer = mc.player; + if (localPlayer == null) + return; + if (localPlayer.ticksExisted < 20) + return; + if (isPearlOrFarTeleport(localPlayer, (SPacketPlayerPosLook)event.getPacket())) + sendKillMessage(localPlayer); + toggle(); + } + } + + private boolean isPearlOrFarTeleport(EntityPlayerSP localPlayer, SPacketPlayerPosLook packetPlayerPosLook) { + return (localPlayer.getDistance(packetPlayerPosLook.getX(), packetPlayerPosLook.getY(), packetPlayerPosLook.getZ()) > 16.0D); + } + + private void sendKillMessage(EntityPlayerSP localPlayer) { + localPlayer.sendChatMessage("/" + this.message.getValue()); + } +}