From 3ffcaae1227a452696383e872cd03eb804fbaa4a Mon Sep 17 00:00:00 2001 From: TfT_02 Date: Wed, 17 Apr 2013 15:19:50 +0200 Subject: [PATCH] Track items dropped by a player, prevent them from being party shared --- Changelog.txt | 1 + .../java/com/gmail/nossr50/listeners/PlayerListener.java | 5 ++++- src/main/java/com/gmail/nossr50/mcMMO.java | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Changelog.txt b/Changelog.txt index 9d6eed93a..c646cefec 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -29,6 +29,7 @@ Version 1.4.06-dev ! ExperienceAPI methods will now throw InvalidSkillException if the skill name passed in is invalid. ! Changed default value for recently-hurt cooldown between teleports, this is also fully configurable now ! Changed the amount of info messages in the console when enabling/disabling, enable Verbose_Logging to enable them again + ! Items dropped by players are now being tracked and are not being shared with party members Version 1.4.05 + Added option to allow refreshing of chunks after block-breaking abilities. (Disabled by default) diff --git a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java index 40c0959e8..5c0ebff49 100644 --- a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java @@ -164,6 +164,7 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPlayerDropItemEvent(PlayerDropItemEvent event) { Player player = event.getPlayer(); + Item drop = event.getItemDrop(); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); if (mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER) || mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER)) { @@ -171,6 +172,8 @@ public class PlayerListener implements Listener { return; } + drop.setMetadata(mcMMO.droppedItemKey, mcMMO.metadataValue); + SkillUtils.removeAbilityBuff(event.getItemDrop().getItemStack()); } @@ -234,7 +237,7 @@ public class PlayerListener implements Listener { McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - if (mcMMOPlayer.inParty() && ItemUtils.isShareable(dropStack)) { + if (!drop.hasMetadata(mcMMO.droppedItemKey) && mcMMOPlayer.inParty() && ItemUtils.isShareable(dropStack)) { event.setCancelled(ShareHandler.handleItemShare(drop, mcMMOPlayer)); if (event.isCancelled()) { diff --git a/src/main/java/com/gmail/nossr50/mcMMO.java b/src/main/java/com/gmail/nossr50/mcMMO.java index f12f3e23e..9cd536ee5 100644 --- a/src/main/java/com/gmail/nossr50/mcMMO.java +++ b/src/main/java/com/gmail/nossr50/mcMMO.java @@ -93,6 +93,7 @@ public class mcMMO extends JavaPlugin { public final static String tntMetadataKey = "mcMMO: Tracked TNT"; public final static String customNameKey = "mcMMO: Custom Name"; public final static String customVisibleKey = "mcMMO: Name Visibility"; + public final static String droppedItemKey = "mcMMO: Tracked Item"; public static FixedMetadataValue metadataValue;