diff options
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java | 15 | ||||
-rw-r--r-- | src/main/java/org/bukkit/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 c6410726..1a605880 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 03bc3827..c1bb8b36 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); } } |