diff options
| author | darkkeks <darkkeks@rambler.ru> | 2024-12-13 08:15:57 +0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-12 22:15:57 -0500 |
| commit | 911030d481d54367ac66459d5370628191c2c03b (patch) | |
| tree | 9751d2f1ee3e8803d07dfef4b1bdfdeb4f637d45 /src/main/java/de | |
| parent | 5badda586d737d2c02c8148b0111d9dbafffab83 (diff) | |
| download | Skyblocker-911030d481d54367ac66459d5370628191c2c03b.tar.gz Skyblocker-911030d481d54367ac66459d5370628191c2c03b.tar.bz2 Skyblocker-911030d481d54367ac66459d5370628191c2c03b.zip | |
Prevent placing procted items in item frames (#1073)
Diffstat (limited to 'src/main/java/de')
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/item/ItemProtection.java | 19 |
1 files changed, 19 insertions, 0 deletions
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; + } } |
