Skip to content

Commit e0e8d44

Browse files
tanyaofeiJRoy
andauthored
Prevent dragging items outside of invsee (#5902)
Fixes #3065 --------- Co-authored-by: JRoy <10731363+JRoy@users.noreply.github.com>
1 parent 2ccfad1 commit e0e8d44

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.bukkit.event.inventory.ClickType;
4444
import org.bukkit.event.inventory.InventoryClickEvent;
4545
import org.bukkit.event.inventory.InventoryCloseEvent;
46+
import org.bukkit.event.inventory.InventoryDragEvent;
4647
import org.bukkit.event.inventory.InventoryType;
4748
import org.bukkit.event.player.AsyncPlayerChatEvent;
4849
import org.bukkit.event.player.PlayerBucketEmptyEvent;
@@ -995,6 +996,26 @@ private boolean isPreventBindingHat(User user, PlayerInventory inventory) {
995996
return false;
996997
}
997998

999+
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
1000+
public void onInventoryDragEvent(final InventoryDragEvent event) {
1001+
final InventoryViewProvider provider = ess.provider(InventoryViewProvider.class);
1002+
final Inventory top = provider.getTopInventory(event.getView());
1003+
if (top.getType() != InventoryType.PLAYER) {
1004+
return;
1005+
}
1006+
final User user = ess.getUser((Player) event.getWhoClicked());
1007+
if (!user.isInvSee()) {
1008+
return;
1009+
}
1010+
1011+
for (int slot : event.getNewItems().keySet()) {
1012+
if (Inventories.isBottomInventorySlot(slot)) {
1013+
event.setCancelled(true);
1014+
break;
1015+
}
1016+
}
1017+
}
1018+
9981019
@EventHandler(priority = EventPriority.MONITOR)
9991020
public void onInventoryCloseEvent(final InventoryCloseEvent event) {
10001021
Player refreshPlayer = null;

Essentials/src/main/java/com/earth2me/essentials/craftbukkit/Inventories.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,4 +424,8 @@ public static boolean isContortedSlot(final int slot) {
424424
private static boolean isArmorSlot(final int slot) {
425425
return slot == HELM_SLOT || slot == CHEST_SLOT || slot == LEG_SLOT || slot == BOOT_SLOT;
426426
}
427+
428+
public static boolean isBottomInventorySlot(final int slot) {
429+
return slot > 35;
430+
}
427431
}

0 commit comments

Comments
 (0)