From cefcae2437c4fd327cd6fb48979a64e00391c3a2 Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Fri, 30 Dec 2011 08:45:26 +0800 Subject: [PATCH] Add 'blockfromto' and 'blockphysics' triggers - needed for lava and water flow, as well as falling sand and gravel --- src/main/java/org/dynmap/DynmapPlugin.java | 61 ++++++++++++++++++++++ src/main/resources/configuration.txt | 2 + 2 files changed, 63 insertions(+) diff --git a/src/main/java/org/dynmap/DynmapPlugin.java b/src/main/java/org/dynmap/DynmapPlugin.java index 33f1594e..1be4a9f9 100644 --- a/src/main/java/org/dynmap/DynmapPlugin.java +++ b/src/main/java/org/dynmap/DynmapPlugin.java @@ -34,7 +34,9 @@ import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBurnEvent; import org.bukkit.event.block.BlockFadeEvent; import org.bukkit.event.block.BlockFormEvent; +import org.bukkit.event.block.BlockFromToEvent; import org.bukkit.event.block.BlockListener; +import org.bukkit.event.block.BlockPhysicsEvent; import org.bukkit.event.block.BlockPistonExtendEvent; import org.bukkit.event.block.BlockPistonRetractEvent; import org.bukkit.event.block.BlockPlaceEvent; @@ -479,6 +481,8 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI { private boolean onblockform; private boolean onblockfade; private boolean onblockspread; + private boolean onblockfromto; + private boolean onblockphysics; private boolean onleaves; private boolean onburn; private boolean onpiston; @@ -566,7 +570,32 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI { mapManager.touch(loc, "blockspread"); } } + + @Override + public void onBlockFromTo(BlockFromToEvent event) { + if(event.isCancelled()) + return; + Location loct = event.getToBlock().getLocation(); + Location locf = event.getBlock().getLocation(); + mapManager.sscache.invalidateSnapshot(loct); + mapManager.sscache.invalidateSnapshot(locf); + if(onblockfromto) { + mapManager.touch(locf, "blockfromto"); + mapManager.touch(loct, "blockfromto"); + } + } + @Override + public void onBlockPhysics(BlockPhysicsEvent event) { + if(event.isCancelled()) + return; + Location loc = event.getBlock().getLocation(); + mapManager.sscache.invalidateSnapshot(loc); + if(onblockphysics) { + mapManager.touch(loc, "blockphysics"); + } + } + @Override public void onBlockPistonRetract(BlockPistonRetractEvent event) { if(event.isCancelled()) @@ -635,6 +664,12 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI { onblockspread = isTrigger("blockspread"); registerEvent(Event.Type.BLOCK_SPREAD, blockTrigger); + onblockfromto = isTrigger("blockfromto"); + registerEvent(Event.Type.BLOCK_FROMTO, blockTrigger); + + onblockphysics = isTrigger("blockphysics"); + registerEvent(Event.Type.BLOCK_PHYSICS, blockTrigger); + onpiston = isTrigger("pistonmoved"); registerEvent(Event.Type.BLOCK_PISTON_EXTEND, blockTrigger); registerEvent(Event.Type.BLOCK_PISTON_RETRACT, blockTrigger); @@ -1277,6 +1312,30 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI { } } @Override + public void onBlockFromTo(BlockFromToEvent event) { + if(event.isCancelled()) + return; + /* Call listeners */ + List ll = event_handlers.get(event.getType()); + if(ll != null) { + for(Listener l : ll) { + ((BlockListener)l).onBlockFromTo(event); + } + } + } + @Override + public void onBlockPhysics(BlockPhysicsEvent event) { + if(event.isCancelled()) + return; + /* Call listeners */ + List ll = event_handlers.get(event.getType()); + if(ll != null) { + for(Listener l : ll) { + ((BlockListener)l).onBlockPhysics(event); + } + } + } + @Override public void onBlockPistonRetract(BlockPistonRetractEvent event) { if(event.isCancelled()) return; @@ -1451,6 +1510,8 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI { case BLOCK_FORM: case BLOCK_FADE: case BLOCK_SPREAD: + case BLOCK_FROMTO: + case BLOCK_PHYSICS: case BLOCK_PISTON_EXTEND: case BLOCK_PISTON_RETRACT: pm.registerEvent(type, ourBlockEventHandler, Event.Priority.Monitor, this); diff --git a/src/main/resources/configuration.txt b/src/main/resources/configuration.txt index 657e0044..540a95d7 100644 --- a/src/main/resources/configuration.txt +++ b/src/main/resources/configuration.txt @@ -198,6 +198,8 @@ render-triggers: - blockspread - pistonmoved - explosion + - blockfromto + - blockphysics # Title for the web page - if not specified, defaults to the server's name (unless it is the default of 'Unknown Server') #webpage-title: "My Awesome Server Map"