diff --git a/src/main/java/com/massivecraft/factions/SavageFactions.java b/src/main/java/com/massivecraft/factions/SavageFactions.java index 001eccc7..dfd13183 100644 --- a/src/main/java/com/massivecraft/factions/SavageFactions.java +++ b/src/main/java/com/massivecraft/factions/SavageFactions.java @@ -58,7 +58,8 @@ public class SavageFactions extends MPlugin { // a green light to use the api. public static boolean startupFinished = false; - + // Persistence related + public static ArrayList playersFlying = new ArrayList(); public boolean PlaceholderApi; // Commands @@ -185,6 +186,11 @@ public class SavageFactions extends MPlugin { faction.addFPlayer(fPlayer); } } + + playersFlying.clear(); + for (FPlayer fPlayer : FPlayers.getInstance().getAllFPlayers()) { + playersFlying.add(fPlayer); + } UtilFly.run(); Board.getInstance().load(); diff --git a/src/main/java/com/massivecraft/factions/util/UtilFly.java b/src/main/java/com/massivecraft/factions/util/UtilFly.java index 3797d5ea..f8d5f578 100644 --- a/src/main/java/com/massivecraft/factions/util/UtilFly.java +++ b/src/main/java/com/massivecraft/factions/util/UtilFly.java @@ -14,14 +14,18 @@ import java.util.Iterator; public class UtilFly { + public static ArrayList playersFlying = SavageFactions.playersFlying; + public static void run() { if (!SavageFactions.plugin.getConfig().getBoolean("enable-faction-flight")) return; + playersFlying.clear(); Bukkit.getScheduler().scheduleSyncRepeatingTask(SavageFactions.plugin, () -> { - for (FPlayer fp : FPlayers.getInstance().getAllFPlayers()) { - if (fp.isFlying()) fp.checkIfNearbyEnemies(); + for (FPlayer fp : playersFlying) { + if (fp != null) + fp.checkIfNearbyEnemies(); } }, 0, SavageFactions.plugin.getConfig().getInt("fly-task-interval", 10)); } @@ -34,6 +38,11 @@ public class UtilFly { fp.getPlayer().setFlying(fly); fp.setFlying(fly); + if (fly) { + playersFlying.add(fp); + } else { + playersFlying.remove(fp); + } if (!silent) { if (!damage) { @@ -98,3 +107,4 @@ public class UtilFly { } + diff --git a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java index fe3edfa6..0a42e86e 100644 --- a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java +++ b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java @@ -1070,6 +1070,7 @@ public abstract class MemoryFPlayer implements FPlayer { if (e == null) { continue; } + if (e instanceof Player) { Player eplayer = (((Player) e).getPlayer()); if (eplayer == null) {