From 6893e0761911389ca0dad36dc91fbd35000685c0 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sat, 15 Feb 2025 02:54:02 +0100 Subject: [PATCH] Prevent armor manipulation with InventoryClick and Drag events Implemented handling for InventoryClick and InventoryDrag events to block interactions with armor slots. This ensures that players cannot equip or remove armor through inventory actions, maintaining consistency with existing item interaction restrictions. --- .../events/InventoryItemInteractionEvent.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/java/com/alttd/ctf/events/InventoryItemInteractionEvent.java b/src/main/java/com/alttd/ctf/events/InventoryItemInteractionEvent.java index 8465c6a..7dcafe3 100644 --- a/src/main/java/com/alttd/ctf/events/InventoryItemInteractionEvent.java +++ b/src/main/java/com/alttd/ctf/events/InventoryItemInteractionEvent.java @@ -3,6 +3,9 @@ package com.alttd.ctf.events; import org.bukkit.Material; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryDragEvent; +import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.PlayerAttemptPickupItemEvent; import org.bukkit.event.player.PlayerDropItemEvent; @@ -26,4 +29,20 @@ public class InventoryItemInteractionEvent implements Listener { event.setCancelled(true); } + @EventHandler + public void onInventoryClick(InventoryClickEvent event) { + if (event.getSlotType() != InventoryType.SlotType.ARMOR) { + return; + } + event.setCancelled(true); + } + + @EventHandler + public void onInventoryDrag(InventoryDragEvent event) { + if (event.getRawSlots().stream().noneMatch(slot -> slot >= 5 && slot <= 8)) { // Slot numbers 5-8 for armor + return; + } + event.setCancelled(true); + } + }