Fixed insane fall damage (entities reset on death)

This commit is contained in:
Dinnerbone 2010-12-30 20:34:26 +00:00
parent a063036210
commit a9191c24b3
6 changed files with 59 additions and 12 deletions

View File

@ -81,17 +81,19 @@ public class NetServerHandler extends NetHandler
// CraftBukkit start // CraftBukkit start
Location from = new Location(player.getWorld(), g, h, i, e.v, e.w); Location from = new Location(player.getWorld(), g, h, i, e.v, e.w);
Location to = player.getLocation(); Location to = player.getLocation();
PlayerMoveEvent event = new PlayerMoveEvent(Type.PLAYER_MOVE, player, from, to); if (!from.equals(to)) {
server.getPluginManager().callEvent(event); PlayerMoveEvent event = new PlayerMoveEvent(Type.PLAYER_MOVE, player, from, to);
server.getPluginManager().callEvent(event);
from = event.getFrom(); from = event.getFrom();
to = event.isCancelled() ? from : event.getTo(); to = event.isCancelled() ? from : event.getTo();
e.p = to.getX(); e.p = to.getX();
e.q = to.getY(); e.q = to.getY();
e.r = to.getZ(); e.r = to.getZ();
e.v = to.getYaw(); e.v = to.getYaw();
e.w = to.getPitch(); e.w = to.getPitch();
}
// CraftBukkit end // CraftBukkit end
if (j) { if (j) {
@ -481,6 +483,7 @@ public class NetServerHandler extends NetHandler
return; return;
} else { } else {
e = d.f.d(e); e = d.f.d(e);
player.setHandle(e); // CraftBukkit
return; return;
} }
} }

View File

@ -8,7 +8,7 @@ import org.bukkit.World;
public class CraftEntity implements org.bukkit.Entity { public class CraftEntity implements org.bukkit.Entity {
protected final CraftServer server; protected final CraftServer server;
private final Entity entity; private Entity entity;
public CraftEntity(final CraftServer server, final Entity entity) { public CraftEntity(final CraftServer server, final Entity entity) {
this.server = server; this.server = server;
@ -35,6 +35,10 @@ public class CraftEntity implements org.bukkit.Entity {
return entity; return entity;
} }
public void setHandle(final Entity entity) {
this.entity = entity;
}
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (obj == null) { if (obj == null) {

View File

@ -7,7 +7,7 @@ import org.bukkit.HumanEntity;
import org.bukkit.ItemStack; import org.bukkit.ItemStack;
public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
private final EntityPlayer entity; private EntityPlayer entity;
public CraftHumanEntity(final CraftServer server, final EntityPlayer entity) { public CraftHumanEntity(final CraftServer server, final EntityPlayer entity) {
super(server, entity); super(server, entity);
@ -29,6 +29,11 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
return entity; return entity;
} }
public void setHandle(final EntityPlayer entity) {
super.setHandle((EntityPlayer)entity);
this.entity = entity;
}
@Override @Override
public String toString() { public String toString() {
return "CraftHumanEntity{" + "id=" + getEntityID() + "name=" + getName() + '}'; return "CraftHumanEntity{" + "id=" + getEntityID() + "name=" + getName() + '}';

View File

@ -1,11 +1,12 @@
package org.bukkit.craftbukkit; package org.bukkit.craftbukkit;
import net.minecraft.server.Entity;
import net.minecraft.server.EntityLiving; import net.minecraft.server.EntityLiving;
import org.bukkit.LivingEntity; import org.bukkit.LivingEntity;
public class CraftLivingEntity extends CraftEntity implements LivingEntity { public class CraftLivingEntity extends CraftEntity implements LivingEntity {
private final EntityLiving entity; private EntityLiving entity;
public CraftLivingEntity(final CraftServer server, final EntityLiving entity) { public CraftLivingEntity(final CraftServer server, final EntityLiving entity) {
super(server, entity); super(server, entity);
@ -29,6 +30,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return entity; return entity;
} }
public void setHandle(final EntityLiving entity) {
super.setHandle((Entity)entity);
this.entity = entity;
}
@Override @Override
public String toString() { public String toString() {
return "CraftLivingEntity{" + "id=" + getEntityID() + '}'; return "CraftLivingEntity{" + "id=" + getEntityID() + '}';

View File

@ -1,6 +1,7 @@
package org.bukkit.craftbukkit; package org.bukkit.craftbukkit;
import net.minecraft.server.EntityPlayer;
import net.minecraft.server.EntityPlayerMP; import net.minecraft.server.EntityPlayerMP;
import net.minecraft.server.Packet3Chat; import net.minecraft.server.Packet3Chat;
import org.bukkit.Location; import org.bukkit.Location;
@ -24,6 +25,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
} }
public void setHandle(final EntityPlayerMP entity) { public void setHandle(final EntityPlayerMP entity) {
super.setHandle((EntityPlayer)entity);
this.entity = entity; this.entity = entity;
} }
@ -40,4 +42,26 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
public String toString() { public String toString() {
return "CraftPlayer{" + "name=" + getName() + '}'; 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;
}
} }

View File

@ -70,6 +70,11 @@ public class CraftWorld implements World {
return world; return world;
} }
@Override
public String toString() {
return "CraftWorld";
}
private final class ChunkCoordinate { private final class ChunkCoordinate {
public final int x; public final int x;
public final int z; public final int z;