summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDinnerbone <dinnerbone@dinnerbone.com>2010-12-30 04:30:12 +0000
committerDinnerbone <dinnerbone@dinnerbone.com>2010-12-30 04:30:12 +0000
commitc57530392c8dfa3b5534df9b4b13d1b6cdbb3088 (patch)
treeac7d02759c2a1502ede75f6c50bb723950fe1195
parent193bf0136737b4379091a65ad1f5bfaae9e8ec63 (diff)
downloadcraftbukkit-c57530392c8dfa3b5534df9b4b13d1b6cdbb3088.tar
craftbukkit-c57530392c8dfa3b5534df9b4b13d1b6cdbb3088.tar.gz
craftbukkit-c57530392c8dfa3b5534df9b4b13d1b6cdbb3088.tar.lz
craftbukkit-c57530392c8dfa3b5534df9b4b13d1b6cdbb3088.tar.xz
craftbukkit-c57530392c8dfa3b5534df9b4b13d1b6cdbb3088.zip
Implemented entities
-rw-r--r--src/net/minecraft/server/NetServerHandler.java2
-rw-r--r--src/org/bukkit/craftbukkit/CraftEntity.java68
-rw-r--r--src/org/bukkit/craftbukkit/CraftHumanEntity.java36
-rw-r--r--src/org/bukkit/craftbukkit/CraftLivingEntity.java36
-rw-r--r--src/org/bukkit/craftbukkit/CraftPlayer.java30
-rw-r--r--src/org/bukkit/craftbukkit/CraftServer.java4
6 files changed, 155 insertions, 21 deletions
diff --git a/src/net/minecraft/server/NetServerHandler.java b/src/net/minecraft/server/NetServerHandler.java
index 1fb2ac92..a745b030 100644
--- a/src/net/minecraft/server/NetServerHandler.java
+++ b/src/net/minecraft/server/NetServerHandler.java
@@ -395,7 +395,7 @@ public class NetServerHandler extends NetHandler
if (event.isCancelled()) return;
s = event.getMessage();
CraftPlayer player = (CraftPlayer)event.getPlayer();
- EntityPlayerMP e = player.getEntity();
+ EntityPlayerMP e = player.getHandle();
// CraftBukkit stop
if (s.toLowerCase().startsWith("/me ")) {
diff --git a/src/org/bukkit/craftbukkit/CraftEntity.java b/src/org/bukkit/craftbukkit/CraftEntity.java
new file mode 100644
index 00000000..71aa013c
--- /dev/null
+++ b/src/org/bukkit/craftbukkit/CraftEntity.java
@@ -0,0 +1,68 @@
+
+package org.bukkit.craftbukkit;
+
+import net.minecraft.server.Entity;
+import net.minecraft.server.WorldServer;
+import org.bukkit.Location;
+import org.bukkit.World;
+
+public class CraftEntity implements org.bukkit.Entity {
+ protected final CraftServer server;
+ private final Entity entity;
+
+ public CraftEntity(final CraftServer server, final Entity entity) {
+ this.server = server;
+ this.entity = entity;
+ }
+
+ public Location getLocation() {
+ return new Location(getWorld(), entity.p, entity.q, entity.r, entity.v, entity.w);
+ }
+
+ public World getWorld() {
+ return server.getWorld((WorldServer)entity.l);
+ }
+
+ public void teleportTo(Location location) {
+ entity.b(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
+ }
+
+ public int getEntityID() {
+ return entity.g;
+ }
+
+ public Entity getHandle() {
+ return entity;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final CraftEntity other = (CraftEntity) obj;
+ if (this.server != other.server && (this.server == null || !this.server.equals(other.server))) {
+ return false;
+ }
+ if (this.entity != other.entity && (this.entity == null || !this.entity.equals(other.entity))) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 89 * hash + (this.server != null ? this.server.hashCode() : 0);
+ hash = 89 * hash + (this.entity != null ? this.entity.hashCode() : 0);
+ return hash;
+ }
+
+ @Override
+ public String toString() {
+ return "CraftEntity{" + "id=" + getEntityID() + '}';
+ }
+}
diff --git a/src/org/bukkit/craftbukkit/CraftHumanEntity.java b/src/org/bukkit/craftbukkit/CraftHumanEntity.java
new file mode 100644
index 00000000..1152bc62
--- /dev/null
+++ b/src/org/bukkit/craftbukkit/CraftHumanEntity.java
@@ -0,0 +1,36 @@
+
+package org.bukkit.craftbukkit;
+
+import net.minecraft.server.EntityPlayer;
+import net.minecraft.server.InventoryPlayer;
+import org.bukkit.HumanEntity;
+import org.bukkit.ItemStack;
+
+public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
+ private final EntityPlayer entity;
+
+ public CraftHumanEntity(final CraftServer server, final EntityPlayer entity) {
+ super(server, entity);
+ this.entity = entity;
+ }
+
+ public ItemStack getSelectedItem() {
+ // TODO: Implement inventories
+ final InventoryPlayer inventory = entity.an;
+ return new ItemStack(inventory.e().c, inventory.e().a);
+ }
+
+ public String getName() {
+ return entity.aw;
+ }
+
+ @Override
+ public EntityPlayer getHandle() {
+ return 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
new file mode 100644
index 00000000..2c70d10a
--- /dev/null
+++ b/src/org/bukkit/craftbukkit/CraftLivingEntity.java
@@ -0,0 +1,36 @@
+
+package org.bukkit.craftbukkit;
+
+import net.minecraft.server.EntityLiving;
+import org.bukkit.LivingEntity;
+
+public class CraftLivingEntity extends CraftEntity implements LivingEntity {
+ private final EntityLiving entity;
+
+ public CraftLivingEntity(final CraftServer server, final EntityLiving entity) {
+ super(server, entity);
+ this.entity = entity;
+ }
+
+ public int getHealth() {
+ return entity.ba;
+ }
+
+ public void setHealth(int health) {
+ if ((health < 0) || (health > 20)) {
+ throw new IllegalArgumentException("Health must be between 0 and 20");
+ }
+
+ entity.ba = health;
+ }
+
+ @Override
+ public EntityLiving getHandle() {
+ return 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 f42bd637..d69fd3b2 100644
--- a/src/org/bukkit/craftbukkit/CraftPlayer.java
+++ b/src/org/bukkit/craftbukkit/CraftPlayer.java
@@ -2,19 +2,16 @@
package org.bukkit.craftbukkit;
import net.minecraft.server.EntityPlayerMP;
-import org.bukkit.Location;
import org.bukkit.Player;
-import org.bukkit.World;
-public class CraftPlayer implements Player {
- private EntityPlayerMP player;
+public class CraftPlayer extends CraftHumanEntity implements Player {
+ private final EntityPlayerMP entity;
private final String name;
- private final CraftServer server;
- public CraftPlayer(CraftServer serv, EntityPlayerMP handle) {
- player = handle;
- name = player.aw;
- server = serv;
+ public CraftPlayer(CraftServer server, EntityPlayerMP entity) {
+ super(server, entity);
+ this.entity = entity;
+ name = entity.aw;
}
public String getName() {
@@ -22,19 +19,12 @@ public class CraftPlayer implements Player {
}
public boolean isOnline() {
- return server.server.g(name);
+ return server.getHandle().g(name);
}
- public Location getLocation() {
- return new Location(getWorld(), player.p, player.q, player.r, player.v, player.w);
- }
-
- public World getWorld() {
- return server.getWorld(player.b.e);
- }
-
- public EntityPlayerMP getEntity() {
- return player;
+ @Override
+ public EntityPlayerMP getHandle() {
+ return entity;
}
@Override
diff --git a/src/org/bukkit/craftbukkit/CraftServer.java b/src/org/bukkit/craftbukkit/CraftServer.java
index db3f119b..34aca81e 100644
--- a/src/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/org/bukkit/craftbukkit/CraftServer.java
@@ -100,4 +100,8 @@ public final class CraftServer implements Server {
return result;
}
+
+ public ServerConfigurationManager getHandle() {
+ return server;
+ }
}