diff --git a/src/main/java/ch/njol/skript/expressions/ExprEntities.java b/src/main/java/ch/njol/skript/expressions/ExprEntities.java index ade34b0a..005b8ffd 100644 --- a/src/main/java/ch/njol/skript/expressions/ExprEntities.java +++ b/src/main/java/ch/njol/skript/expressions/ExprEntities.java @@ -21,20 +21,6 @@ package ch.njol.skript.expressions; -import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.event.Event; -import org.eclipse.jdt.annotation.Nullable; - import ch.njol.skript.Skript; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; @@ -56,6 +42,21 @@ import ch.njol.util.coll.iterator.CheckedIterator; import ch.njol.util.coll.iterator.NonNullIterator; +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.eclipse.jdt.annotation.Nullable; + /** * @author Peter Güttinger */ @@ -169,9 +170,23 @@ public boolean isLoopOf(final String s) { return false; } - @SuppressWarnings("null") + private final static boolean getNearbyEntities = Skript.methodExists(World.class, "getNearbyEntities", Location.class, double.class, double.class, double.class); + + @Nullable + private final static Collection getNearbyEntities(final Location l, final double x, final double y, final double z) { + if(getNearbyEntities) { + return l.getWorld().getNearbyEntities(l, x, y, z); + } else { + // The NMS method will be included in next LifeSpigot release. + // https://www.lifemcserver.com/forum/konular/lifespigot-sueruemue-yayinlandi-lifespigot-1-7-x-1-8-x.2369/ + // Return empty collection for servers not using life spigot and 1.8. + return Collections.emptyList(); + } + } + @Override @Nullable + @SuppressWarnings("null") public Iterator iterator(final Event e) { if (matchedPattern >= 2) { final Location l; @@ -191,7 +206,7 @@ public Iterator iterator(final Event e) { if (n == null) return null; final double d = n.doubleValue(); - final Collection es = l.getWorld().getNearbyEntities(l, d, d, d); + final Collection es = getNearbyEntities(l, d, d, d); final double radiusSquared = d * d * Skript.EPSILON_MULT; final EntityData[] ts = types.getAll(e); return new CheckedIterator(es.iterator(), new NullableChecker() { diff --git a/src/main/java/ch/njol/skript/util/Color.java b/src/main/java/ch/njol/skript/util/Color.java index e619ea73..8bfc086c 100644 --- a/src/main/java/ch/njol/skript/util/Color.java +++ b/src/main/java/ch/njol/skript/util/Color.java @@ -175,12 +175,7 @@ public final static byte getData(final DyeColor color) { if(getWoolData) { return color.getWoolData(); } - try { - return color.getData(); - } catch(final Throwable tw) { - getWoolData = !getWoolData; - return getData(color); - } + return color.getData(); } }