diff options
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/CraftWorld.java | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 26abc175..e4cc45aa 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -531,7 +531,13 @@ public class CraftWorld implements World { } @SuppressWarnings("unchecked") + @Deprecated public <T extends Entity> Collection<T> getEntitiesByClass(Class<T>... classes) { + return (Collection<T>)getEntitiesByClasses(classes); + } + + @SuppressWarnings("unchecked") + public <T extends Entity> Collection<T> getEntitiesByClass(Class<T> clazz) { Collection<T> list = new ArrayList<T>(); for (Object entity: world.entityList) { @@ -544,9 +550,31 @@ public class CraftWorld implements World { Class<?> bukkitClass = bukkitEntity.getClass(); + if (clazz.isAssignableFrom(bukkitClass)) { + list.add((T) bukkitEntity); + } + } + } + + return list; + } + + public Collection<Entity> getEntitiesByClasses(Class<?>... classes) { + Collection<Entity> list = new ArrayList<Entity>(); + + for (Object entity: world.entityList) { + if (entity instanceof net.minecraft.server.Entity) { + Entity bukkitEntity = ((net.minecraft.server.Entity) entity).getBukkitEntity(); + + if (bukkitEntity == null) { + continue; + } + + Class<?> bukkitClass = bukkitEntity.getClass(); + for (Class<?> clazz : classes) { if (clazz.isAssignableFrom(bukkitClass)) { - list.add((T) bukkitEntity); + list.add(bukkitEntity); break; } } |