diff --git a/README.md b/README.md index 336a17f..3d8b474 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,19 @@ Sexual hack straight out of Mumbai India (GONE SEXUAL AT 3AM) (GONE WRONG) (IN D featuring - qq rat and the boat dupe -## ChangeLog- 5-29-2023 +#### Discord: https://discord.gg/uWfXEYpq + +--- + +## ChangeLog- 6-11-2023 ### Major changes -- Added `Shrug` Command -- Added `Help` Command -- Added `Parkour` Hack +- Client Updated to `1.20` +- Added `GameMode` Command +- Added `FakePlayer` Coomad +- Added `HitboxDesync` Hack ### Changed features -- Changed location of button for `ResourcePackBypass` to the resource pack confirm screen -- Added WaterMark option in `HUD` +- Added `Rotation` option to `Aura` diff --git a/gradle.properties b/gradle.properties index 7696e7b..36eb29c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx3G minecraft_version=1.20 yarn_mappings=1.20+build.1 loader_version=0.14.21 -mod_version=0.0.3 +mod_version=0.0.4 maven_group=club.l4j archives_base_name=currymod fabric_version=0.83.0+1.20 diff --git a/src/main/java/club/l4j/currymod/CurryMod.java b/src/main/java/club/l4j/currymod/CurryMod.java index 093021f..4e84ada 100644 --- a/src/main/java/club/l4j/currymod/CurryMod.java +++ b/src/main/java/club/l4j/currymod/CurryMod.java @@ -11,7 +11,7 @@ public class CurryMod implements ClientModInitializer { public static final String MOD_NAME = "CurryMod.Club"; public static final String MOD_ID = "currymod"; - public static final String VERSION = "0.0.3"; + public static final String VERSION = "0.0.4"; public static final DemoBus EVENT_BUS = new DemoBus(); public static final Logger LOGGER = LogManager.getLogger(MOD_NAME); diff --git a/src/main/java/club/l4j/currymod/event/events/PlayerMovmentEvent.java b/src/main/java/club/l4j/currymod/event/events/MovementEvent.java similarity index 61% rename from src/main/java/club/l4j/currymod/event/events/PlayerMovmentEvent.java rename to src/main/java/club/l4j/currymod/event/events/MovementEvent.java index d6d9bdc..de7dfd2 100644 --- a/src/main/java/club/l4j/currymod/event/events/PlayerMovmentEvent.java +++ b/src/main/java/club/l4j/currymod/event/events/MovementEvent.java @@ -1,16 +1,15 @@ package club.l4j.currymod.event.events; import club.l4j.currymod.event.Event; -import demo.knight.demobus.event.DemoListen; import net.minecraft.entity.MovementType; import net.minecraft.util.math.Vec3d; -public class PlayerMovmentEvent extends Event { +public class MovementEvent extends Event { private MovementType type; private Vec3d vec; - public PlayerMovmentEvent(MovementType type, Vec3d vec) { + public MovementEvent(MovementType type, Vec3d vec) { this.type = type; this.vec = vec; } @@ -19,7 +18,15 @@ public MovementType getType() { return type; } + public void setType(MovementType type) { + this.type = type; + } + public Vec3d getVec() { return vec; } + + public void setVec(Vec3d vec) { + this.vec = vec; + } } diff --git a/src/main/java/club/l4j/currymod/feature/FeatureManager.java b/src/main/java/club/l4j/currymod/feature/FeatureManager.java index f60e476..fdeb98e 100644 --- a/src/main/java/club/l4j/currymod/feature/FeatureManager.java +++ b/src/main/java/club/l4j/currymod/feature/FeatureManager.java @@ -47,6 +47,7 @@ public FeatureManager() { addHack(new Aura()); addHack(new Parkour()); addHack(new AutoWalk()); + addHack(new HitBoxDesync()); //Commands addCommand(new VClip()); @@ -54,6 +55,8 @@ public FeatureManager() { addCommand(new Lenny()); addCommand(new Shrug()); addCommand(new Help()); + addCommand(new GameModes()); + addCommand(new FakePlayer()); } public void runCommand(String args) { diff --git a/src/main/java/club/l4j/currymod/feature/impl/commandimpl/FakePlayer.java b/src/main/java/club/l4j/currymod/feature/impl/commandimpl/FakePlayer.java new file mode 100644 index 0000000..95cd1ca --- /dev/null +++ b/src/main/java/club/l4j/currymod/feature/impl/commandimpl/FakePlayer.java @@ -0,0 +1,15 @@ +package club.l4j.currymod.feature.impl.commandimpl; + +import club.l4j.currymod.feature.core.Command; +import club.l4j.currymod.util.world.SpawnableEntity; + +@Command.Construct(name = "FakePlayer", description = "Fake player", alias = {"fakeplayer"}) +public class FakePlayer extends Command { + + @Override + public void onTrigger(String arguments) { + SpawnableEntity e = new SpawnableEntity(mc.player); + e.spawn(); + super.onTrigger(arguments); + } +} diff --git a/src/main/java/club/l4j/currymod/feature/impl/commandimpl/GameModes.java b/src/main/java/club/l4j/currymod/feature/impl/commandimpl/GameModes.java new file mode 100644 index 0000000..6f9a102 --- /dev/null +++ b/src/main/java/club/l4j/currymod/feature/impl/commandimpl/GameModes.java @@ -0,0 +1,28 @@ +package club.l4j.currymod.feature.impl.commandimpl; + +import club.l4j.currymod.feature.core.Command; +import net.minecraft.world.GameMode; + +@Command.Construct(name = "gamemode", description = "Change your gamemode client side", alias = {"gamemode"}) +public class GameModes extends Command { + + @Override + public void onTrigger(String arguments) { + if(arguments.length() != 0){ + String[] split = arguments.split(" "); + String gm = split[0]; + if(gm.equals("survival")){ + mc.interactionManager.setGameMode(GameMode.SURVIVAL); + sendMsg("Set client side gamemode to survival"); + } else if (gm.equals("creative")){ + mc.interactionManager.setGameMode(GameMode.CREATIVE); + sendMsg("Set client side gamemode to creative"); + } else { + sendMsg("Invalid gamemode"); + } + }else { + sendMsg("Please specify a gamemode"); + } + super.onTrigger(arguments); + } +} diff --git a/src/main/java/club/l4j/currymod/feature/impl/hackimpl/combat/Aura.java b/src/main/java/club/l4j/currymod/feature/impl/hackimpl/combat/Aura.java index 5958fed..d8e39f1 100644 --- a/src/main/java/club/l4j/currymod/feature/impl/hackimpl/combat/Aura.java +++ b/src/main/java/club/l4j/currymod/feature/impl/hackimpl/combat/Aura.java @@ -3,10 +3,12 @@ import club.l4j.currymod.event.events.PacketSendEvent; import club.l4j.currymod.event.events.TickEvent; import club.l4j.currymod.feature.core.Hack; +import club.l4j.currymod.feature.options.impl.OptionBoolean; import club.l4j.currymod.feature.options.impl.OptionSlider; import club.l4j.currymod.mixin.minecraft.IPlayerMoveC2SPacket; import club.l4j.currymod.util.player.MovementUtils; import demo.knight.demobus.event.DemoListen; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; import net.minecraft.util.Hand; @@ -18,10 +20,11 @@ @Hack.Construct(name = "Aura", description = "attacks ppl fo u", category = Hack.Category.COMBAT) public class Aura extends Hack { - OptionSlider range = new OptionSlider("Range",1,6,1,6); + public OptionSlider range = new OptionSlider("Range",1,6,1,6); + public OptionBoolean rotate = new OptionBoolean("Rotations",true); public Aura(){ - addOptions(range); + addOptions(range, rotate); } float yaw, pitch; @@ -49,7 +52,7 @@ public void onTick(TickEvent e){ @DemoListen public void onPacketSend(PacketSendEvent e) { if (nullCheck()) {return;} - if (e.getPacket() instanceof PlayerMoveC2SPacket p) { + if (e.getPacket() instanceof PlayerMoveC2SPacket p && rotate.isEnabled()) { ((IPlayerMoveC2SPacket) p).setYaw(yaw); ((IPlayerMoveC2SPacket) p).setPitch(pitch); } diff --git a/src/main/java/club/l4j/currymod/feature/impl/hackimpl/exploit/BoatExecutor.java b/src/main/java/club/l4j/currymod/feature/impl/hackimpl/exploit/BoatExecutor.java index 1921049..7134bd4 100644 --- a/src/main/java/club/l4j/currymod/feature/impl/hackimpl/exploit/BoatExecutor.java +++ b/src/main/java/club/l4j/currymod/feature/impl/hackimpl/exploit/BoatExecutor.java @@ -5,8 +5,7 @@ import net.minecraft.network.packet.c2s.play.VehicleMoveC2SPacket; import net.minecraft.util.math.Vec3d; -//Abused on the LiveOverFlow Server by Logging4J -@Hack.Construct(name = "BoatExecutor", description = "Kills you and other person in boat", category = Hack.Category.EXPLOITS) +@Hack.Construct(name = "BoatExecutor", description = "Canadian Exploit used in The Convoy Protest (2022)", category = Hack.Category.EXPLOITS) public class BoatExecutor extends Hack { @Override diff --git a/src/main/java/club/l4j/currymod/feature/impl/hackimpl/exploit/HitBoxDesync.java b/src/main/java/club/l4j/currymod/feature/impl/hackimpl/exploit/HitBoxDesync.java new file mode 100644 index 0000000..65fc0fb --- /dev/null +++ b/src/main/java/club/l4j/currymod/feature/impl/hackimpl/exploit/HitBoxDesync.java @@ -0,0 +1,37 @@ +package club.l4j.currymod.feature.impl.hackimpl.exploit; + +import club.l4j.currymod.event.events.TickEvent; +import club.l4j.currymod.feature.core.Hack; +import demo.knight.demobus.event.DemoListen; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; + +@Hack.Construct(name = "HitBoxDesync", description = "Russian exploit", category = Hack.Category.EXPLOITS) +public class HitBoxDesync extends Hack { + + public double offset = 0.200009968835369999878673424677777777777761; + + @DemoListen + public void onTick(TickEvent e){ + if (nullCheck()) {return;} + Direction f = mc.player.getHorizontalFacing(); + Box bb = mc.player.getBoundingBox(); + Vec3d center = bb.getCenter(); + Vec3d offset = new Vec3d(f.getUnitVector()); + + Vec3d fin = merge(Vec3d.of(BlockPos.ofFloored(center)).add(.5, 0, .5).add(offset.multiply(offset)), f); + mc.player.setPosition(fin.x == 0 ? mc.player.getX() : fin.x, + mc.player.getY(), + fin.z == 0 ? mc.player.getZ() : fin.z); + toggle(); + } + + private Vec3d merge(Vec3d a, Direction facing) { + return new Vec3d(a.x * Math.abs(facing.getUnitVector().x()), a.y * Math.abs(facing.getUnitVector().y()), a.z * Math.abs(facing.getUnitVector().z())); + } + + + +} diff --git a/src/main/java/club/l4j/currymod/feature/impl/hackimpl/misc/AutoLog.java b/src/main/java/club/l4j/currymod/feature/impl/hackimpl/misc/AutoLog.java index a19126f..28ee412 100644 --- a/src/main/java/club/l4j/currymod/feature/impl/hackimpl/misc/AutoLog.java +++ b/src/main/java/club/l4j/currymod/feature/impl/hackimpl/misc/AutoLog.java @@ -6,7 +6,7 @@ import demo.knight.demobus.event.DemoListen; import net.minecraft.text.Text; -@Hack.Construct(name = "AutoLog", description = "only faggots log", category = Hack.Category.EXPLOITS) +@Hack.Construct(name = "AutoLog", description = "only faggots log", category = Hack.Category.MISC) public class AutoLog extends Hack { OptionSlider health = new OptionSlider("Health",1,20,1,4); diff --git a/src/main/java/club/l4j/currymod/feature/impl/hackimpl/misc/FastUse.java b/src/main/java/club/l4j/currymod/feature/impl/hackimpl/misc/FastUse.java index 1672d02..c2979de 100644 --- a/src/main/java/club/l4j/currymod/feature/impl/hackimpl/misc/FastUse.java +++ b/src/main/java/club/l4j/currymod/feature/impl/hackimpl/misc/FastUse.java @@ -4,7 +4,7 @@ import club.l4j.currymod.feature.core.Hack; import club.l4j.currymod.feature.options.impl.OptionBoolean; import club.l4j.currymod.mixin.minecraft.IMinecraftClient; -import club.l4j.currymod.util.player.ItemUtil; +import club.l4j.currymod.util.player.InvUtil; import demo.knight.demobus.event.DemoListen; import net.minecraft.item.BlockItem; @@ -24,7 +24,7 @@ public void onTick(TickEvent e) { if(mc.player.getInventory().getMainHandStack().getItem() instanceof BlockItem && blocks.isEnabled()){ ((IMinecraftClient) mc).setItemUseCooldown(0); } - if(ItemUtil.THROWABLES.contains(mc.player.getInventory().getMainHandStack().getItem()) && throwable.isEnabled()){ + if(InvUtil.THROWABLES.contains(mc.player.getInventory().getMainHandStack().getItem()) && throwable.isEnabled()){ ((IMinecraftClient) mc).setItemUseCooldown(0); } } diff --git a/src/main/java/club/l4j/currymod/feature/impl/hackimpl/movement/Flight.java b/src/main/java/club/l4j/currymod/feature/impl/hackimpl/movement/Flight.java index 3271fe0..1a9f1d6 100644 --- a/src/main/java/club/l4j/currymod/feature/impl/hackimpl/movement/Flight.java +++ b/src/main/java/club/l4j/currymod/feature/impl/hackimpl/movement/Flight.java @@ -16,8 +16,8 @@ public class Flight extends Hack { public OptionBoolean antiKick = new OptionBoolean("AntiKick", true); - public OptionMode mode = new OptionMode("Mode", "Creative", "Creative", "JetPack", "VerusHop"); - OptionSlider speed = new OptionSlider("Speed", 1f, 10f, 1f, 5f); + public OptionMode mode = new OptionMode("Mode", "Creative", "Creative", "JetPack", "AirHop"); + public OptionSlider speed = new OptionSlider("Speed", 1f, 10f, 1f, 5f); //VerusHop double startY = 0; @@ -73,7 +73,7 @@ public void onTick(TickEvent e){ @DemoListen public void onPacketSend(PacketSendEvent e) { - if(antiKick.isEnabled() && !mode.isMode("VerusHop") && e.getPacket() instanceof PlayerMoveC2SPacket packet){ + if(antiKick.isEnabled() && !mode.isMode("AirHop") && e.getPacket() instanceof PlayerMoveC2SPacket packet){ long time = System.currentTimeMillis(); double y = packet.getY(Double.MAX_VALUE); if (y != Double.MAX_VALUE) { diff --git a/src/main/java/club/l4j/currymod/mixin/minecraft/MixinClientPlayerEntity.java b/src/main/java/club/l4j/currymod/mixin/minecraft/MixinClientPlayerEntity.java index 101317b..6ae6be4 100644 --- a/src/main/java/club/l4j/currymod/mixin/minecraft/MixinClientPlayerEntity.java +++ b/src/main/java/club/l4j/currymod/mixin/minecraft/MixinClientPlayerEntity.java @@ -1,7 +1,7 @@ package club.l4j.currymod.mixin.minecraft; import club.l4j.currymod.CurryMod; -import club.l4j.currymod.event.events.PlayerMovmentEvent; +import club.l4j.currymod.event.events.MovementEvent; import com.mojang.authlib.GameProfile; import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.network.ClientPlayerEntity; @@ -9,13 +9,16 @@ import net.minecraft.entity.MovementType; import net.minecraft.util.math.Vec3d; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; 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; @Mixin({ClientPlayerEntity.class}) -public class MixinClientPlayerEntity extends AbstractClientPlayerEntity { +public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity { + + @Shadow protected abstract void autoJump(float dx, float dz); public MixinClientPlayerEntity(ClientWorld world, GameProfile profile) { super(world, profile); @@ -23,10 +26,15 @@ public MixinClientPlayerEntity(ClientWorld world, GameProfile profile) { @Inject(method = "move", at = @At("HEAD"), cancellable = true) public void move(MovementType movementType, Vec3d movement, CallbackInfo ci) { - PlayerMovmentEvent e = new PlayerMovmentEvent(movementType, movement); - CurryMod.EVENT_BUS.call(e); - if(e.isCancelled()){ + MovementEvent event = new MovementEvent(movementType, movement); + CurryMod.EVENT_BUS.call(event); + if(event.isCancelled()){ ci.cancel(); + } else if (!movementType.equals(event.getType()) || !movement.equals(event.getVec())) { + double d = getX(); + double e = getZ(); + move(event.getType(), event.getVec()); + autoJump((float) (getX() - d), (float) (getZ() - e)); } } diff --git a/src/main/java/club/l4j/currymod/mixin/minecraft/MixinScreen.java b/src/main/java/club/l4j/currymod/mixin/minecraft/MixinScreen.java index af324cf..f54e4cc 100644 --- a/src/main/java/club/l4j/currymod/mixin/minecraft/MixinScreen.java +++ b/src/main/java/club/l4j/currymod/mixin/minecraft/MixinScreen.java @@ -2,9 +2,12 @@ import club.l4j.currymod.CurryMod; import club.l4j.currymod.feature.impl.hackimpl.visual.NoRender; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; +import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -12,9 +15,11 @@ @Mixin(Screen.class) public class MixinScreen { + @Shadow @Nullable protected MinecraftClient client; + @Inject(method = "renderBackground", at = @At("HEAD"), cancellable = true) public void renderBackground(DrawContext context, CallbackInfo ci) { - if(CurryMod.featureManager.getHack("NoRender").isEnabled() && NoRender.getInstance.background.isEnabled()){ + if(CurryMod.featureManager.getHack("NoRender").isEnabled() && client.world != null && NoRender.getInstance.background.isEnabled()){ ci.cancel(); } } diff --git a/src/main/java/club/l4j/currymod/util/player/ItemUtil.java b/src/main/java/club/l4j/currymod/util/player/InvUtil.java similarity index 87% rename from src/main/java/club/l4j/currymod/util/player/ItemUtil.java rename to src/main/java/club/l4j/currymod/util/player/InvUtil.java index b330116..f3c0ba7 100644 --- a/src/main/java/club/l4j/currymod/util/player/ItemUtil.java +++ b/src/main/java/club/l4j/currymod/util/player/InvUtil.java @@ -9,7 +9,7 @@ import java.util.Set; -public class ItemUtil implements IGlobals { +public class InvUtil implements IGlobals { public static final Set THROWABLES = Sets.newHashSet( Items.SNOWBALL, Items.EXPERIENCE_BOTTLE, Items.EGG, Items.SPLASH_POTION, Items.ENDER_PEARL @@ -20,7 +20,7 @@ public class ItemUtil implements IGlobals { Blocks.EMERALD_ORE, Blocks.REDSTONE_ORE, Blocks.COPPER_ORE, Blocks.DEEPSLATE_COAL_ORE, Blocks.DEEPSLATE_IRON_ORE, Blocks.DEEPSLATE_GOLD_ORE, Blocks.DEEPSLATE_LAPIS_ORE, Blocks.DEEPSLATE_DIAMOND_ORE, Blocks.DEEPSLATE_EMERALD_ORE, Blocks.DEEPSLATE_REDSTONE_ORE, - Blocks.DEEPSLATE_COPPER_ORE + Blocks.DEEPSLATE_COPPER_ORE, Blocks.NETHER_QUARTZ_ORE, Blocks.ANCIENT_DEBRIS ); } diff --git a/src/main/java/club/l4j/currymod/util/world/SpawnableEntity.java b/src/main/java/club/l4j/currymod/util/world/SpawnableEntity.java new file mode 100644 index 0000000..56ff27a --- /dev/null +++ b/src/main/java/club/l4j/currymod/util/world/SpawnableEntity.java @@ -0,0 +1,26 @@ +package club.l4j.currymod.util.world; + +import club.l4j.currymod.util.IGlobals; +import com.mojang.authlib.GameProfile; +import net.minecraft.client.network.OtherClientPlayerEntity; +import net.minecraft.entity.Entity; + +import java.util.UUID; + +public class SpawnableEntity extends OtherClientPlayerEntity implements IGlobals { + + public SpawnableEntity(Entity e) { + super(mc.world, new GameProfile(UUID.randomUUID(), mc.player.getGameProfile().getName())); + copyPositionAndRotation(e); + setPose(e.getPose()); + } + + public void spawn(){ + unsetRemoved(); + mc.world.addEntity(getId(), this); + } + + public void destroy(){ + mc.world.removeEntity(getId(), RemovalReason.DISCARDED); + } +}