Drop listeners for disabled triggers (overhead on very big servers)
This commit is contained in:
parent
2e7fc84a9b
commit
0a52612dcf
1 changed files with 229 additions and 197 deletions
|
|
@ -647,11 +647,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
|||
if((bt != btt.typeid) || (btt.data != w.getBlockAt(loc).getData())) {
|
||||
String wn = BukkitWorld.normalizeWorldName(w.getName());
|
||||
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);
|
||||
//Log.info("trigger=" + btt.trigger + " before=" + btt.typeid + ", after=" + bt);
|
||||
}
|
||||
}
|
||||
}
|
||||
blocks_to_check = null;
|
||||
|
|
@ -696,7 +692,22 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
|||
private boolean onblockgrow;
|
||||
|
||||
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")
|
||||
@EventHandler(priority=EventPriority.MONITOR)
|
||||
public void onBlockPlace(BlockPlaceEvent event) {
|
||||
|
|
@ -705,11 +716,14 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
|||
Location loc = event.getBlock().getLocation();
|
||||
String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName());
|
||||
sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
|
||||
if(onplace) {
|
||||
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockplace");
|
||||
}
|
||||
};
|
||||
pm.registerEvents(placelistener, this);
|
||||
}
|
||||
|
||||
if(onbreak) {
|
||||
Listener breaklistener = new Listener() {
|
||||
@SuppressWarnings("unused")
|
||||
@EventHandler(priority=EventPriority.MONITOR)
|
||||
public void onBlockBreak(BlockBreakEvent event) {
|
||||
|
|
@ -718,11 +732,14 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
|||
Location loc = event.getBlock().getLocation();
|
||||
String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName());
|
||||
sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
|
||||
if(onbreak) {
|
||||
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockbreak");
|
||||
}
|
||||
};
|
||||
pm.registerEvents(breaklistener, this);
|
||||
}
|
||||
|
||||
if(onleaves) {
|
||||
Listener leaveslistener = new Listener() {
|
||||
@SuppressWarnings("unused")
|
||||
@EventHandler(priority=EventPriority.MONITOR)
|
||||
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");
|
||||
}
|
||||
}
|
||||
};
|
||||
pm.registerEvents(leaveslistener, this);
|
||||
}
|
||||
|
||||
if(onburn) {
|
||||
Listener burnlistener = new Listener() {
|
||||
@SuppressWarnings("unused")
|
||||
@EventHandler(priority=EventPriority.MONITOR)
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
@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());
|
||||
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");
|
||||
};
|
||||
pm.registerEvents(burnlistener, this);
|
||||
}
|
||||
|
||||
if(onblockphysics) {
|
||||
Listener physlistener = new Listener() {
|
||||
@SuppressWarnings("unused")
|
||||
@EventHandler(priority=EventPriority.MONITOR)
|
||||
public void onBlockPhysics(BlockPhysicsEvent event) {
|
||||
|
|
@ -819,7 +794,30 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
|||
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")
|
||||
@EventHandler(priority=EventPriority.MONITOR)
|
||||
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
|
||||
|
|
@ -843,7 +841,6 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
|||
y += dir.getModY();
|
||||
z += dir.getModZ();
|
||||
sscache.invalidateSnapshot(wn, x, y, z);
|
||||
if(onpiston)
|
||||
mapManager.touch(wn, x, y, z, "pistonretract");
|
||||
}
|
||||
}
|
||||
|
|
@ -871,27 +868,64 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
|||
y += dir.getModY();
|
||||
z += dir.getModZ();
|
||||
sscache.invalidateSnapshot(wn, x, y, z);
|
||||
if(onpiston)
|
||||
mapManager.touch(wn, x, y, z, "pistonretract");
|
||||
}
|
||||
}
|
||||
};
|
||||
pm.registerEvents(pistonlistener, this);
|
||||
}
|
||||
|
||||
// To trigger rendering.
|
||||
onplace = core.isTrigger("blockplaced");
|
||||
onbreak = core.isTrigger("blockbreak");
|
||||
if(core.isTrigger("snowform")) Log.info("The 'snowform' trigger has been deprecated due to Bukkit changes - use 'blockformed'");
|
||||
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");
|
||||
pm.registerEvents(blockTrigger, this);
|
||||
if(onblockspread) {
|
||||
Listener spreadlistener = new Listener() {
|
||||
@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());
|
||||
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockspread");
|
||||
}
|
||||
};
|
||||
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 {
|
||||
Class.forName("org.bukkit.event.block.BlockGrowEvent");
|
||||
Listener growTrigger = new Listener() {
|
||||
|
|
@ -903,16 +937,14 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI {
|
|||
Location loc = event.getBlock().getLocation();
|
||||
String wn = BukkitWorld.normalizeWorldName(loc.getWorld().getName());
|
||||
sscache.invalidateSnapshot(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
|
||||
if(onblockgrow) {
|
||||
mapManager.touch(wn, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), "blockgrow");
|
||||
}
|
||||
}
|
||||
};
|
||||
onblockgrow = core.isTrigger("blockgrow");
|
||||
pm.registerEvents(growTrigger, this);
|
||||
} catch (ClassNotFoundException cnfx) {
|
||||
/* Pre-R5 - no grow event yet */
|
||||
}
|
||||
}
|
||||
|
||||
/* Register player event trigger handlers */
|
||||
Listener playerTrigger = new Listener() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue