From 6274cb7536b944e7a3ea0df852c69e81dbe24348 Mon Sep 17 00:00:00 2001 From: coralpapa Date: Sun, 11 Aug 2019 11:49:15 -0700 Subject: [PATCH] Allow hoppers to collect unlocked drops (#583) Closes #576 --- .../GriefPrevention/BlockEventHandler.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/ryanhamshire/GriefPrevention/BlockEventHandler.java b/src/main/java/me/ryanhamshire/GriefPrevention/BlockEventHandler.java index da31134..9c447f3 100644 --- a/src/main/java/me/ryanhamshire/GriefPrevention/BlockEventHandler.java +++ b/src/main/java/me/ryanhamshire/GriefPrevention/BlockEventHandler.java @@ -21,11 +21,13 @@ package me.ryanhamshire.GriefPrevention; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.UUID; import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.OfflinePlayer; import org.bukkit.Tag; import org.bukkit.World; import org.bukkit.World.Environment; @@ -882,8 +884,8 @@ public class BlockEventHandler implements Listener } @EventHandler(ignoreCancelled = true) - public void onInventoryPickupItem (InventoryPickupItemEvent event) - { + public void onInventoryPickupItem (InventoryPickupItemEvent event) + { //prevent hoppers from picking-up items dropped by players on death InventoryHolder holder = event.getInventory().getHolder(); @@ -891,12 +893,23 @@ public class BlockEventHandler implements Listener { Item item = event.getItem(); List data = item.getMetadata("GP_ITEMOWNER"); - //if this is marked as belonging to a player if(data != null && data.size() > 0) { - //don't allow the pickup - event.setCancelled(true); + UUID ownerID = (UUID)data.get(0).value(); + + //has that player unlocked his drops? + OfflinePlayer owner = GriefPrevention.instance.getServer().getOfflinePlayer(ownerID); + if(owner.isOnline()) + { + PlayerData playerData = this.dataStore.getPlayerData(ownerID); + + //if locked, don't allow pickup + if(!playerData.dropsAreUnlocked) + { + event.setCancelled(true); + } + } } } }