summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsk89q <the.sk89q@gmail.com>2011-01-07 14:01:37 -0800
committersk89q <the.sk89q@gmail.com>2011-01-07 14:01:37 -0800
commit6d6668aaeb785b204e53e67d68261207e66c9230 (patch)
treecf9a9716bd4bf2832a6f998394e2ff6c67ceefa1
parenteb2cc2da4a435052d4053c7102081cf702e88c22 (diff)
downloadcraftbukkit-6d6668aaeb785b204e53e67d68261207e66c9230.tar
craftbukkit-6d6668aaeb785b204e53e67d68261207e66c9230.tar.gz
craftbukkit-6d6668aaeb785b204e53e67d68261207e66c9230.tar.lz
craftbukkit-6d6668aaeb785b204e53e67d68261207e66c9230.tar.xz
craftbukkit-6d6668aaeb785b204e53e67d68261207e66c9230.zip
Implemented World.spawnBoat(), added CraftMappable interface that defines a method to get an org.bukkit.craftbukkit.CraftEntity from implementing net.minecart.server.Entity entities, changed CraftWorld.toCraftEntity() to use this new interface for boats and minecarts.
-rw-r--r--src/main/java/net/minecraft/server/EntityBoat.java10
-rw-r--r--src/main/java/net/minecraft/server/EntityMinecart.java12
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftMappable.java16
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftWorld.java19
4 files changed, 44 insertions, 13 deletions
diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java
index 528b1817..92412d95 100644
--- a/src/main/java/net/minecraft/server/EntityBoat.java
+++ b/src/main/java/net/minecraft/server/EntityBoat.java
@@ -4,6 +4,8 @@ import java.util.List;
import org.bukkit.Location;
import org.bukkit.craftbukkit.CraftBoat;
+import org.bukkit.craftbukkit.CraftEntity;
+import org.bukkit.craftbukkit.CraftMappable;
import org.bukkit.craftbukkit.CraftMinecart;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.event.Event.Type;
@@ -13,9 +15,9 @@ import org.bukkit.event.vehicle.VehicleEnterEvent;
import org.bukkit.event.vehicle.VehicleEntityCollisionEvent;
import org.bukkit.event.vehicle.VehicleMoveEvent;
-public class EntityBoat extends Entity {
+public class EntityBoat extends Entity implements CraftMappable {
- public CraftBoat boat;
+ private CraftBoat boat;
public int a;
public int b;
@@ -27,6 +29,10 @@ public class EntityBoat extends Entity {
private double ak;
private double al;
+ public CraftEntity getCraftEntity() {
+ return boat;
+ }
+
public EntityBoat(World world) {
super(world);
a = 0;
diff --git a/src/main/java/net/minecraft/server/EntityMinecart.java b/src/main/java/net/minecraft/server/EntityMinecart.java
index a590fa2c..5b5437f0 100644
--- a/src/main/java/net/minecraft/server/EntityMinecart.java
+++ b/src/main/java/net/minecraft/server/EntityMinecart.java
@@ -4,15 +4,17 @@ import java.util.List;
import org.bukkit.Location;
import org.bukkit.Vector;
+import org.bukkit.craftbukkit.CraftEntity;
+import org.bukkit.craftbukkit.CraftMappable;
import org.bukkit.craftbukkit.CraftMinecart;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.event.Event.Type;
import org.bukkit.event.vehicle.*;
public class EntityMinecart extends Entity
- implements IInventory {
+ implements IInventory, CraftMappable {
- public CraftMinecart minecart;
+ private CraftMinecart minecart;
private ItemStack ak[];
public int a;
@@ -99,7 +101,11 @@ public class EntityMinecart extends Entity
private double derailedZ = 0.5;
private double flyingX = 0.94999998807907104;
private double flyingY = 0.94999998807907104;
- private double flyingZ = 0.94999998807907104;
+ private double flyingZ = 0.94999998807907104;
+
+ public CraftEntity getCraftEntity() {
+ return minecart;
+ }
public EntityMinecart(World world) {
super(world);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftMappable.java b/src/main/java/org/bukkit/craftbukkit/CraftMappable.java
new file mode 100644
index 00000000..9bcc4b99
--- /dev/null
+++ b/src/main/java/org/bukkit/craftbukkit/CraftMappable.java
@@ -0,0 +1,16 @@
+package org.bukkit.craftbukkit;
+
+/**
+ * Indicates that an object has a method to get its CraftBukkit-equivalent
+ * CraftEntity object from its Minecraft net.minecraft.server.Entity object.
+ *
+ * @author sk89q
+ */
+public interface CraftMappable {
+ /**
+ * Gets the CraftEntity version.
+ *
+ * @return
+ */
+ public CraftEntity getCraftEntity();
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index b236c2ca..fb6d67f6 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -7,6 +7,7 @@ import java.util.Map;
import net.minecraft.server.EntityMinecart;
import java.util.Random;
+import net.minecraft.server.EntityBoat;
import net.minecraft.server.EntityEgg;
import net.minecraft.server.EntityLiving;
import net.minecraft.server.EntityPlayerMP;
@@ -18,6 +19,7 @@ import net.minecraft.server.WorldServer;
import net.minecraft.server.WorldGenTrees;
import org.bukkit.Arrow;
import org.bukkit.Block;
+import org.bukkit.Boat;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Minecart;
@@ -144,6 +146,13 @@ public class CraftWorld implements World {
return new CraftPoweredMinecart(world.getServer(), minecart);
}
+ public Boat spawnBoat(Location loc) {
+ EntityBoat boat =
+ new EntityBoat(world, loc.getX(), loc.getY(), loc.getZ());
+ world.a(boat);
+ return new CraftBoat(world.getServer(), boat);
+ }
+
public boolean generateTree(Location loc) {
WorldGenTrees treeGen = new WorldGenTrees();
return treeGen.a(world, rand,
@@ -165,18 +174,12 @@ public class CraftWorld implements World {
return new CraftPlayer(world.getServer(), (EntityPlayerMP)entity);
} else if (entity instanceof EntitySnowball) {
return new CraftSnowball(world.getServer(), (EntitySnowball)entity);
- } else if (entity instanceof EntityMinecart) {
- EntityMinecart minecart = (EntityMinecart)entity;
- if (minecart.minecart != null) {
- return minecart.minecart;
- }
-
- return CraftMinecart.getCraftMinecart(world.getServer(),
- (EntityMinecart)entity);
} else if (entity instanceof EntityPlayer) {
return new CraftHumanEntity(world.getServer(), (EntityPlayer)entity);
} else if (entity instanceof EntityLiving) {
return new CraftLivingEntity(world.getServer(), (EntityLiving)entity);
+ } else if (entity instanceof CraftMappable) {
+ return ((CraftMappable)entity).getCraftEntity();
} else {
return null;
}