Skip to content

inventory-tweaks anti-drop minor improvements #5474

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

import meteordevelopment.meteorclient.MeteorClient;
import meteordevelopment.meteorclient.events.entity.DropItemsEvent;
import meteordevelopment.meteorclient.events.entity.player.InteractBlockEvent;
import meteordevelopment.meteorclient.events.entity.player.InteractEntityEvent;
import meteordevelopment.meteorclient.events.game.OpenScreenEvent;
import meteordevelopment.meteorclient.events.meteor.KeyEvent;
import meteordevelopment.meteorclient.events.meteor.MouseButtonEvent;
Expand All @@ -23,13 +25,17 @@
import meteordevelopment.meteorclient.utils.network.MeteorExecutor;
import meteordevelopment.meteorclient.utils.player.*;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.block.Block;
import net.minecraft.block.DecoratedPotBlock;
import net.minecraft.client.gui.screen.ingame.HandledScreen;
import net.minecraft.entity.decoration.ItemFrameEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.network.packet.c2s.play.CloseHandledScreenC2SPacket;
import net.minecraft.screen.ScreenHandler;
import net.minecraft.screen.ScreenHandlerType;
import net.minecraft.screen.slot.Slot;
import net.minecraft.util.Hand;
import org.lwjgl.glfw.GLFW;

import java.util.List;
Expand All @@ -42,6 +48,7 @@ public class InventoryTweaks extends Module {
private final SettingGroup sgStealDump = settings.createGroup("Steal and Dump");
private final SettingGroup sgAutoSteal = settings.createGroup("Auto Steal");


// General

private final Setting<Boolean> mouseDragItemMove = sgGeneral.add(new BoolSetting.Builder()
Expand All @@ -51,12 +58,6 @@ public class InventoryTweaks extends Module {
.build()
);

private final Setting<List<Item>> antiDropItems = sgGeneral.add(new ItemListSetting.Builder()
.name("anti-drop-items")
.description("Items to prevent dropping. Doesn't work in creative inventory screen.")
.build()
);

private final Setting<Boolean> xCarry = sgGeneral.add(new BoolSetting.Builder()
.name("xcarry")
.description("Allows you to store four extra item stacks in your crafting grid.")
Expand All @@ -76,6 +77,27 @@ public class InventoryTweaks extends Module {
.build()
);

// Anti drop (in sgGeneral to avoid breaking existing configs)

private final Setting<List<Item>> antiDropItems = sgGeneral.add(new ItemListSetting.Builder()
.name("anti-drop-items")
.description("Items to prevent dropping. Doesn't work in creative inventory screen.")
.build()
);

private final Setting<Boolean> antiItemFrame = sgGeneral.add(new BoolSetting.Builder()
.name("anti-drop-item-frames")
.description("Prevent anti-drop items from being placed in item frames or pots")
.defaultValue(true)
.build()
);

private final Setting<Keybind> antiDropOverrideBind = sgGeneral.add(new KeybindSetting.Builder()
.name("anti-drop-override")
.description("Hold this bind to temporarily bypass anti-drop")
.build()
);

// Sorting

private final Setting<Boolean> sortingEnabled = sgSorting.add(new BoolSetting.Builder()
Expand Down Expand Up @@ -324,11 +346,34 @@ private void onTickPost(TickEvent.Post event) {
}
}

// Anti Drop

@EventHandler
private void onDropItems(DropItemsEvent event) {
if (antiDropOverrideBind.get().isPressed()) return;
if (antiDropItems.get().contains(event.itemStack.getItem())) event.cancel();
}

@EventHandler
private void onInteractEntity(InteractEntityEvent event) {
if (!antiItemFrame.get() || antiDropOverrideBind.get().isPressed()) return;
if (!(event.entity instanceof ItemFrameEntity)) return;

Item item = mc.player.getStackInHand(event.hand).getItem();
if (antiDropItems.get().contains(item)) event.cancel();
}

@EventHandler
private void onInteractBlock(InteractBlockEvent event) {
if (!antiItemFrame.get() || antiDropOverrideBind.get().isPressed()) return;
if (event.hand != Hand.MAIN_HAND) return;
Block block = mc.world.getBlockState(event.result.getBlockPos()).getBlock();
if (!(block instanceof DecoratedPotBlock)) return;

Item item = mc.player.getStackInHand(event.hand).getItem();
if (antiDropItems.get().contains(item)) event.cancel();
}

// XCarry

@EventHandler
Expand Down