Added enderman logging

This commit is contained in:
Robin Kupper
2011-09-22 14:54:20 +02:00
parent 263b5a40d5
commit bf388f8783
3 changed files with 31 additions and 2 deletions

View File

@@ -26,7 +26,7 @@ public class Config
public final boolean useBukkitScheduler; public final boolean useBukkitScheduler;
public final int keepLogDays; public final int keepLogDays;
public final boolean dumpDeletedLog; 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 boolean logCreeperExplosionsAsPlayerWhoTriggeredThese;
public final LogKillsLevel logKillsLevel; public final LogKillsLevel logKillsLevel;
public final Set<Integer> dontRollback, replaceAnyway; public final Set<Integer> dontRollback, replaceAnyway;
@@ -217,6 +217,8 @@ public class Config
logDoors = true; logDoors = true;
if (wcfg.logCakes) if (wcfg.logCakes)
logCakes = true; logCakes = true;
if (wcfg.logEndermen)
logEndermen = true;
} }
} }
} }
@@ -224,7 +226,7 @@ public class Config
class WorldConfig class WorldConfig
{ {
public final String table; 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) { public WorldConfig(File file) {
final Map<String, Object> def = new HashMap<String, Object>(); final Map<String, Object> def = new HashMap<String, Object>();
@@ -245,6 +247,7 @@ class WorldConfig
def.put("logSnowFade", false); def.put("logSnowFade", false);
def.put("logDoors", false); def.put("logDoors", false);
def.put("logCakes", false); def.put("logCakes", false);
def.put("logEndermen", false);
final Configuration config = new Configuration(file); final Configuration config = new Configuration(file);
config.load(); config.load();
for (final Entry<String, Object> e : def.entrySet()) for (final Entry<String, Object> e : def.entrySet())
@@ -268,5 +271,6 @@ class WorldConfig
logSnowFade = config.getBoolean("logSnowFade", false); logSnowFade = config.getBoolean("logSnowFade", false);
logDoors = config.getBoolean("logDoors", false); logDoors = config.getBoolean("logDoors", false);
logCakes = config.getBoolean("logCakes", false); logCakes = config.getBoolean("logCakes", false);
logEndermen = config.getBoolean("logEndermen", false);
} }
} }

View File

@@ -1,15 +1,20 @@
package de.diddiz.LogBlock; package de.diddiz.LogBlock;
import java.util.Map; import java.util.Map;
import net.minecraft.server.EntityEnderman;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.Sign; import org.bukkit.block.Sign;
import org.bukkit.craftbukkit.entity.CraftEnderman;
import org.bukkit.entity.Creeper; import org.bukkit.entity.Creeper;
import org.bukkit.entity.Enderman;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Fireball; import org.bukkit.entity.Fireball;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Monster; import org.bukkit.entity.Monster;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed; 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.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityExplodeEvent; 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());
}
}
} }

View File

@@ -219,6 +219,10 @@ public class LogBlock extends JavaPlugin
pm.registerEvent(Type.PLAYER_COMMAND_PREPROCESS, lbPlayerListener, Priority.Monitor, this); pm.registerEvent(Type.PLAYER_COMMAND_PREPROCESS, lbPlayerListener, Priority.Monitor, this);
pm.registerEvent(Type.SERVER_COMMAND, new LBServerListener(this), 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 (config.useBukkitScheduler) {
if (getServer().getScheduler().scheduleAsyncRepeatingTask(this, consumer, config.delayBetweenRuns * 20, config.delayBetweenRuns * 20) > 0) if (getServer().getScheduler().scheduleAsyncRepeatingTask(this, consumer, config.delayBetweenRuns * 20, config.delayBetweenRuns * 20) > 0)
log.info("[LogBlock] Scheduled consumer with bukkit scheduler."); log.info("[LogBlock] Scheduled consumer with bukkit scheduler.");