diff --git a/doc/changelog.md b/doc/changelog.md index a7c8a7a3d..76d52725d 100644 --- a/doc/changelog.md +++ b/doc/changelog.md @@ -1,3 +1,4 @@ +- v1.3.2.125 - address github issue #155, prevent double dropping of inventory. Hope this does not break anything :P - v1.3.2.124 - address github issue #154 - just remove tick 4, it's not that important anyways. And remove the blocklist spam :) - v1.3.2.122 - furthermore fix the uninstall routine - v1.3.2.121 - address github issue #131 - I think I found the bug! diff --git a/readme.md b/readme.md index afeea9889..8dc690ac7 100644 --- a/readme.md +++ b/readme.md @@ -85,7 +85,7 @@ Users tutorials : ## Changelog -- v1.3.2.124 - address github issue #154 - just remove tick 4, it's not that important anyways. And remove the blocklist spam :) +- v1.3.2.125 - address github issue #155, prevent double dropping of inventory. Hope this does not break anything :P - [read more](doc/changelog.md) *** diff --git a/src/net/slipcor/pvparena/arena/Arena.java b/src/net/slipcor/pvparena/arena/Arena.java index 774a33904..cf0189cbc 100644 --- a/src/net/slipcor/pvparena/arena/Arena.java +++ b/src/net/slipcor/pvparena/arena/Arena.java @@ -1387,6 +1387,7 @@ public void unKillPlayer(final Player player, final DamageCause cause, final Ent aPlayer.setArenaClass(aPlayer.getNextArenaClass()); if (aPlayer.getArenaClass() != null) { ArenaPlayer.givePlayerFightItems(this, aPlayer.get()); + aPlayer.setMayDropInventory(true); } aPlayer.setNextArenaClass(null); } diff --git a/src/net/slipcor/pvparena/arena/ArenaPlayer.java b/src/net/slipcor/pvparena/arena/ArenaPlayer.java index 20c906d23..7b47c9ae3 100644 --- a/src/net/slipcor/pvparena/arena/ArenaPlayer.java +++ b/src/net/slipcor/pvparena/arena/ArenaPlayer.java @@ -51,6 +51,7 @@ public class ArenaPlayer { private boolean telePass; private boolean ignoreAnnouncements; private boolean teleporting; + private boolean mayDropInventory; private Arena arena; private ArenaClass aClass; @@ -409,6 +410,7 @@ private void clearDump() { */ public void createState(final Player player) { state = new PlayerState(player); + mayDropInventory = true; } public boolean didValidSelection() { @@ -427,7 +429,7 @@ public void debugPrint() { } debug.i("------------------", name); debug.i("Player: " + name, name); - debug.i("telepass: " + telePass + " | chatting: " + debug.i("telepass: " + telePass + " | mayDropInv: " + mayDropInventory + " | chatting: " + publicChatting, name); debug.i("arena: " + (arena == null ? "null" : arena.getName()), name); debug.i("aClass: " + (aClass == null ? "null" : aClass.getName()), @@ -588,6 +590,10 @@ public boolean isTeleporting() { return teleporting; } + public boolean mayDropInventory() { + return this.mayDropInventory; + } + public Set getTempPermissions() { return tempPermissions; } @@ -792,6 +798,10 @@ public void setBackupScoreboardTeam(Team team) { backupBoardTeam = team; } + public void setMayDropInventory(boolean value) { + mayDropInventory = value; + } + public void setNextArenaClass(ArenaClass aClass) { this.naClass = aClass; } diff --git a/src/net/slipcor/pvparena/classes/PACheck.java b/src/net/slipcor/pvparena/classes/PACheck.java index e2f1f2dde..dbcdd8f15 100644 --- a/src/net/slipcor/pvparena/classes/PACheck.java +++ b/src/net/slipcor/pvparena/classes/PACheck.java @@ -577,7 +577,7 @@ public static void handlePlayerDeath(final Arena arena, player.getLastDamageCause()); arena.getDebugger().i("custom class active: " + arena.isCustomClassAlive()); - if (!arena.getArenaConfig().getBoolean(CFG.PLAYER_DROPSINVENTORY)) { + if (!arena.getArenaConfig().getBoolean(CFG.PLAYER_DROPSINVENTORY) || !ArenaPlayer.parsePlayer(player.getName()).mayDropInventory()) { event.getDrops().clear(); } if (doesRespawn diff --git a/src/net/slipcor/pvparena/managers/InventoryManager.java b/src/net/slipcor/pvparena/managers/InventoryManager.java index d91caae1c..f4dfca80a 100644 --- a/src/net/slipcor/pvparena/managers/InventoryManager.java +++ b/src/net/slipcor/pvparena/managers/InventoryManager.java @@ -129,6 +129,7 @@ public static List drop(final Player player) { player.getWorld().dropItemNaturally(player.getLocation(), is); } player.getInventory().clear(); + ap.setMayDropInventory(false); return returned; }