From 1dcb39074d42e73ebb50127ee7b97705340b0dc7 Mon Sep 17 00:00:00 2001 From: feildmaster Date: Sat, 14 Apr 2012 00:24:51 -0500 Subject: [PATCH] Persist PlayerDeathEvent values. Fixes BUKKIT-1521 --- .../bukkit/craftbukkit/entity/CraftPlayer.java | 15 +++++++++++++++ .../craftbukkit/event/CraftEventFactory.java | 4 +--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index c64107261b..1a60588092 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -687,6 +687,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { firstPlayed = data.getLong("firstPlayed"); lastPlayed = data.getLong("lastPlayed"); } + + if (data.hasKey("newExp")) { + EntityPlayer handle = getHandle(); + handle.newExp = data.getInt("newExp"); + handle.newTotalExp = data.getInt("newTotalExp"); + handle.newLevel = data.getInt("newLevel"); + handle.expToDrop = data.getInt("expToDrop"); + handle.keepLevel = data.getBoolean("keepLevel"); + } } } @@ -696,6 +705,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } NBTTagCompound data = nbttagcompound.getCompound("bukkit"); + EntityPlayer handle = getHandle(); + data.setInt("newExp", handle.newExp); + data.setInt("newTotalExp", handle.newTotalExp); + data.setInt("newLevel", handle.newLevel); + data.setInt("expToDrop", handle.expToDrop); + data.setBoolean("keepLevel", handle.keepLevel); data.setLong("firstPlayed", getFirstPlayed()); data.setLong("lastPlayed", System.currentTimeMillis()); } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index 03bc38276f..c1bb8b3689 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -316,7 +316,6 @@ public class CraftEventFactory { org.bukkit.World world = entity.getWorld(); Bukkit.getServer().getPluginManager().callEvent(event); - // TODO: Possibly a way to persist this incase of disconnect victim.keepLevel = event.getKeepLevel(); victim.newLevel = event.getNewLevel(); victim.newTotalExp = event.getNewTotalExp(); @@ -329,8 +328,7 @@ public class CraftEventFactory { if (stack instanceof CraftItemStack) { // Use the internal item to preserve possible data. victim.a(((CraftItemStack) stack).getHandle(), 0.0f); - } - else { + } else { world.dropItemNaturally(entity.getLocation(), stack); } }