From 66922120ac7bc65d93491a21406a16696d9135ca Mon Sep 17 00:00:00 2001 From: DiddiZ Date: Sat, 10 Dec 2011 14:14:36 +0100 Subject: [PATCH] Added tree and mushroom grow logging --- src/de/diddiz/LogBlock/LBWorldListener.java | 36 +++++++++++++++++++++ src/de/diddiz/LogBlock/LogBlock.java | 2 ++ src/de/diddiz/LogBlock/Logging.java | 2 +- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/de/diddiz/LogBlock/LBWorldListener.java diff --git a/src/de/diddiz/LogBlock/LBWorldListener.java b/src/de/diddiz/LogBlock/LBWorldListener.java new file mode 100644 index 0000000..4567fef --- /dev/null +++ b/src/de/diddiz/LogBlock/LBWorldListener.java @@ -0,0 +1,36 @@ +package de.diddiz.LogBlock; + +import java.util.Map; +import org.bukkit.block.BlockState; +import org.bukkit.event.world.StructureGrowEvent; +import org.bukkit.event.world.WorldListener; + +public class LBWorldListener extends WorldListener +{ + private final Consumer consumer; + private final Map worlds; + + LBWorldListener(LogBlock logblock) { + consumer = logblock.getConsumer(); + worlds = logblock.getLBConfig().worlds; + } + + @Override + public void onStructureGrow(StructureGrowEvent event) { + final WorldConfig wcfg = worlds.get(event.getWorld().getName().hashCode()); + if (!event.isCancelled() && wcfg != null) { + final String playerName; + if (event.getPlayer() != null) { + if (!wcfg.isLogging(Logging.BONEMEALSTRUCTUREGROW)) + return; + playerName = event.getPlayer().getName(); + } else { + if (!wcfg.isLogging(Logging.NATURALSTRUCTUREGROW)) + return; + playerName = "NaturalGrow"; + } + for (final BlockState state : event.getBlocks()) + consumer.queueBlockReplace(playerName, state.getBlock().getState(), state); + } + } +} diff --git a/src/de/diddiz/LogBlock/LogBlock.java b/src/de/diddiz/LogBlock/LogBlock.java index 4439ffa..71abab2 100644 --- a/src/de/diddiz/LogBlock/LogBlock.java +++ b/src/de/diddiz/LogBlock/LogBlock.java @@ -176,6 +176,8 @@ public class LogBlock extends JavaPlugin pm.registerEvent(Type.ENDERMAN_PICKUP, lbEntityListener, Priority.Monitor, this); pm.registerEvent(Type.ENDERMAN_PLACE, lbEntityListener, Priority.Monitor, this); } + if (config.isLogging(Logging.NATURALSTRUCTUREGROW) || config.isLogging(Logging.BONEMEALSTRUCTUREGROW)) + pm.registerEvent(Type.STRUCTURE_GROW, new LBWorldListener(this), Priority.Monitor, this); if (config.logPlayerInfo) { pm.registerEvent(Type.PLAYER_JOIN, lbPlayerListener, Priority.Monitor, this); pm.registerEvent(Type.PLAYER_QUIT, lbPlayerListener, Priority.Monitor, this); diff --git a/src/de/diddiz/LogBlock/Logging.java b/src/de/diddiz/LogBlock/Logging.java index 4fe8340..f02d47e 100644 --- a/src/de/diddiz/LogBlock/Logging.java +++ b/src/de/diddiz/LogBlock/Logging.java @@ -1,7 +1,7 @@ package de.diddiz.LogBlock; public enum Logging { - BLOCKPLACE(true), BLOCKBREAK(true), SIGNTEXT, TNTEXPLOSION(true), CREEPEREXPLOSION(true), GHASTFIREBALLEXPLOSION(true), ENDERDRAGON(true), MISCEXPLOSION, FIRE(true), LEAVESDECAY, LAVAFLOW, WATERFLOW, CHESTACCESS, KILL, CHAT, SNOWFORM, SNOWFADE, DOORINTERACT, SWITCHINTERACT, CAKEEAT, ENDERMEN, NOTEBLOCKINTERACT, DIODEINTERACT; + BLOCKPLACE(true), BLOCKBREAK(true), SIGNTEXT, TNTEXPLOSION(true), CREEPEREXPLOSION(true), GHASTFIREBALLEXPLOSION(true), ENDERDRAGON(true), MISCEXPLOSION, FIRE(true), LEAVESDECAY, LAVAFLOW, WATERFLOW, CHESTACCESS, KILL, CHAT, SNOWFORM, SNOWFADE, DOORINTERACT, SWITCHINTERACT, CAKEEAT, ENDERMEN, NOTEBLOCKINTERACT, DIODEINTERACT, NATURALSTRUCTUREGROW, BONEMEALSTRUCTUREGROW; public static int length = Logging.values().length;