diff options
-rw-r--r-- | Essentials/src/com/earth2me/essentials/Mob.java | 102 | ||||
-rw-r--r-- | Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java | 38 |
2 files changed, 50 insertions, 90 deletions
diff --git a/Essentials/src/com/earth2me/essentials/Mob.java b/Essentials/src/com/earth2me/essentials/Mob.java index c7b0ca320..f5e1aea3d 100644 --- a/Essentials/src/com/earth2me/essentials/Mob.java +++ b/Essentials/src/com/earth2me/essentials/Mob.java @@ -4,68 +4,52 @@ import java.util.HashMap; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; +import org.bukkit.Location; import org.bukkit.Server; -import org.bukkit.entity.Entity; +import org.bukkit.entity.CreatureType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; public enum Mob { - CHICKEN("Chicken", Enemies.FRIENDLY), - COW("Cow", Enemies.FRIENDLY), - CREEPER("Creeper", Enemies.ENEMY), - GHAST("Ghast", Enemies.ENEMY), - GIANT("Giant", "GiantZombie", Enemies.ENEMY), - PIG("Pig", Enemies.FRIENDLY), - PIGZOMB("PigZombie", Enemies.NEUTRAL), - SHEEP("Sheep", Enemies.FRIENDLY, ""), - SKELETON("Skeleton", Enemies.ENEMY), - SLIME("Slime", Enemies.ENEMY), - SPIDER("Spider", Enemies.ENEMY), - SQUID("Squid", Enemies.FRIENDLY), - ZOMBIE("Zombie", Enemies.ENEMY), - MONSTER("Monster", Enemies.ENEMY), - WOLF("Wolf", Enemies.NEUTRAL); + CHICKEN("Chicken", Enemies.FRIENDLY, CreatureType.CHICKEN), + COW("Cow", Enemies.FRIENDLY, CreatureType.COW), + CREEPER("Creeper", Enemies.ENEMY, CreatureType.CREEPER), + GHAST("Ghast", Enemies.ENEMY, CreatureType.GHAST), + GIANT("Giant", Enemies.ENEMY, CreatureType.GIANT), + PIG("Pig", Enemies.FRIENDLY, CreatureType.PIG), + PIGZOMB("PigZombie", Enemies.NEUTRAL, CreatureType.PIG_ZOMBIE), + SHEEP("Sheep", Enemies.FRIENDLY, "", CreatureType.SHEEP), + SKELETON("Skeleton", Enemies.ENEMY, CreatureType.SKELETON), + SLIME("Slime", Enemies.ENEMY, CreatureType.SLIME), + SPIDER("Spider", Enemies.ENEMY, CreatureType.SPIDER), + SQUID("Squid", Enemies.FRIENDLY, CreatureType.SQUID), + ZOMBIE("Zombie", Enemies.ENEMY, CreatureType.ZOMBIE), + MONSTER("Monster", Enemies.ENEMY, CreatureType.MONSTER), + WOLF("Wolf", Enemies.NEUTRAL, CreatureType.WOLF); public static final Logger logger = Logger.getLogger("Minecraft"); - private Mob(String n, Enemies en, String s) + private Mob(String n, Enemies en, String s, CreatureType type) { - this.s = s; + this.suffix = s; this.name = n; - this.craftClass = n; - this.entityClass = n; this.type = en; + this.bukkitType = type; } - private Mob(String n, Enemies en) + private Mob(String n, Enemies en, CreatureType type) { this.name = n; - this.craftClass = n; - this.entityClass = n; this.type = en; + this.bukkitType = type; } - private Mob(String n, String ec, Enemies en) - { - this.name = n; - this.craftClass = n; - this.entityClass = ec; - this.type = en; - } - - private Mob(String n, String ec, String cc, Enemies en) - { - this.name = n; - this.entityClass = ec; - this.craftClass = cc; - this.type = en; - } - public String s = "s"; - public String name; - public Enemies type; - private String entityClass; - private String craftClass; + public String suffix = "s"; + final public String name; + final public Enemies type; + final private CreatureType bukkitType; private static final Map<String, Mob> hashMap = new HashMap<String, Mob>(); static @@ -76,25 +60,16 @@ public enum Mob } } - @SuppressWarnings( - { - "unchecked", "CallToThreadDumpStack" - }) - public Entity spawn(Player player, Server server) throws MobException + public LivingEntity spawn(final Player player, final Server server, final Location loc) throws MobException { - try - { - return player.getWorld().spawn(player.getLocation(), (Class<Entity>)ClassLoader.getSystemClassLoader().loadClass("org.bukkit.craftbukkit.entity.Craft" + craftClass)); - //WorldServer world = ((org.bukkit.craftbukkit.CraftWorld)player.getWorld()).getHandle(); - //Constructor<CraftEntity> craft = (Constructor<CraftEntity>)ClassLoader.getSystemClassLoader().loadClass("org.bukkit.craftbukkit.entity.Craft" + craftClass).getConstructors()[0]; - //Constructor<Entity> entity = (Constructor<Entity>)ClassLoader.getSystemClassLoader().loadClass("net.minecraft.server.Entity" + entityClass).getConstructors()[0]; - //return craft.newInstance((CraftServer)server, entity.newInstance(world)); - } - catch (Exception ex) + + final LivingEntity entity = player.getWorld().spawnCreature(loc, this.bukkitType); + if (entity == null) { - logger.log(Level.WARNING, Util.i18n("unableToSpawnMob"), ex); - throw new MobException(ex); + logger.log(Level.WARNING, Util.i18n("unableToSpawnMob")); + throw new MobException(); } + return entity; } @@ -104,22 +79,17 @@ public enum Mob NEUTRAL("neutral"), ENEMY("enemy"); - private Enemies(String t) + private Enemies(final String t) { this.type = t; } - protected String type; + final protected String type; } public static class MobException extends Exception { private static final long serialVersionUID = 1L; - - private MobException(Exception ex) - { - super(ex); - } } public static Mob fromName(String n) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java b/Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java index 47edc831e..0f0b838b4 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java @@ -73,16 +73,6 @@ public class Commandspawnmob extends EssentialsCommand return; } charge(user); - WorldServer world = ((CraftWorld)user.getWorld()).getHandle(); - try - { - spawnedMob = mob.spawn(user, server); - } - catch (MobException e) - { - user.sendMessage(Util.i18n("unableToSpawnMob")); - return; - } int[] ignore = { 8, 9 @@ -95,8 +85,16 @@ public class Commandspawnmob extends EssentialsCommand loc.setY(loc.getY() + 1); block = user.getWorld().getBlockAt(loc); } - spawnedMob.teleport(loc); - //world.addEntity((CraftEntity)spawnedMob).getHandle()); + + try + { + spawnedMob = mob.spawn(user, server, loc); + } + catch (MobException e) + { + user.sendMessage(Util.i18n("unableToSpawnMob")); + return; + } if (mountType != null) { @@ -108,17 +106,14 @@ public class Commandspawnmob extends EssentialsCommand } try { - spawnedMount = mobMount.spawn(user, server); + spawnedMount = mobMount.spawn(user, server, loc); } catch (MobException e) { user.sendMessage(Util.i18n("unableToSpawnMob")); return; } - spawnedMount.teleport(spawnedMob); spawnedMob.setPassenger(spawnedMount); - //spawnedMount.getHandle().setPassengerOf(spawnedMob.getHandle()); - //world.addEntity(spawnedMount.getHandle()); } if (mobData != null) { @@ -142,24 +137,19 @@ public class Commandspawnmob extends EssentialsCommand { for (int i = 1; i < mobCount; i++) { - spawnedMob = mob.spawn(user, server); - spawnedMob.teleport(loc); - //world.addEntity(spawnedMob.getHandle()); + spawnedMob = mob.spawn(user, server, loc); if (mobMount != null) { try { - spawnedMount = mobMount.spawn(user, server); + spawnedMount = mobMount.spawn(user, server, loc); } catch (MobException e) { user.sendMessage(Util.i18n("unableToSpawnMob")); return; } - spawnedMount.teleport(spawnedMob); spawnedMob.setPassenger(spawnedMount); - //spawnedMount.getHandle().setPassengerOf(spawnedMob.getHandle()); - //world.addEntity(spawnedMount.getHandle()); } if (mobData != null) { @@ -170,7 +160,7 @@ public class Commandspawnmob extends EssentialsCommand changeMobData(mobMount.name, spawnedMount, mountData, user); } } - user.sendMessage(args[1] + " " + mob.name.toLowerCase() + mob.s + Util.i18n("spawned")); + user.sendMessage(args[1] + " " + mob.name.toLowerCase() + mob.suffix + Util.i18n("spawned")); } catch (MobException e1) { |