summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDinnerbone <dinnerbone@dinnerbone.com>2010-12-30 20:34:26 +0000
committerDinnerbone <dinnerbone@dinnerbone.com>2010-12-30 20:34:26 +0000
commita9191c24b333d3c6bb395b92a3a12edec06e78a7 (patch)
tree4e1c8c0327524304494a71bcc1d60f30ea39d078
parenta06303621022b97cbf19d3fb2754781c18152d1a (diff)
downloadcraftbukkit-a9191c24b333d3c6bb395b92a3a12edec06e78a7.tar
craftbukkit-a9191c24b333d3c6bb395b92a3a12edec06e78a7.tar.gz
craftbukkit-a9191c24b333d3c6bb395b92a3a12edec06e78a7.tar.lz
craftbukkit-a9191c24b333d3c6bb395b92a3a12edec06e78a7.tar.xz
craftbukkit-a9191c24b333d3c6bb395b92a3a12edec06e78a7.zip
Fixed insane fall damage (entities reset on death)
-rw-r--r--src/net/minecraft/server/NetServerHandler.java21
-rw-r--r--src/org/bukkit/craftbukkit/CraftEntity.java6
-rw-r--r--src/org/bukkit/craftbukkit/CraftHumanEntity.java7
-rw-r--r--src/org/bukkit/craftbukkit/CraftLivingEntity.java8
-rw-r--r--src/org/bukkit/craftbukkit/CraftPlayer.java24
-rw-r--r--src/org/bukkit/craftbukkit/CraftWorld.java5
6 files changed, 59 insertions, 12 deletions
diff --git a/src/net/minecraft/server/NetServerHandler.java b/src/net/minecraft/server/NetServerHandler.java
index 02ac31d7..1168a6df 100644
--- a/src/net/minecraft/server/NetServerHandler.java
+++ b/src/net/minecraft/server/NetServerHandler.java
@@ -81,17 +81,19 @@ public class NetServerHandler extends NetHandler
// CraftBukkit start
Location from = new Location(player.getWorld(), g, h, i, e.v, e.w);
Location to = player.getLocation();
- PlayerMoveEvent event = new PlayerMoveEvent(Type.PLAYER_MOVE, player, from, to);
- server.getPluginManager().callEvent(event);
+ if (!from.equals(to)) {
+ PlayerMoveEvent event = new PlayerMoveEvent(Type.PLAYER_MOVE, player, from, to);
+ server.getPluginManager().callEvent(event);
- from = event.getFrom();
- to = event.isCancelled() ? from : event.getTo();
+ from = event.getFrom();
+ to = event.isCancelled() ? from : event.getTo();
- e.p = to.getX();
- e.q = to.getY();
- e.r = to.getZ();
- e.v = to.getYaw();
- e.w = to.getPitch();
+ e.p = to.getX();
+ e.q = to.getY();
+ e.r = to.getZ();
+ e.v = to.getYaw();
+ e.w = to.getPitch();
+ }
// CraftBukkit end
if (j) {
@@ -481,6 +483,7 @@ public class NetServerHandler extends NetHandler
return;
} else {
e = d.f.d(e);
+ player.setHandle(e); // CraftBukkit
return;
}
}
diff --git a/src/org/bukkit/craftbukkit/CraftEntity.java b/src/org/bukkit/craftbukkit/CraftEntity.java
index 2a2f2392..efbb7f28 100644
--- a/src/org/bukkit/craftbukkit/CraftEntity.java
+++ b/src/org/bukkit/craftbukkit/CraftEntity.java
@@ -8,7 +8,7 @@ import org.bukkit.World;
public class CraftEntity implements org.bukkit.Entity {
protected final CraftServer server;
- private final Entity entity;
+ private Entity entity;
public CraftEntity(final CraftServer server, final Entity entity) {
this.server = server;
@@ -35,6 +35,10 @@ public class CraftEntity implements org.bukkit.Entity {
return entity;
}
+ public void setHandle(final Entity entity) {
+ this.entity = entity;
+ }
+
@Override
public boolean equals(Object obj) {
if (obj == null) {
diff --git a/src/org/bukkit/craftbukkit/CraftHumanEntity.java b/src/org/bukkit/craftbukkit/CraftHumanEntity.java
index 1152bc62..b03f0967 100644
--- a/src/org/bukkit/craftbukkit/CraftHumanEntity.java
+++ b/src/org/bukkit/craftbukkit/CraftHumanEntity.java
@@ -7,7 +7,7 @@ import org.bukkit.HumanEntity;
import org.bukkit.ItemStack;
public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
- private final EntityPlayer entity;
+ private EntityPlayer entity;
public CraftHumanEntity(final CraftServer server, final EntityPlayer entity) {
super(server, entity);
@@ -29,6 +29,11 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
return entity;
}
+ public void setHandle(final EntityPlayer entity) {
+ super.setHandle((EntityPlayer)entity);
+ this.entity = entity;
+ }
+
@Override
public String toString() {
return "CraftHumanEntity{" + "id=" + getEntityID() + "name=" + getName() + '}';
diff --git a/src/org/bukkit/craftbukkit/CraftLivingEntity.java b/src/org/bukkit/craftbukkit/CraftLivingEntity.java
index 2c70d10a..8f753386 100644
--- a/src/org/bukkit/craftbukkit/CraftLivingEntity.java
+++ b/src/org/bukkit/craftbukkit/CraftLivingEntity.java
@@ -1,11 +1,12 @@
package org.bukkit.craftbukkit;
+import net.minecraft.server.Entity;
import net.minecraft.server.EntityLiving;
import org.bukkit.LivingEntity;
public class CraftLivingEntity extends CraftEntity implements LivingEntity {
- private final EntityLiving entity;
+ private EntityLiving entity;
public CraftLivingEntity(final CraftServer server, final EntityLiving entity) {
super(server, entity);
@@ -29,6 +30,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return entity;
}
+ public void setHandle(final EntityLiving entity) {
+ super.setHandle((Entity)entity);
+ this.entity = entity;
+ }
+
@Override
public String toString() {
return "CraftLivingEntity{" + "id=" + getEntityID() + '}';
diff --git a/src/org/bukkit/craftbukkit/CraftPlayer.java b/src/org/bukkit/craftbukkit/CraftPlayer.java
index f10d920c..a8a368dc 100644
--- a/src/org/bukkit/craftbukkit/CraftPlayer.java
+++ b/src/org/bukkit/craftbukkit/CraftPlayer.java
@@ -1,6 +1,7 @@
package org.bukkit.craftbukkit;
+import net.minecraft.server.EntityPlayer;
import net.minecraft.server.EntityPlayerMP;
import net.minecraft.server.Packet3Chat;
import org.bukkit.Location;
@@ -24,6 +25,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
}
public void setHandle(final EntityPlayerMP entity) {
+ super.setHandle((EntityPlayer)entity);
this.entity = entity;
}
@@ -40,4 +42,26 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public String toString() {
return "CraftPlayer{" + "name=" + getName() + '}';
}
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final CraftPlayer other = (CraftPlayer) obj;
+ if ((this.getName() == null) ? (other.getName() != null) : !this.getName().equals(other.getName())) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 5;
+ hash = 97 * hash + (this.getName() != null ? this.getName().hashCode() : 0);
+ return hash;
+ }
}
diff --git a/src/org/bukkit/craftbukkit/CraftWorld.java b/src/org/bukkit/craftbukkit/CraftWorld.java
index e3d691f8..5e6d20d7 100644
--- a/src/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/org/bukkit/craftbukkit/CraftWorld.java
@@ -70,6 +70,11 @@ public class CraftWorld implements World {
return world;
}
+ @Override
+ public String toString() {
+ return "CraftWorld";
+ }
+
private final class ChunkCoordinate {
public final int x;
public final int z;