Persist PlayerDeathEvent values. Fixes BUKKIT-1521

This commit is contained in:
feildmaster 2012-04-14 00:24:51 -05:00
parent e8b6eb717a
commit 1dcb39074d
2 changed files with 16 additions and 3 deletions

View file

@ -687,6 +687,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
firstPlayed = data.getLong("firstPlayed"); firstPlayed = data.getLong("firstPlayed");
lastPlayed = data.getLong("lastPlayed"); 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"); 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("firstPlayed", getFirstPlayed());
data.setLong("lastPlayed", System.currentTimeMillis()); data.setLong("lastPlayed", System.currentTimeMillis());
} }

View file

@ -316,7 +316,6 @@ public class CraftEventFactory {
org.bukkit.World world = entity.getWorld(); org.bukkit.World world = entity.getWorld();
Bukkit.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
// TODO: Possibly a way to persist this incase of disconnect
victim.keepLevel = event.getKeepLevel(); victim.keepLevel = event.getKeepLevel();
victim.newLevel = event.getNewLevel(); victim.newLevel = event.getNewLevel();
victim.newTotalExp = event.getNewTotalExp(); victim.newTotalExp = event.getNewTotalExp();
@ -329,8 +328,7 @@ public class CraftEventFactory {
if (stack instanceof CraftItemStack) { if (stack instanceof CraftItemStack) {
// Use the internal item to preserve possible data. // Use the internal item to preserve possible data.
victim.a(((CraftItemStack) stack).getHandle(), 0.0f); victim.a(((CraftItemStack) stack).getHandle(), 0.0f);
} } else {
else {
world.dropItemNaturally(entity.getLocation(), stack); world.dropItemNaturally(entity.getLocation(), stack);
} }
} }