From 79b394a91403149ef0dd2c92e4189d20e343900a Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot <noreply+git-craftbukkit@papermc.io> Date: Fri, 7 Jan 2011 14:01:37 -0800 Subject: [PATCH] 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. By: sk89q <the.sk89q@gmail.com> --- .../org/bukkit/craftbukkit/CraftMappable.java | 16 ++++++++++++++++ .../org/bukkit/craftbukkit/CraftWorld.java | 19 +++++++++++-------- 2 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 paper-server/src/main/java/org/bukkit/craftbukkit/CraftMappable.java diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftMappable.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftMappable.java new file mode 100644 index 0000000000..9bcc4b9936 --- /dev/null +++ b/paper-server/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/paper-server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index b236c2ca67..fb6d67f6ff 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/paper-server/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; }