summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftWorld.java30
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;
}
}