From 18e25141833816d396ec00508e048e45e8c8d296 Mon Sep 17 00:00:00 2001 From: Snoworange420 Date: Tue, 15 Nov 2022 18:25:42 +0100 Subject: [PATCH] I forgot to update newly generated files wtf???????????? --- .gradle/4.9/fileChanges/last-build.bin | Bin 0 -> 1 bytes .gradle/4.9/fileHashes/fileHashes.bin | Bin 0 -> 18697 bytes .gradle/4.9/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .gradle/gradle.log | 1 + .gradle/vcsWorkingDirs/gc.properties | 0 .idea/.gitignore | 3 + .idea/compiler.xml | 6 + .idea/gradle.xml | 18 ++ .idea/jarRepositories.xml | 45 +++ .idea/misc.xml | 5 + .idea/vcs.xml | 6 + .../mousse/event/ForgeEventHandeler.java | 39 +++ .../mousse/mixin/mixins/MixinItemStack.java | 38 +++ .../module/modules/combat/Auto32k2019.java | 275 ++++++++++++++++++ .../module/modules/misc/DebugModule.java | 30 ++ .../module/modules/misc/TrueDurability.java | 25 ++ .../assets/minecraft/textures/elmo_cape.png | Bin 0 -> 1384 bytes .../minecraft/textures/jonakip_cape.png | Bin 0 -> 550 bytes .../assets/minecraft/textures/mousse_cape.png | Bin 0 -> 2275 bytes .../assets/minecraft/textures/pseudo_cape.png | Bin 0 -> 389 bytes .../minecraft/textures/snoworange_cape.png | Bin 0 -> 416 bytes 21 files changed, 491 insertions(+) create mode 100644 .gradle/4.9/fileChanges/last-build.bin create mode 100644 .gradle/4.9/fileHashes/fileHashes.bin create mode 100644 .gradle/4.9/fileHashes/fileHashes.lock create mode 100644 .gradle/gradle.log create mode 100644 .gradle/vcsWorkingDirs/gc.properties create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 src/main/java/com/snoworange/mousse/event/ForgeEventHandeler.java create mode 100644 src/main/java/com/snoworange/mousse/mixin/mixins/MixinItemStack.java create mode 100644 src/main/java/com/snoworange/mousse/module/modules/combat/Auto32k2019.java create mode 100644 src/main/java/com/snoworange/mousse/module/modules/misc/DebugModule.java create mode 100644 src/main/java/com/snoworange/mousse/module/modules/misc/TrueDurability.java create mode 100644 src/main/resources/assets/minecraft/textures/elmo_cape.png create mode 100644 src/main/resources/assets/minecraft/textures/jonakip_cape.png create mode 100644 src/main/resources/assets/minecraft/textures/mousse_cape.png create mode 100644 src/main/resources/assets/minecraft/textures/pseudo_cape.png create mode 100644 src/main/resources/assets/minecraft/textures/snoworange_cape.png diff --git a/.gradle/4.9/fileChanges/last-build.bin b/.gradle/4.9/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/4.9/fileHashes/fileHashes.bin b/.gradle/4.9/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..4e60171ebb6f21c9da55cf5e9b82b12bf0670d1e GIT binary patch literal 18697 zcmeI%KS%>H6vy#gaS}_9%Fzy5u%IAn5$a&69S(|gau7riI*WsXoKO)5|F4ctE`pmV z=pqNjVkZ$q=-?twDk$Qpf`g{K3q|VYCf`6Vj~9L<`K*^$DsF!TLp6reD5(%Y009IL zKmY**5I_I{1Q0*~0R#|0009ILK;XX!Oz4NS%46dFp?VQ1DK*%pi + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 00000000..d405dbed --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 00000000..d92e2474 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..b0051c81 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/com/snoworange/mousse/event/ForgeEventHandeler.java b/src/main/java/com/snoworange/mousse/event/ForgeEventHandeler.java new file mode 100644 index 00000000..0a23d190 --- /dev/null +++ b/src/main/java/com/snoworange/mousse/event/ForgeEventHandeler.java @@ -0,0 +1,39 @@ +package com.snoworange.mousse.event; + +import com.snoworange.mousse.Main; +import com.snoworange.mousse.module.Module; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.event.entity.living.LivingEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; + +public class ForgeEventHandeler { + + @SubscribeEvent + public void onTick(TickEvent.ClientTickEvent event) { + for (Module m : Main.moduleManager.modules) { + if (m.isToggled() || m.isEnabled()) { + m.onTick(); + } + } + } + + @SubscribeEvent + public void onPlayerTick(TickEvent.PlayerTickEvent event) { + for (Module m : Main.moduleManager.modules) { + + if (m.isToggled() || m.isEnabled()) { + m.onPlayerTick(); + } + } + } + + @SubscribeEvent + public void onUpdate(LivingEvent.LivingUpdateEvent event) { + for (Module m : Main.moduleManager.modules) { + if ((m.isToggled() || m.isEnabled()) && event.getEntityLiving() instanceof EntityPlayer) { + m.onUpdate(); + } + } + } +} diff --git a/src/main/java/com/snoworange/mousse/mixin/mixins/MixinItemStack.java b/src/main/java/com/snoworange/mousse/mixin/mixins/MixinItemStack.java new file mode 100644 index 00000000..02cb8215 --- /dev/null +++ b/src/main/java/com/snoworange/mousse/mixin/mixins/MixinItemStack.java @@ -0,0 +1,38 @@ +package com.snoworange.mousse.mixin.mixins; + +import com.snoworange.mousse.Main; +import com.snoworange.mousse.module.modules.misc.TrueDurability; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import org.spongepowered.asm.mixin.Dynamic; +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; + +@Mixin(value={ItemStack.class}) +public abstract class MixinItemStack { + @Shadow + private int itemDamage; + + @Inject(method={"(Lnet/minecraft/item/Item;IILnet/minecraft/nbt/NBTTagCompound;)V"}, at={@At(value="RETURN")}) + @Dynamic + private void initHook(Item item, int idkWhatDisIsIPastedThis, int dura, NBTTagCompound compound, CallbackInfo info) { + this.itemDamage = this.checkDurability((ItemStack)ItemStack.class.cast(this), this.itemDamage, dura); + } + + @Inject(method={"(Lnet/minecraft/nbt/NBTTagCompound;)V"}, at={@At(value="RETURN")}) + private void initHook2(NBTTagCompound compound, CallbackInfo info) { + this.itemDamage = this.checkDurability((ItemStack)ItemStack.class.cast(this), this.itemDamage, compound.getShort("Damage")); + } + + private int checkDurability(ItemStack item, int damage, int dura) { + int trueDura = damage; + if (Main.moduleManager.getModule("TrueDurability").isToggled() && dura < 0) { + trueDura = dura; + } + return trueDura; + } +} diff --git a/src/main/java/com/snoworange/mousse/module/modules/combat/Auto32k2019.java b/src/main/java/com/snoworange/mousse/module/modules/combat/Auto32k2019.java new file mode 100644 index 00000000..a9a45cbd --- /dev/null +++ b/src/main/java/com/snoworange/mousse/module/modules/combat/Auto32k2019.java @@ -0,0 +1,275 @@ +package com.snoworange.mousse.module.modules.combat; + +import com.snoworange.mousse.Main; +import com.snoworange.mousse.module.Category; +import com.snoworange.mousse.module.Module; +import com.snoworange.mousse.util.block.BlockUtils; +import net.minecraft.block.Block; +import net.minecraft.block.BlockAir; +import net.minecraft.block.BlockLiquid; +import net.minecraft.block.BlockShulkerBox; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.init.Blocks; +import net.minecraft.init.Enchantments; +import net.minecraft.init.Items; +import net.minecraft.inventory.ClickType; +import net.minecraft.inventory.ContainerDispenser; +import net.minecraft.inventory.ContainerHopper; +import net.minecraft.item.Item; +import net.minecraft.item.ItemShulkerBox; +import net.minecraft.item.ItemStack; +import net.minecraft.network.play.client.CPacketEntityAction; +import net.minecraft.network.play.client.CPacketHeldItemChange; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; + +public class Auto32k2019 extends Module { + + public Auto32k2019() { + super("Auto32k2019", "old auo32k lol", Category.COMBAT); + } + + BlockPos obsidianPos; + public int stage = 0; + + @Override + public void onEnable() { + super.onEnable(); + + obsidianPos = null; + stage = 0; + + if (mc.objectMouseOver == null || mc.objectMouseOver.sideHit == null) { + Main.sendMessage("Unable to enable Auto32k! Please aim at a block to enable."); + disable(); + } + + obsidianPos = mc.objectMouseOver.getBlockPos().offset(mc.objectMouseOver.sideHit); + } + + @Override + public void onDisable() { + super.onDisable(); + } + + @SubscribeEvent + public void onTick(TickEvent.ClientTickEvent event) { + if (this.toggled) { + + int hopperIndex = -1; + int redstoneIndex = -1; + int dispenserIndex = -1; + int obsidianIndex = -1; + int shulkerIndex = -1; + int enchantedSwordIndex = -1; + + for (int i = 0; i < 9; i++) { + + ItemStack itemStack = mc.player.inventory.mainInventory.get(i); + + if (itemStack.getItem().equals(Item.getItemFromBlock(Blocks.HOPPER))) { + hopperIndex = i; + } + + if (itemStack.getItem().equals(Item.getItemFromBlock(Blocks.REDSTONE_BLOCK))) { + redstoneIndex = i; + } + + if (itemStack.getItem().equals(Item.getItemFromBlock(Blocks.DISPENSER))) { + dispenserIndex = i; + } + + if (itemStack.getItem().equals(Item.getItemFromBlock(Blocks.OBSIDIAN))) { + obsidianIndex = i; + } + + if (itemStack.getItem() instanceof ItemShulkerBox) { + shulkerIndex = i; + } + + if (itemStack.getItem().equals(Items.DIAMOND_SWORD) && EnchantmentHelper.getEnchantmentLevel(Enchantments.SHARPNESS, itemStack) >= Short.MAX_VALUE) { + enchantedSwordIndex = i; + } + } + + if (stage == 0 && (hopperIndex == -1 || shulkerIndex == -1 || dispenserIndex == -1 || redstoneIndex == -1 || obsidianIndex == -1)) { + + if (hopperIndex == -1) { + Main.sendMessage("Missing hopper in your hotbar!"); + } + + if (shulkerIndex == -1) { + Main.sendMessage("Missing shulker box in your hotbar!"); + } + + if (obsidianIndex == -1) { + Main.sendMessage("Missing obsidian in your hotbar!"); + } + + if (dispenserIndex == -1) { + Main.sendMessage("Missing dispenser in your hotbar!"); + } + + if (redstoneIndex == -1) { + Main.sendMessage("Missing redstone block in your hotbar!"); + } + + disable(); + return; + } + + if (stage == 0) { + update(obsidianIndex); + placeBlock(obsidianPos); + + update(dispenserIndex); + placeBlock(obsidianPos.up()); + + mc.player.connection.sendPacket(new CPacketEntityAction(mc.player, CPacketEntityAction.Action.STOP_SNEAKING)); + mc.playerController.processRightClickBlock(mc.player, mc.world, obsidianPos.up(), EnumFacing.UP, new Vec3d(obsidianPos.up().getX(), obsidianPos.up().getY(), obsidianPos.up().getZ()), EnumHand.MAIN_HAND); + + stage = 1; + } + + //Swap shulker box + if (stage == 1 && mc.player.openContainer != null && mc.player.openContainer instanceof ContainerDispenser) { + + if (mc.player.openContainer.inventorySlots.get(0).getStack().isEmpty()) mc.playerController.windowClick(mc.player.openContainer.windowId, mc.player.openContainer.inventorySlots.get(0).slotNumber, shulkerIndex, ClickType.SWAP, mc.player); + + if (mc.player.openContainer.inventorySlots.get(0).getStack().getItem() instanceof ItemShulkerBox) { + mc.player.closeScreen(); + stage = 2; + } + } + + if (stage == 2) { + + mc.player.connection.sendPacket(new CPacketEntityAction(mc.player, CPacketEntityAction.Action.START_SNEAKING)); + update(redstoneIndex); + placeBlock(obsidianPos.up(2)); + + mc.player.connection.sendPacket(new CPacketEntityAction(mc.player, CPacketEntityAction.Action.STOP_SNEAKING)); + stage = 3; + } + + if (stage == 3) { + if (mc.world.getBlockState(obsidianPos.up().north()).getBlock() instanceof BlockShulkerBox) { + update(hopperIndex); + placeBlock(obsidianPos.north()); + + mc.player.connection.sendPacket(new CPacketEntityAction(mc.player, CPacketEntityAction.Action.STOP_SNEAKING)); + + mc.playerController.processRightClickBlock(mc.player, mc.world, obsidianPos.north(), EnumFacing.UP, new Vec3d(obsidianPos.north().getX(), obsidianPos.north().getY(), obsidianPos.north().getZ()), EnumHand.MAIN_HAND); + + stage = 4; + } + + if (mc.world.getBlockState(obsidianPos.up().east()).getBlock() instanceof BlockShulkerBox) { + update(hopperIndex); + placeBlock(obsidianPos.east()); + + mc.player.connection.sendPacket(new CPacketEntityAction(mc.player, CPacketEntityAction.Action.STOP_SNEAKING)); + + mc.playerController.processRightClickBlock(mc.player, mc.world, obsidianPos.east(), EnumFacing.UP, new Vec3d(obsidianPos.east().getX(), obsidianPos.east().getY(), obsidianPos.east().getZ()), EnumHand.MAIN_HAND); + + stage = 4; + } + + if (mc.world.getBlockState(obsidianPos.up().south()).getBlock() instanceof BlockShulkerBox) { + update(hopperIndex); + placeBlock(obsidianPos.south()); + + mc.player.connection.sendPacket(new CPacketEntityAction(mc.player, CPacketEntityAction.Action.STOP_SNEAKING)); + + mc.playerController.processRightClickBlock(mc.player, mc.world, obsidianPos.south(), EnumFacing.UP, new Vec3d(obsidianPos.south().getX(), obsidianPos.south().getY(), obsidianPos.south().getZ()), EnumHand.MAIN_HAND); + + stage = 4; + } + + if (mc.world.getBlockState(obsidianPos.up().west()).getBlock() instanceof BlockShulkerBox) { + update(hopperIndex); + placeBlock(obsidianPos.west()); + + mc.player.connection.sendPacket(new CPacketEntityAction(mc.player, CPacketEntityAction.Action.STOP_SNEAKING)); + + mc.playerController.processRightClickBlock(mc.player, mc.world, obsidianPos.west(), EnumFacing.UP, new Vec3d(obsidianPos.west().getX(), obsidianPos.west().getY(), obsidianPos.west().getZ()), EnumHand.MAIN_HAND); + + stage = 4; + } + } + + if (stage == 4) { + + if (mc.player.openContainer != null && mc.player.openContainer instanceof ContainerHopper) { + if (enchantedSwordIndex == -1 && mc.player.openContainer.inventorySlots != null && !mc.player.openContainer.inventorySlots.isEmpty()) { + for (int i = 0; i < 5; i++) { + if (mc.player.openContainer.inventorySlots.get(0).inventory.getStackInSlot(i).getItem().equals(Items.DIAMOND_SWORD) && EnchantmentHelper.getEnchantmentLevel(Enchantments.SHARPNESS, mc.player.openContainer.inventorySlots.get(0).inventory.getStackInSlot(i)) >= Short.MAX_VALUE) { + enchantedSwordIndex = i; + break; + } + } + } + + if (enchantedSwordIndex != -1) { + mc.playerController.windowClick(mc.player.openContainer.windowId, enchantedSwordIndex, mc.player.inventory.currentItem, ClickType.SWAP, mc.player); + Main.sendMessage("32k found in slot " + enchantedSwordIndex); + + stage = 5; + } + } + } + + if (stage == 5) { + disable(); + } + } + } + + public void update(int index) { + mc.player.connection.sendPacket(new CPacketHeldItemChange(index)); + mc.player.inventory.currentItem = index; + mc.playerController.updateController(); + } + + private boolean placeBlock(BlockPos pos) { + + if (mc.world == null || mc.player == null) disable(); + + Block block = mc.world.getBlockState(pos).getBlock(); + + if (!(block instanceof BlockAir) && !(block instanceof BlockLiquid)) { + return false; + } + + EnumFacing side = BlockUtils.getPlaceableSide(pos); + + if (side == null) { + return false; + } + + BlockPos neighbour = pos.offset(side); + EnumFacing opposite = side.getOpposite(); + + if (!BlockUtils.canBeClicked(neighbour)) { + return false; + } + + Vec3d hitVec = new Vec3d(neighbour).add((new Vec3d(0.5, 0.5, 0.5)).add(new Vec3d(opposite.getDirectionVec()).scale(0.5))); + Block neighbourBlock = mc.world.getBlockState(neighbour).getBlock(); + + if (BlockUtils.blackList.contains(neighbourBlock) || BlockUtils.shulkerList.contains(neighbourBlock)) { + mc.player.connection.sendPacket(new CPacketEntityAction(mc.player, CPacketEntityAction.Action.START_SNEAKING)); + } + + BlockUtils.faceVectorPacketInstant(hitVec); + + mc.playerController.processRightClickBlock(mc.player, mc.world, neighbour, opposite, hitVec, EnumHand.MAIN_HAND); + mc.player.swingArm(EnumHand.MAIN_HAND); + + return true; + } +} diff --git a/src/main/java/com/snoworange/mousse/module/modules/misc/DebugModule.java b/src/main/java/com/snoworange/mousse/module/modules/misc/DebugModule.java new file mode 100644 index 00000000..93b45f6d --- /dev/null +++ b/src/main/java/com/snoworange/mousse/module/modules/misc/DebugModule.java @@ -0,0 +1,30 @@ +package com.snoworange.mousse.module.modules.misc; + +import com.snoworange.mousse.Main; +import com.snoworange.mousse.module.Category; +import com.snoworange.mousse.module.Module; + +public class DebugModule extends Module { + + public DebugModule() { + super("DebugModule", "idk", Category.MISC); + } + + @Override + public void onEnable() { + super.onEnable(); + } + + @Override + public void onDisable() { + super.onDisable(); + } + + @Override + public void onTick() { + Main.sendMessage("hello from debug module!"); + Main.sendMessage("1"); + + disable(); + } +} diff --git a/src/main/java/com/snoworange/mousse/module/modules/misc/TrueDurability.java b/src/main/java/com/snoworange/mousse/module/modules/misc/TrueDurability.java new file mode 100644 index 00000000..a83a2a6f --- /dev/null +++ b/src/main/java/com/snoworange/mousse/module/modules/misc/TrueDurability.java @@ -0,0 +1,25 @@ +package com.snoworange.mousse.module.modules.misc; + +import com.snoworange.mousse.module.Category; +import com.snoworange.mousse.module.Module; + +public class TrueDurability extends Module { + + public static TrueDurability instance; + + public TrueDurability() { + super("TrueDurability", "displays the real durability on glitched items with negative damage value", Category.MISC); + instance = this; + } + + @Override + public void onEnable() { + super.onEnable(); + } + + @Override + public void onDisable() { + super.onDisable(); + } + +} \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/textures/elmo_cape.png b/src/main/resources/assets/minecraft/textures/elmo_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..353c063b2bd58bbf01a8d2b8a4914ef7ef3cc0da GIT binary patch literal 1384 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/textures/pseudo_cape.png b/src/main/resources/assets/minecraft/textures/pseudo_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..4a69f506d5d9bfd85f871910a734ecad807767c9 GIT binary patch literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQjEnx?oJHr&dIz4vh6)x978gk z-_Cd_*lfVj`dY8=i9z23gLgOLOg`!?Yqjz068&GX*ZaZK$Bnn%ZHzl#aeY@QYvYbP zsvEg3t@Cy+@N+10%kDQsQA^umi_Qu6<6jF%#pylQD?ZcB{d z_+GpJ&hkvBPGzT^W&!1nVh3!_-(GmU&_&UL;eb^ndrDWsfvL8vPTUa%47MgeW5pX< zB?b6=*59>R#hvh;;lQy>Zl$7Z#x30%4l7?iH$uU!yiGgV!^MPx$T1iAfRA@u(mr)XeAP|O^j?zPRm}WYXcBE!HO!d%JXi#WOKww>HQ+)9Sety3F zSy907Nd2aIi3Fk0+9_HI%ML@8c*sDqsGbmO+^iov9_zEL4arfc^=9N$hG9 z5ZjALli*Fj{(6Gf`L={M#%Smmkf*>2fMD}jqrV3rr3C1X0NuT>ezOzsjIm{BC07El zaKm4L&*sfg4MB*sy&ME6Xlau?_Yv7PATE!od5m@hfVOcDvJK4k21)>ZXS5-#8^Ab; zruq{Ic>oyNTq($T5yCbrsWxjKPXe&oR`FN@n7Yi_2-yShY<^n_ z@H8DvfBB0eQ1qXGgrcWHs+(i=WA2_);S90QW#k%(kSKn0+o&h-M4 z;*p4?+>N=7tpK=Hq_m%!fYQXdtydGkts