From 911030d481d54367ac66459d5370628191c2c03b Mon Sep 17 00:00:00 2001 From: darkkeks Date: Fri, 13 Dec 2024 08:15:57 +0500 Subject: Prevent placing procted items in item frames (#1073) --- .../skyblocker/skyblock/item/ItemProtection.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/main/java') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/ItemProtection.java b/src/main/java/de/hysky/skyblocker/skyblock/item/ItemProtection.java index dd9b2157..b3caf11d 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/ItemProtection.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/ItemProtection.java @@ -14,15 +14,23 @@ import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.fabricmc.fabric.api.event.player.UseEntityCallback; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.option.KeyBinding; import net.minecraft.command.CommandRegistryAccess; +import net.minecraft.entity.Entity; +import net.minecraft.entity.decoration.ItemFrameEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; import net.minecraft.util.Identifier; +import net.minecraft.util.hit.EntityHitResult; +import net.minecraft.world.World; +import org.jetbrains.annotations.Nullable; import org.lwjgl.glfw.GLFW; public class ItemProtection { @@ -37,6 +45,7 @@ public class ItemProtection { "key.categories.skyblocker" )); ClientCommandRegistrationCallback.EVENT.register(ItemProtection::registerCommand); + UseEntityCallback.EVENT.register(ItemProtection::onEntityInteract); } public static boolean isItemProtected(ItemStack stack) { @@ -122,4 +131,14 @@ public class ItemProtection { handleKeyPressed(heldItem); } } + + private static ActionResult onEntityInteract(PlayerEntity playerEntity, World world, Hand hand, Entity entity, @Nullable EntityHitResult entityHitResult) { + if (!Utils.isOnSkyblock() || !world.isClient) return ActionResult.PASS; + if (entity instanceof ItemFrameEntity itemFrame && itemFrame.getHeldItemStack().isEmpty()) { + if (isItemProtected(playerEntity.getStackInHand(hand)) || HotbarSlotLock.isLocked(playerEntity.getInventory().selectedSlot)) { + return ActionResult.FAIL; + } + } + return ActionResult.PASS; + } } -- cgit