Unregister unused events.

This commit is contained in:
KHobbits 2012-12-31 05:44:20 +00:00
parent 4cec7fe5c1
commit 8e3ee8576e
7 changed files with 92 additions and 43 deletions

View File

@ -50,6 +50,7 @@ import org.bukkit.command.PluginCommand;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.world.WorldLoadEvent; import org.bukkit.event.world.WorldLoadEvent;
@ -176,6 +177,8 @@ public class Essentials extends JavaPlugin implements IEssentials
itemDb = new ItemDb(this); itemDb = new ItemDb(this);
confList.add(itemDb); confList.add(itemDb);
execTimer.mark("Init(Worth/ItemDB)"); execTimer.mark("Init(Worth/ItemDB)");
jails = new Jails(this);
confList.add(jails);
reload(); reload();
} }
catch (YAMLException exception) catch (YAMLException exception)
@ -207,6 +210,39 @@ public class Essentials extends JavaPlugin implements IEssentials
backup = new Backup(this); backup = new Backup(this);
permissionsHandler = new PermissionsHandler(this, settings.useBukkitPermissions()); permissionsHandler = new PermissionsHandler(this, settings.useBukkitPermissions());
alternativeCommandsHandler = new AlternativeCommandsHandler(this); alternativeCommandsHandler = new AlternativeCommandsHandler(this);
timer = new EssentialsTimer(this);
getScheduler().scheduleSyncRepeatingTask(this, timer, 100, 100);
Economy.setEss(this);
execTimer.mark("RegHandler");
final MetricsStarter metricsStarter = new MetricsStarter(this);
if (metricsStarter.getStart() != null && metricsStarter.getStart() == true)
{
getScheduler().scheduleAsyncDelayedTask(this, metricsStarter, 1);
}
else if (metricsStarter.getStart() != null && metricsStarter.getStart() == false)
{
final MetricsListener metricsListener = new MetricsListener(this, metricsStarter);
pm.registerEvents(metricsListener, this);
}
final String timeroutput = execTimer.end();
if (getSettings().isDebug())
{
LOGGER.log(Level.INFO, "Essentials load " + timeroutput);
}
}
private void registerListeners(PluginManager pm) {
HandlerList.unregisterAll(this);
if (getSettings().isDebug())
{
LOGGER.log(Level.INFO, "Registering Listeners");
}
final EssentialsPluginListener serverListener = new EssentialsPluginListener(this); final EssentialsPluginListener serverListener = new EssentialsPluginListener(this);
pm.registerEvents(serverListener, this); pm.registerEvents(serverListener, this);
confList.add(serverListener); confList.add(serverListener);
@ -232,34 +268,9 @@ public class Essentials extends JavaPlugin implements IEssentials
final EssentialsWorldListener worldListener = new EssentialsWorldListener(this); final EssentialsWorldListener worldListener = new EssentialsWorldListener(this);
pm.registerEvents(worldListener, this); pm.registerEvents(worldListener, this);
//TODO: Check if this should be here, and not above before reload()
jails = new Jails(this);
confList.add(jails);
pm.registerEvents(tntListener, this); pm.registerEvents(tntListener, this);
timer = new EssentialsTimer(this); jails.resetListener();
getScheduler().scheduleSyncRepeatingTask(this, timer, 100, 100);
Economy.setEss(this);
execTimer.mark("RegListeners");
final MetricsStarter metricsStarter = new MetricsStarter(this);
if (metricsStarter.getStart() != null && metricsStarter.getStart() == true)
{
getScheduler().scheduleAsyncDelayedTask(this, metricsStarter, 1);
}
else if (metricsStarter.getStart() != null && metricsStarter.getStart() == false)
{
final MetricsListener metricsListener = new MetricsListener(this, metricsStarter);
pm.registerEvents(metricsListener, this);
}
final String timeroutput = execTimer.end();
if (getSettings().isDebug())
{
LOGGER.log(Level.INFO, "Essentials load " + timeroutput);
}
} }
@Override @Override
@ -291,6 +302,9 @@ public class Essentials extends JavaPlugin implements IEssentials
} }
i18n.updateLocale(settings.getLocale()); i18n.updateLocale(settings.getLocale());
final PluginManager pm = getServer().getPluginManager();
registerListeners(pm);
} }
@Override @Override

View File

@ -28,8 +28,7 @@ public class EssentialsBlockListener implements Listener
return; return;
} }
final User user = ess.getUser(event.getPlayer()); final User user = ess.getUser(event.getPlayer());
final boolean unlimitedForUser = user.hasUnlimited(is); if (user.hasUnlimited(is) && user.getGameMode() == GameMode.SURVIVAL)
if (unlimitedForUser && user.getGameMode() == GameMode.SURVIVAL)
{ {
ess.scheduleSyncDelayedTask( ess.scheduleSyncDelayedTask(
new Runnable() new Runnable()

View File

@ -76,8 +76,18 @@ public class EssentialsPlayerListener implements Listener
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onPlayerMove(final PlayerMoveEvent event) public void onPlayerMove(final PlayerMoveEvent event)
{ {
if ((!ess.getSettings().cancelAfkOnMove() && !ess.getSettings().getFreezeAfkPlayers()) if (!ess.getSettings().cancelAfkOnMove() && !ess.getSettings().getFreezeAfkPlayers())
|| event.getFrom().getBlockX() == event.getTo().getBlockX() {
event.getHandlers().unregister(ess);
if (ess.getSettings().isDebug())
{
LOGGER.log(Level.INFO, "Unregistering move listener");
}
return;
}
if (event.getFrom().getBlockX() == event.getTo().getBlockX()
&& event.getFrom().getBlockZ() == event.getTo().getBlockZ() && event.getFrom().getBlockZ() == event.getTo().getBlockZ()
&& event.getFrom().getBlockY() == event.getTo().getBlockY()) && event.getFrom().getBlockY() == event.getTo().getBlockY())
{ {

View File

@ -44,6 +44,10 @@ public class Jails extends AsyncStorageObjectHolder<com.earth2me.essentials.sett
final PluginManager pluginManager = ess.getServer().getPluginManager(); final PluginManager pluginManager = ess.getServer().getPluginManager();
final JailListener blockListener = new JailListener(); final JailListener blockListener = new JailListener();
pluginManager.registerEvents(blockListener, ess); pluginManager.registerEvents(blockListener, ess);
if (ess.getSettings().isDebug())
{
LOGGER.log(Level.INFO, "Registering Jail listener");
}
} }
@Override @Override
@ -55,16 +59,24 @@ public class Jails extends AsyncStorageObjectHolder<com.earth2me.essentials.sett
@Override @Override
public void finishRead() public void finishRead()
{ {
if (enabled == false && getCount() > 0) checkRegister();
{
registerListeners();
}
} }
@Override @Override
public void finishWrite() public void finishWrite()
{ {
if (enabled == false) checkRegister();
}
public void resetListener()
{
enabled = false;
checkRegister();
}
private void checkRegister()
{
if (enabled == false && getCount() > 0)
{ {
registerListeners(); registerListeners();
} }

View File

@ -32,6 +32,7 @@ public class SignBlockListener implements Listener
{ {
if (ess.getSettings().areSignsDisabled()) if (ess.getSettings().areSignsDisabled())
{ {
event.getHandlers().unregister(ess);
return; return;
} }
@ -80,6 +81,7 @@ public class SignBlockListener implements Listener
{ {
if (ess.getSettings().areSignsDisabled()) if (ess.getSettings().areSignsDisabled())
{ {
event.getHandlers().unregister(ess);
return; return;
} }
User user = ess.getUser(event.getPlayer()); User user = ess.getUser(event.getPlayer());
@ -105,6 +107,7 @@ public class SignBlockListener implements Listener
{ {
if (ess.getSettings().areSignsDisabled()) if (ess.getSettings().areSignsDisabled())
{ {
event.getHandlers().unregister(ess);
return; return;
} }
@ -129,6 +132,7 @@ public class SignBlockListener implements Listener
{ {
if (ess.getSettings().areSignsDisabled()) if (ess.getSettings().areSignsDisabled())
{ {
event.getHandlers().unregister(ess);
return; return;
} }
@ -162,6 +166,7 @@ public class SignBlockListener implements Listener
{ {
if (ess.getSettings().areSignsDisabled()) if (ess.getSettings().areSignsDisabled())
{ {
event.getHandlers().unregister(ess);
return; return;
} }
@ -190,6 +195,7 @@ public class SignBlockListener implements Listener
{ {
if (ess.getSettings().areSignsDisabled()) if (ess.getSettings().areSignsDisabled())
{ {
event.getHandlers().unregister(ess);
return; return;
} }
@ -218,6 +224,7 @@ public class SignBlockListener implements Listener
{ {
if (ess.getSettings().areSignsDisabled()) if (ess.getSettings().areSignsDisabled())
{ {
event.getHandlers().unregister(ess);
return; return;
} }
@ -248,6 +255,7 @@ public class SignBlockListener implements Listener
{ {
if (ess.getSettings().areSignsDisabled()) if (ess.getSettings().areSignsDisabled())
{ {
event.getHandlers().unregister(ess);
return; return;
} }

View File

@ -24,6 +24,7 @@ public class SignEntityListener implements Listener
{ {
if (ess.getSettings().areSignsDisabled()) if (ess.getSettings().areSignsDisabled())
{ {
event.getHandlers().unregister(ess);
return; return;
} }
@ -53,6 +54,7 @@ public class SignEntityListener implements Listener
{ {
if (ess.getSettings().areSignsDisabled()) if (ess.getSettings().areSignsDisabled())
{ {
event.getHandlers().unregister(ess);
return; return;
} }

View File

@ -25,11 +25,15 @@ public class SignPlayerListener implements Listener
//Right clicking signs with a block in hand, can now fire cancelled events. //Right clicking signs with a block in hand, can now fire cancelled events.
//This is because when the block place is cancelled (for example not enough space for the block to be placed), //This is because when the block place is cancelled (for example not enough space for the block to be placed),
//the event will be marked as cancelled, thus preventing 30% of sign purchases. //the event will be marked as cancelled, thus preventing 30% of sign purchases.
@EventHandler(priority = EventPriority.LOW) @EventHandler(priority = EventPriority.LOW)
public void onPlayerInteract(final PlayerInteractEvent event) public void onPlayerInteract(final PlayerInteractEvent event)
{ {
if (ess.getSettings().areSignsDisabled() || (event.getAction() != Action.RIGHT_CLICK_BLOCK && event.getAction() != Action.RIGHT_CLICK_AIR)) if (ess.getSettings().areSignsDisabled())
{
event.getHandlers().unregister(ess);
return;
}
if (event.getAction() != Action.RIGHT_CLICK_BLOCK && event.getAction() != Action.RIGHT_CLICK_AIR)
{ {
return; return;
} }
@ -62,10 +66,10 @@ public class SignPlayerListener implements Listener
final int mat = block.getTypeId(); final int mat = block.getTypeId();
if (mat == Material.SIGN_POST.getId() || mat == Material.WALL_SIGN.getId()) if (mat == Material.SIGN_POST.getId() || mat == Material.WALL_SIGN.getId())
{ {
final Sign csign = (Sign)block.getState(); final String csign = ((Sign)block.getState()).getLine(0);
for (EssentialsSign sign : ess.getSettings().enabledSigns()) for (EssentialsSign sign : ess.getSettings().enabledSigns())
{ {
if (csign.getLine(0).equalsIgnoreCase(sign.getSuccessName())) if (csign.equalsIgnoreCase(sign.getSuccessName()))
{ {
sign.onSignInteract(block, event.getPlayer(), ess); sign.onSignInteract(block, event.getPlayer(), ess);
event.setCancelled(true); event.setCancelled(true);