From 98e062f0cf57299c9ae4c403e03f48751a32a0df Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Sun, 4 Dec 2011 12:10:02 +0000 Subject: [PATCH] Fixed a few player-respawn issues. This should resolve BUKKIT-28 (Dupe bug), BUKKIT-29 (Poisons lasting), and BUKKIT-46 (XP resetting) --- .../java/net/minecraft/server/EntityPlayer.java | 15 +++++++++++++++ .../server/ServerConfigurationManager.java | 10 +--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java index c23c5fa566..a84a6f4f35 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -630,5 +630,20 @@ public class EntityPlayer extends EntityHuman implements ICrafting { public String toString() { return super.toString() + "(" + this.name + " at " + this.locX + "," + this.locY + "," + this.locZ + ")"; } + + public void reset() { + this.health = 20; + this.fireTicks = 0; + this.fallDistance = 0; + this.foodData = new FoodMetaData(); + this.expLevel = 0; + this.expTotal = 0; + this.exp = 0; + this.deathTicks = 0; + effects.clear(); + this.activeContainer = this.defaultContainer; + this.cf = -1; // lastSentExp. Find line: "if (this.expTotal != this.XXXX) {" + this.giveExp(this.newExp); + } // CraftBukkit end } diff --git a/src/main/java/net/minecraft/server/ServerConfigurationManager.java b/src/main/java/net/minecraft/server/ServerConfigurationManager.java index 4a0c61e731..ad1c702c99 100644 --- a/src/main/java/net/minecraft/server/ServerConfigurationManager.java +++ b/src/main/java/net/minecraft/server/ServerConfigurationManager.java @@ -262,15 +262,7 @@ public class ServerConfigurationManager { this.cserver.getPluginManager().callEvent(respawnEvent); location = respawnEvent.getRespawnLocation(); - entityplayer.health = 20; - entityplayer.fireTicks = 0; - entityplayer.fallDistance = 0; - entityplayer.foodData = new FoodMetaData(); - entityplayer.expLevel = 0; - entityplayer.expTotal = 0; - entityplayer.exp = 0; - entityplayer.deathTicks = 0; - entityplayer.d(entityplayer.newExp); + entityplayer.reset(); } else { location.setWorld(this.server.getWorldServer(i).getWorld()); }