From 9779efdb8054463e29e95c60836b4055b2bf93ca Mon Sep 17 00:00:00 2001 From: NDev007 Date: Fri, 27 Jun 2025 14:11:19 +0300 Subject: [PATCH 1/3] New Module ClickTrough Allows you to click through blocks to entities (such as chests). --- .../meteorclient/systems/modules/Modules.java | 1 + .../systems/modules/player/ClickTrough.java | 56 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 src/main/java/meteordevelopment/meteorclient/systems/modules/player/ClickTrough.java diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java index f9394db09b..30db76eafd 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java @@ -426,6 +426,7 @@ private void initPlayer() { add(new AutoTool()); add(new BreakDelay()); add(new ChestSwap()); + add(new ClickTrough()); add(new EXPThrower()); add(new FakePlayer()); add(new FastUse()); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/ClickTrough.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/ClickTrough.java new file mode 100644 index 0000000000..9c1df24146 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/ClickTrough.java @@ -0,0 +1,56 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.systems.modules.player; + +import meteordevelopment.meteorclient.events.world.TickEvent; +import meteordevelopment.meteorclient.systems.modules.Categories; +import meteordevelopment.meteorclient.systems.modules.Module; +import meteordevelopment.meteorclient.utils.world.BlockUtils; +import meteordevelopment.orbit.EventHandler; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; + +import java.util.HashSet; +import java.util.Set; + +/** + * @author NDev007 + * @since 27.06.2025 + */ +public class ClickTrough extends Module { + private final Set checkedPositions = new HashSet<>(); + + public ClickTrough() { + super(Categories.Player, "click-trough", "Allows you to click through blocks to entities (such as chests)."); + } + + @EventHandler + private void onTick(TickEvent.Pre event) { + if (mc.player == null || mc.world == null || mc.currentScreen != null) return; + if (!mc.options.useKey.isPressed() || mc.player.isSneaking()) return; + + Vec3d eyePos = mc.player.getEyePos(); + Vec3d lookVec = mc.player.getRotationVec(1.0F); + checkedPositions.clear(); + + for (int i = 1; i < 50; i++) { + Vec3d pos = eyePos.add(lookVec.multiply(i * 0.5)); + BlockPos blockPos = BlockPos.ofFloored(pos); + if (!checkedPositions.add(blockPos)) continue; + BlockEntity be = mc.world.getBlockEntity(blockPos); + if (be != null) { + Vec3d hit = Vec3d.ofCenter(blockPos).add(0, 0.5, 0); + BlockHitResult bhr = new BlockHitResult(hit, Direction.UP, blockPos, true); + BlockUtils.interact(bhr, Hand.MAIN_HAND, true); + break; + } + } + } +} From de5ab5b3c5f2b5c703ea557cd1a0699dc8de96d3 Mon Sep 17 00:00:00 2001 From: NDev007 Date: Fri, 27 Jun 2025 15:20:13 +0300 Subject: [PATCH 2/3] rolled back --- .../meteorclient/systems/modules/Modules.java | 1 - .../systems/modules/player/ClickTrough.java | 56 ------------------- 2 files changed, 57 deletions(-) delete mode 100644 src/main/java/meteordevelopment/meteorclient/systems/modules/player/ClickTrough.java diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java index 30db76eafd..f9394db09b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java @@ -426,7 +426,6 @@ private void initPlayer() { add(new AutoTool()); add(new BreakDelay()); add(new ChestSwap()); - add(new ClickTrough()); add(new EXPThrower()); add(new FakePlayer()); add(new FastUse()); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/ClickTrough.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/player/ClickTrough.java deleted file mode 100644 index 9c1df24146..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/player/ClickTrough.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.systems.modules.player; - -import meteordevelopment.meteorclient.events.world.TickEvent; -import meteordevelopment.meteorclient.systems.modules.Categories; -import meteordevelopment.meteorclient.systems.modules.Module; -import meteordevelopment.meteorclient.utils.world.BlockUtils; -import meteordevelopment.orbit.EventHandler; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.util.math.Vec3d; - -import java.util.HashSet; -import java.util.Set; - -/** - * @author NDev007 - * @since 27.06.2025 - */ -public class ClickTrough extends Module { - private final Set checkedPositions = new HashSet<>(); - - public ClickTrough() { - super(Categories.Player, "click-trough", "Allows you to click through blocks to entities (such as chests)."); - } - - @EventHandler - private void onTick(TickEvent.Pre event) { - if (mc.player == null || mc.world == null || mc.currentScreen != null) return; - if (!mc.options.useKey.isPressed() || mc.player.isSneaking()) return; - - Vec3d eyePos = mc.player.getEyePos(); - Vec3d lookVec = mc.player.getRotationVec(1.0F); - checkedPositions.clear(); - - for (int i = 1; i < 50; i++) { - Vec3d pos = eyePos.add(lookVec.multiply(i * 0.5)); - BlockPos blockPos = BlockPos.ofFloored(pos); - if (!checkedPositions.add(blockPos)) continue; - BlockEntity be = mc.world.getBlockEntity(blockPos); - if (be != null) { - Vec3d hit = Vec3d.ofCenter(blockPos).add(0, 0.5, 0); - BlockHitResult bhr = new BlockHitResult(hit, Direction.UP, blockPos, true); - BlockUtils.interact(bhr, Hand.MAIN_HAND, true); - break; - } - } - } -} From 4c41a15c737bb35c6df1e7b2b571e6d4ffbdc9dd Mon Sep 17 00:00:00 2001 From: NDev007 Date: Fri, 27 Jun 2025 22:39:16 +0300 Subject: [PATCH 3/3] InventoryTweaks Inventory Drop button --- .../mixin/InventoryScreenMixin.java | 66 +++++++++++++++++++ .../mixininterface/IDropItems.java | 14 ++++ src/main/resources/meteor-client.mixins.json | 1 + 3 files changed, 81 insertions(+) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/InventoryScreenMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixininterface/IDropItems.java diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/InventoryScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/InventoryScreenMixin.java new file mode 100644 index 0000000000..1ef70c7f88 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/InventoryScreenMixin.java @@ -0,0 +1,66 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import meteordevelopment.meteorclient.mixininterface.IDropItems; +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.misc.InventoryTweaks; +import net.minecraft.client.gui.screen.ingame.InventoryScreen; +import net.minecraft.client.gui.screen.ingame.RecipeBookScreen; +import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.screen.PlayerScreenHandler; +import net.minecraft.screen.slot.SlotActionType; +import net.minecraft.text.Text; +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.callback.CallbackInfo; + +/** + * @author NDev007 + * @since 27.06.2025 + */ + +@Mixin(InventoryScreen.class) +public abstract class InventoryScreenMixin extends RecipeBookScreen implements IDropItems { + + public InventoryScreenMixin(PlayerScreenHandler handler, RecipeBookWidget recipeBook, PlayerInventory inventory, Text title) { + super(handler, recipeBook, inventory, title); + } + + @Override + public void dropItems() { + if (this.client == null || this.client.interactionManager == null || this.client.player == null) { + return; + } + + for (int i = 0; i < this.handler.slots.size(); ++i) { + if (this.client.currentScreen != this) { + break; + } + this.client.interactionManager.clickSlot(this.handler.syncId, i, 0, SlotActionType.PICKUP, this.client.player); + this.client.interactionManager.clickSlot(this.handler.syncId, -999, 0, SlotActionType.PICKUP, this.client.player); + } + } + + @Inject(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/RecipeBookScreen;init()V", shift = At.Shift.AFTER)) + private void onInit(CallbackInfo ci) { + InventoryTweaks invTweaks = Modules.get().get(InventoryTweaks.class); + + if (invTweaks.isActive() && invTweaks.showButtons()){ + this.addDrawableChild(ButtonWidget.builder( + Text.literal("Drop all"), + (button) -> { + this.dropItems(); + } + ) + .dimensions(this.width / 2 - 32, this.height / 2 - 110, 64, 20) + .build()); + } + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixininterface/IDropItems.java b/src/main/java/meteordevelopment/meteorclient/mixininterface/IDropItems.java new file mode 100644 index 0000000000..de5d820039 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixininterface/IDropItems.java @@ -0,0 +1,14 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixininterface; + +/** + * @author NDev007 + * @since 27.06.2025 + */ +public interface IDropItems { + void dropItems(); +} diff --git a/src/main/resources/meteor-client.mixins.json b/src/main/resources/meteor-client.mixins.json index edde12ac82..9eacf457bf 100644 --- a/src/main/resources/meteor-client.mixins.json +++ b/src/main/resources/meteor-client.mixins.json @@ -106,6 +106,7 @@ "IdentifierAccessor", "InGameHudMixin", "InGameOverlayRendererMixin", + "InventoryScreenMixin", "ItemEntityRendererMixin", "ItemGroupsMixin", "ItemMixin",