From ee64f7c4ff8e86d4c710a2758ce74f27e6293472 Mon Sep 17 00:00:00 2001 From: md678685 Date: Sat, 27 Aug 2016 03:27:52 +0100 Subject: [PATCH] [Fix] Remove vanished players from server list ping (#837) (#841) Add listener for ServerListPingEvent and remove any vanished players. Also refactored EssentialsPluginListener serverListener to pluginListener --- .../com/earth2me/essentials/Essentials.java | 9 ++++-- .../essentials/EssentialsServerListener.java | 30 +++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 Essentials/src/com/earth2me/essentials/EssentialsServerListener.java diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 5fd00d21c..50ef0723c 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -282,9 +282,9 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { LOGGER.log(Level.INFO, "Registering Listeners"); } - final EssentialsPluginListener serverListener = new EssentialsPluginListener(this); - pm.registerEvents(serverListener, this); - confList.add(serverListener); + final EssentialsPluginListener pluginListener = new EssentialsPluginListener(this); + pm.registerEvents(pluginListener, this); + confList.add(pluginListener); final EssentialsPlayerListener playerListener = new EssentialsPlayerListener(this); pm.registerEvents(playerListener, this); @@ -307,6 +307,9 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { final EssentialsWorldListener worldListener = new EssentialsWorldListener(this); pm.registerEvents(worldListener, this); + final EssentialsServerListener serverListener = new EssentialsServerListener(this); + pm.registerEvents(serverListener, this); + pm.registerEvents(tntListener, this); jails.resetListener(); diff --git a/Essentials/src/com/earth2me/essentials/EssentialsServerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsServerListener.java new file mode 100644 index 000000000..a5b0d04c7 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/EssentialsServerListener.java @@ -0,0 +1,30 @@ +package com.earth2me.essentials; + +import net.ess3.api.IEssentials; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.server.ServerListPingEvent; + +import java.util.Iterator; + + +public class EssentialsServerListener implements Listener { + private final transient IEssentials ess; + + public EssentialsServerListener(final IEssentials ess) { + this.ess = ess; + } + + @EventHandler(priority = EventPriority.LOWEST) + public void onServerListPing(final ServerListPingEvent event) { + Iterator iterator = event.iterator(); + while (iterator.hasNext()) { + Player player = iterator.next(); + if (ess.getUser(player).isVanished()) { + iterator.remove(); + } + } + } +}