From b58b48bf04c6f52377fecd8cc5ad1e014cbc6fc8 Mon Sep 17 00:00:00 2001 From: Simon Chuu Date: Wed, 29 May 2019 02:06:51 -0400 Subject: [PATCH] Add Chunk Unload Event + Update bukkit api and bStats version --- .idea/PhantomSMP.iml | 2 ++ .idea/compiler.xml | 13 +++++++++ pom.xml | 4 +-- .../mc/phantomsmp/PhantomListener.java | 27 ++++++++++++++----- 4 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 .idea/PhantomSMP.iml create mode 100644 .idea/compiler.xml diff --git a/.idea/PhantomSMP.iml b/.idea/PhantomSMP.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/.idea/PhantomSMP.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..baaea04 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 8ad78db..0306467 100644 --- a/pom.xml +++ b/pom.xml @@ -28,13 +28,13 @@ org.bukkit bukkit - 1.13.1-R0.1-SNAPSHOT + 1.13.2-R0.1-SNAPSHOT provided org.bstats bstats-bukkit - 1.4 + 1.5 compile diff --git a/src/main/java/com/simonorj/mc/phantomsmp/PhantomListener.java b/src/main/java/com/simonorj/mc/phantomsmp/PhantomListener.java index e440388..39aaee1 100644 --- a/src/main/java/com/simonorj/mc/phantomsmp/PhantomListener.java +++ b/src/main/java/com/simonorj/mc/phantomsmp/PhantomListener.java @@ -17,6 +17,7 @@ import org.bukkit.event.player.PlayerBedEnterEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.world.ChunkLoadEvent; +import org.bukkit.event.world.ChunkUnloadEvent; import java.util.*; @@ -115,6 +116,13 @@ public class PhantomListener implements Listener { } } + private void removePhantom(Phantom phantom) { + Player p = phantomPlayerMap.remove(phantom); + if (p == null) + return; + playerPhantomMap.get(p).remove(phantom); + } + @EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(PlayerJoinEvent e) { playerPhantomMap.put(e.getPlayer(), new LinkedHashSet<>()); @@ -176,17 +184,22 @@ public class PhantomListener implements Listener { targeting((Phantom) ent, null, null); } + // Untrack phantoms in unloaded chunks + @EventHandler + public void onPhantomInUnloadedChunk(ChunkUnloadEvent e) { + if (e.getWorld().getEnvironment() != World.Environment.NORMAL) + return; + + for (Entity ent : e.getChunk().getEntities()) + if (ent instanceof Phantom) + removePhantom((Phantom) ent); + } + @EventHandler public void onPhantomDeath(EntityDeathEvent e) { if (!(e.getEntity() instanceof Phantom)) return; - Phantom phantom = (Phantom) e.getEntity(); - - Player p = phantomPlayerMap.remove(phantom); - if (p == null) - return; - - playerPhantomMap.get(p).remove(phantom); + removePhantom((Phantom) e.getEntity()); } }