From bf388f8783b41d8473bf742e70d3376c594a4797 Mon Sep 17 00:00:00 2001 From: Robin Kupper Date: Thu, 22 Sep 2011 14:54:20 +0200 Subject: [PATCH] Added enderman logging --- src/de/diddiz/LogBlock/Config.java | 8 ++++++-- src/de/diddiz/LogBlock/LBEntityListener.java | 21 ++++++++++++++++++++ src/de/diddiz/LogBlock/LogBlock.java | 4 ++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/de/diddiz/LogBlock/Config.java b/src/de/diddiz/LogBlock/Config.java index 92b2150..1179364 100644 --- a/src/de/diddiz/LogBlock/Config.java +++ b/src/de/diddiz/LogBlock/Config.java @@ -26,7 +26,7 @@ public class Config public final boolean useBukkitScheduler; public final int keepLogDays; public final boolean dumpDeletedLog; - public boolean logBlockPlacings, logBlockBreaks, logSignTexts, logExplosions, logFire, logLeavesDecay, logLavaFlow, logWaterFlow, logChestAccess, logButtonsAndLevers, logKills, logChat, logSnowForm, logSnowFade, logDoors, logCakes; + public boolean logBlockPlacings, logBlockBreaks, logSignTexts, logExplosions, logFire, logLeavesDecay, logLavaFlow, logWaterFlow, logChestAccess, logButtonsAndLevers, logKills, logChat, logSnowForm, logSnowFade, logDoors, logCakes, logEndermen; public final boolean logCreeperExplosionsAsPlayerWhoTriggeredThese; public final LogKillsLevel logKillsLevel; public final Set dontRollback, replaceAnyway; @@ -217,6 +217,8 @@ public class Config logDoors = true; if (wcfg.logCakes) logCakes = true; + if (wcfg.logEndermen) + logEndermen = true; } } } @@ -224,7 +226,7 @@ public class Config class WorldConfig { public final String table; - public final boolean logBlockPlacings, logBlockBreaks, logSignTexts, logExplosions, logFire, logLeavesDecay, logLavaFlow, logWaterFlow, logChestAccess, logButtonsAndLevers, logKills, logChat, logSnowForm, logSnowFade, logDoors, logCakes; + public final boolean logBlockPlacings, logBlockBreaks, logSignTexts, logExplosions, logFire, logLeavesDecay, logLavaFlow, logWaterFlow, logChestAccess, logButtonsAndLevers, logKills, logChat, logSnowForm, logSnowFade, logDoors, logCakes, logEndermen; public WorldConfig(File file) { final Map def = new HashMap(); @@ -245,6 +247,7 @@ class WorldConfig def.put("logSnowFade", false); def.put("logDoors", false); def.put("logCakes", false); + def.put("logEndermen", false); final Configuration config = new Configuration(file); config.load(); for (final Entry e : def.entrySet()) @@ -268,5 +271,6 @@ class WorldConfig logSnowFade = config.getBoolean("logSnowFade", false); logDoors = config.getBoolean("logDoors", false); logCakes = config.getBoolean("logCakes", false); + logEndermen = config.getBoolean("logEndermen", false); } } diff --git a/src/de/diddiz/LogBlock/LBEntityListener.java b/src/de/diddiz/LogBlock/LBEntityListener.java index 89adfe7..1228904 100644 --- a/src/de/diddiz/LogBlock/LBEntityListener.java +++ b/src/de/diddiz/LogBlock/LBEntityListener.java @@ -1,15 +1,20 @@ package de.diddiz.LogBlock; import java.util.Map; +import net.minecraft.server.EntityEnderman; import org.bukkit.block.Block; import org.bukkit.block.Sign; +import org.bukkit.craftbukkit.entity.CraftEnderman; import org.bukkit.entity.Creeper; +import org.bukkit.entity.Enderman; import org.bukkit.entity.Entity; import org.bukkit.entity.Fireball; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Monster; import org.bukkit.entity.Player; import org.bukkit.entity.TNTPrimed; +import org.bukkit.event.entity.EndermanPickupEvent; +import org.bukkit.event.entity.EndermanPlaceEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityExplodeEvent; @@ -75,4 +80,20 @@ class LBEntityListener extends EntityListener } } } + + @Override + public void onEndermanPickup(EndermanPickupEvent event) { + final WorldConfig wcfg = worlds.get(event.getBlock().getWorld().getName().hashCode()); + if (!event.isCancelled() && wcfg != null && wcfg.logEndermen) + consumer.queueBlockBreak("Enderman", event.getBlock().getState()); + } + + @Override + public void onEndermanPlace(EndermanPlaceEvent event) { + final WorldConfig wcfg = worlds.get(event.getLocation().getWorld().getName().hashCode()); + if (!event.isCancelled() && wcfg != null && wcfg.logEndermen && event.getEntity() instanceof Enderman) { + final EntityEnderman enderman = ((CraftEnderman)event.getEntity()).getHandle(); + consumer.queueBlockPlace("Enderman", event.getLocation(), enderman.getCarriedId(), (byte)enderman.getCarriedData()); + } + } } diff --git a/src/de/diddiz/LogBlock/LogBlock.java b/src/de/diddiz/LogBlock/LogBlock.java index 1ca05ab..08dade7 100644 --- a/src/de/diddiz/LogBlock/LogBlock.java +++ b/src/de/diddiz/LogBlock/LogBlock.java @@ -219,6 +219,10 @@ public class LogBlock extends JavaPlugin pm.registerEvent(Type.PLAYER_COMMAND_PREPROCESS, lbPlayerListener, Priority.Monitor, this); pm.registerEvent(Type.SERVER_COMMAND, new LBServerListener(this), Priority.Monitor, this); } + if (config.logEndermen) { + pm.registerEvent(Type.ENDERMAN_PICKUP, lbEntityListener, Priority.Monitor, this); + pm.registerEvent(Type.ENDERMAN_PLACE, lbEntityListener, Priority.Monitor, this); + } if (config.useBukkitScheduler) { if (getServer().getScheduler().scheduleAsyncRepeatingTask(this, consumer, config.delayBetweenRuns * 20, config.delayBetweenRuns * 20) > 0) log.info("[LogBlock] Scheduled consumer with bukkit scheduler.");