Drop listeners for disabled triggers (overhead on very big servers)

This commit is contained in:
Mike Primm 2012-03-03 23:20:04 -06:00
parent 2e7fc84a9b
commit 0a52612dcf

View file

@ -647,11 +647,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
if((bt != btt.typeid) || (btt.data != w.getBlockAt(loc).getData())) { if((bt != btt.typeid) || (btt.data != w.getBlockAt(loc).getData())) {
String wn = BukkitWorld.normalizeWorldName(w.getName()); String wn = BukkitWorld.normalizeWorldName(w.getName());
sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
if((onblockfromto && btt.trigger.equals("blockfromto")) ||
(onblockphysics && btt.trigger.equals("blockphysics"))) {
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), btt.trigger); mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), btt.trigger);
//Log.info("trigger=" + btt.trigger + " before=" + btt.typeid + ", after=" + bt);
}
} }
} }
blocks_to_check = null; blocks_to_check = null;
@ -696,7 +692,22 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
private boolean onblockgrow; private boolean onblockgrow;
private void registerEvents() { private void registerEvents() {
Listener blockTrigger = new Listener() {
// To trigger rendering.
onplace = core.isTrigger("blockplaced");
onbreak = core.isTrigger("blockbreak");
onleaves = core.isTrigger("leavesdecay");
onburn = core.isTrigger("blockburn");
onblockform = core.isTrigger("blockformed");
onblockfade = core.isTrigger("blockfaded");
onblockspread = core.isTrigger("blockspread");
onblockfromto = core.isTrigger("blockfromto");
onblockphysics = core.isTrigger("blockphysics");
onpiston = core.isTrigger("pistonmoved");
onblockfade = core.isTrigger("blockfaded");
if(onplace) {
Listener placelistener = new Listener() {
@SuppressWarnings("unused") @SuppressWarnings("unused")
@EventHandler(priority=EventPriority.MONITOR) @EventHandler(priority=EventPriority.MONITOR)
public void onBlockPlace(BlockPlaceEvent event) { public void onBlockPlace(BlockPlaceEvent event) {
@ -705,11 +716,14 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
Location loc = event.getBlock().getLocation(); Location loc = event.getBlock().getLocation();
String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName()); String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName());
sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
if(onplace) {
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockplace"); mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockplace");
} }
};
pm.registerEvents(placelistener, this);
} }
if(onbreak) {
Listener breaklistener = new Listener() {
@SuppressWarnings("unused") @SuppressWarnings("unused")
@EventHandler(priority=EventPriority.MONITOR) @EventHandler(priority=EventPriority.MONITOR)
public void onBlockBreak(BlockBreakEvent event) { public void onBlockBreak(BlockBreakEvent event) {
@ -718,11 +732,14 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
Location loc = event.getBlock().getLocation(); Location loc = event.getBlock().getLocation();
String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName()); String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName());
sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
if(onbreak) {
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockbreak"); mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockbreak");
} }
};
pm.registerEvents(breaklistener, this);
} }
if(onleaves) {
Listener leaveslistener = new Listener() {
@SuppressWarnings("unused") @SuppressWarnings("unused")
@EventHandler(priority=EventPriority.MONITOR) @EventHandler(priority=EventPriority.MONITOR)
public void onLeavesDecay(LeavesDecayEvent event) { public void onLeavesDecay(LeavesDecayEvent event) {
@ -735,7 +752,12 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "leavesdecay"); mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "leavesdecay");
} }
} }
};
pm.registerEvents(leaveslistener, this);
}
if(onburn) {
Listener burnlistener = new Listener() {
@SuppressWarnings("unused") @SuppressWarnings("unused")
@EventHandler(priority=EventPriority.MONITOR) @EventHandler(priority=EventPriority.MONITOR)
public void onBlockBurn(BlockBurnEvent event) { public void onBlockBurn(BlockBurnEvent event) {
@ -748,59 +770,12 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockburn"); mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockburn");
} }
} }
};
@SuppressWarnings("unused") pm.registerEvents(burnlistener, this);
@EventHandler(priority=EventPriority.MONITOR)
public void onBlockForm(BlockFormEvent event) {
if(event.isCancelled())
return;
Location loc = event.getBlock().getLocation();
String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName());
sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
if(onblockform) {
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockform");
}
}
@SuppressWarnings("unused")
@EventHandler(priority=EventPriority.MONITOR)
public void onBlockFade(BlockFadeEvent event) {
if(event.isCancelled())
return;
Location loc = event.getBlock().getLocation();
String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName());
sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
if(onblockfade) {
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockfade");
}
}
@SuppressWarnings("unused")
@EventHandler(priority=EventPriority.MONITOR)
public void onBlockSpread(BlockSpreadEvent event) {
if(event.isCancelled())
return;
Location loc = event.getBlock().getLocation();
String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName());
sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
if(onblockspread) {
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockspread");
}
}
@SuppressWarnings("unused")
@EventHandler(priority=EventPriority.MONITOR)
public void onBlockFromTo(BlockFromToEvent event) {
if(event.isCancelled())
return;
Material m = event.getBlock().getType();
if((m != Material.WOOD_PLATE) && (m != Material.STONE_PLATE))
checkBlock(event.getBlock(), "blockfromto");
m = event.getToBlock().getType();
if((m != Material.WOOD_PLATE) && (m != Material.STONE_PLATE))
checkBlock(event.getToBlock(), "blockfromto");
} }
if(onblockphysics) {
Listener physlistener = new Listener() {
@SuppressWarnings("unused") @SuppressWarnings("unused")
@EventHandler(priority=EventPriority.MONITOR) @EventHandler(priority=EventPriority.MONITOR)
public void onBlockPhysics(BlockPhysicsEvent event) { public void onBlockPhysics(BlockPhysicsEvent event) {
@ -819,7 +794,30 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
break; break;
} }
} }
};
pm.registerEvents(physlistener, this);
}
if(onblockfromto) {
Listener fromtolistener = new Listener() {
@SuppressWarnings("unused")
@EventHandler(priority=EventPriority.MONITOR)
public void onBlockFromTo(BlockFromToEvent event) {
if(event.isCancelled())
return;
Material m = event.getBlock().getType();
if((m != Material.WOOD_PLATE) && (m != Material.STONE_PLATE))
checkBlock(event.getBlock(), "blockfromto");
m = event.getToBlock().getType();
if((m != Material.WOOD_PLATE) && (m != Material.STONE_PLATE))
checkBlock(event.getToBlock(), "blockfromto");
}
};
pm.registerEvents(fromtolistener, this);
}
if(onpiston) {
Listener pistonlistener = new Listener() {
@SuppressWarnings("unused") @SuppressWarnings("unused")
@EventHandler(priority=EventPriority.MONITOR) @EventHandler(priority=EventPriority.MONITOR)
public void onBlockPistonRetract(BlockPistonRetractEvent event) { public void onBlockPistonRetract(BlockPistonRetractEvent event) {
@ -843,7 +841,6 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
y += dir.getModY(); y += dir.getModY();
z += dir.getModZ(); z += dir.getModZ();
sscache.invalidateSnapshot(wn, x, y, z); sscache.invalidateSnapshot(wn, x, y, z);
if(onpiston)
mapManager.touch(wn, x, y, z, "pistonretract"); mapManager.touch(wn, x, y, z, "pistonretract");
} }
} }
@ -871,27 +868,64 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
y += dir.getModY(); y += dir.getModY();
z += dir.getModZ(); z += dir.getModZ();
sscache.invalidateSnapshot(wn, x, y, z); sscache.invalidateSnapshot(wn, x, y, z);
if(onpiston)
mapManager.touch(wn, x, y, z, "pistonretract"); mapManager.touch(wn, x, y, z, "pistonretract");
} }
} }
}; };
pm.registerEvents(pistonlistener, this);
}
// To trigger rendering. if(onblockspread) {
onplace = core.isTrigger("blockplaced"); Listener spreadlistener = new Listener() {
onbreak = core.isTrigger("blockbreak"); @SuppressWarnings("unused")
if(core.isTrigger("snowform")) Log.info("The 'snowform' trigger has been deprecated due to Bukkit changes - use 'blockformed'"); @EventHandler(priority=EventPriority.MONITOR)
onleaves = core.isTrigger("leavesdecay"); public void onBlockSpread(BlockSpreadEvent event) {
onburn = core.isTrigger("blockburn"); if(event.isCancelled())
onblockform = core.isTrigger("blockformed"); return;
onblockfade = core.isTrigger("blockfaded"); Location loc = event.getBlock().getLocation();
onblockspread = core.isTrigger("blockspread"); String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName());
onblockfromto = core.isTrigger("blockfromto"); sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
onblockphysics = core.isTrigger("blockphysics"); mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockspread");
onpiston = core.isTrigger("pistonmoved"); }
onblockfade = core.isTrigger("blockfaded"); };
pm.registerEvents(blockTrigger, this); pm.registerEvents(spreadlistener, this);
}
if(onblockform) {
Listener formlistener = new Listener() {
@SuppressWarnings("unused")
@EventHandler(priority=EventPriority.MONITOR)
public void onBlockForm(BlockFormEvent event) {
if(event.isCancelled())
return;
Location loc = event.getBlock().getLocation();
String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName());
sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockform");
}
};
pm.registerEvents(formlistener, this);
}
if(onblockfade) {
Listener fadelistener = new Listener() {
@SuppressWarnings("unused")
@EventHandler(priority=EventPriority.MONITOR)
public void onBlockFade(BlockFadeEvent event) {
if(event.isCancelled())
return;
Location loc = event.getBlock().getLocation();
String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName());
sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockfade");
}
};
pm.registerEvents(fadelistener, this);
}
onblockgrow = core.isTrigger("blockgrow");
if(onblockgrow) {
try { try {
Class.forName("org.bukkit.event.block.BlockGrowEvent"); Class.forName("org.bukkit.event.block.BlockGrowEvent");
Listener growTrigger = new Listener() { Listener growTrigger = new Listener() {
@ -903,16 +937,14 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
Location loc = event.getBlock().getLocation(); Location loc = event.getBlock().getLocation();
String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName()); String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName());
sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
if(onblockgrow) {
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockgrow"); mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockgrow");
} }
}
}; };
onblockgrow = core.isTrigger("blockgrow");
pm.registerEvents(growTrigger, this); pm.registerEvents(growTrigger, this);
} catch (ClassNotFoundException cnfx) { } catch (ClassNotFoundException cnfx) {
/* Pre-R5 - no grow event yet */ /* Pre-R5 - no grow event yet */
} }
}
/* Register player event trigger handlers */ /* Register player event trigger handlers */
Listener playerTrigger = new Listener() { Listener playerTrigger = new Listener() {