summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsnowleo <schneeleo@gmail.com>2011-06-27 11:46:57 +0200
committersnowleo <schneeleo@gmail.com>2011-06-27 11:46:57 +0200
commit8f32d66e0301fe2d6d8903edf972dc8ddf146db0 (patch)
treeb04428504e7f23089575029360a834c6daa713c0
parent1c11ab0957e2132528dd4ad69564217345fa8cfe (diff)
downloadEssentials-8f32d66e0301fe2d6d8903edf972dc8ddf146db0.tar
Essentials-8f32d66e0301fe2d6d8903edf972dc8ddf146db0.tar.gz
Essentials-8f32d66e0301fe2d6d8903edf972dc8ddf146db0.tar.lz
Essentials-8f32d66e0301fe2d6d8903edf972dc8ddf146db0.tar.xz
Essentials-8f32d66e0301fe2d6d8903edf972dc8ddf146db0.zip
Another fix to /spawnmob
-rw-r--r--Essentials/src/com/earth2me/essentials/Mob.java102
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandspawnmob.java38
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)
{