diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 5fd00d21c71..50ef0723c6f 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -282,9 +282,9 @@ private void registerListeners(PluginManager pm) { 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 @@ private void registerListeners(PluginManager pm) { 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 00000000000..a5b0d04c77f --- /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(); + } + } + } +}