diff --git a/src/main/java/de/diddiz/LogBlock/config/Config.java b/src/main/java/de/diddiz/LogBlock/config/Config.java index 0f520c2..708f2e2 100644 --- a/src/main/java/de/diddiz/LogBlock/config/Config.java +++ b/src/main/java/de/diddiz/LogBlock/config/Config.java @@ -35,6 +35,7 @@ public class Config { public static boolean logBedExplosionsAsPlayerWhoTriggeredThese; public static boolean logCreeperExplosionsAsPlayerWhoTriggeredThese, logPlayerInfo; public static boolean logFireSpreadAsPlayerWhoCreatedIt; + public static boolean logFluidFlowAsPlayerWhoTriggeredIt; public static LogKillsLevel logKillsLevel; public static Set dontRollback, replaceAnyway; public static int rollbackMaxTime, rollbackMaxArea; @@ -95,6 +96,7 @@ public class Config { def.put("logging.logBedExplosionsAsPlayerWhoTriggeredThese", true); def.put("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false); def.put("logging.logFireSpreadAsPlayerWhoCreatedIt", true); + def.put("logging.logFluidFlowAsPlayerWhoTriggeredIt", false); def.put("logging.logKillsLevel", "PLAYERS"); def.put("logging.logEnvironmentalKills", false); def.put("logging.logPlayerInfo", false); @@ -172,6 +174,7 @@ public class Config { logBedExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logBedExplosionsAsPlayerWhoTriggeredThese", true); logCreeperExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false); logFireSpreadAsPlayerWhoCreatedIt = config.getBoolean("logging.logFireSpreadAsPlayerWhoCreatedIt", true); + logFluidFlowAsPlayerWhoTriggeredIt = config.getBoolean("logging.logFluidFlowAsPlayerWhoTriggeredIt", false); logPlayerInfo = config.getBoolean("logging.logPlayerInfo", true); try { logKillsLevel = LogKillsLevel.valueOf(config.getString("logging.logKillsLevel").toUpperCase()); diff --git a/src/main/java/de/diddiz/LogBlock/listeners/FluidFlowLogging.java b/src/main/java/de/diddiz/LogBlock/listeners/FluidFlowLogging.java index 7e9e1b1..4adf63a 100644 --- a/src/main/java/de/diddiz/LogBlock/listeners/FluidFlowLogging.java +++ b/src/main/java/de/diddiz/LogBlock/listeners/FluidFlowLogging.java @@ -3,6 +3,7 @@ package de.diddiz.LogBlock.listeners; import de.diddiz.LogBlock.Actor; import de.diddiz.LogBlock.LogBlock; import de.diddiz.LogBlock.Logging; +import de.diddiz.LogBlock.config.Config; import de.diddiz.LogBlock.config.WorldConfig; import de.diddiz.util.BukkitUtils; @@ -29,56 +30,57 @@ public class FluidFlowLogging extends LoggingListener { if (wcfg != null) { final BlockData blockDataFrom = event.getBlock().getBlockData(); final Material typeFrom = blockDataFrom.getMaterial(); - + + Block source = Config.logFluidFlowAsPlayerWhoTriggeredIt ? event.getBlock() : null; final Block to = event.getToBlock(); final Material typeTo = to.getType(); final boolean canFlow = BukkitUtils.isEmpty(typeTo) || BukkitUtils.getNonFluidProofBlocks().contains(typeTo); if (typeFrom == Material.LAVA && wcfg.isLogging(Logging.LAVAFLOW)) { - Levelled levelledFrom = (Levelled)blockDataFrom; + Levelled levelledFrom = (Levelled) blockDataFrom; if (canFlow) { if (isSurroundedByWater(to) && levelledFrom.getLevel() <= 2) { - consumer.queueBlockReplace(new Actor("LavaFlow"), to.getState(), Material.COBBLESTONE.createBlockData()); + consumer.queueBlockReplace(new Actor("LavaFlow", source), to.getState(), Material.COBBLESTONE.createBlockData()); } else { Levelled newBlock = (Levelled) blockDataFrom.clone(); newBlock.setLevel(levelledFrom.getLevel() + 1); if (BukkitUtils.isEmpty(typeTo)) { - consumer.queueBlockPlace(new Actor("LavaFlow"), to.getLocation(), newBlock); + consumer.queueBlockPlace(new Actor("LavaFlow", source), to.getLocation(), newBlock); } else { - consumer.queueBlockReplace(new Actor("LavaFlow"), to.getState(), newBlock); + consumer.queueBlockReplace(new Actor("LavaFlow", source), to.getState(), newBlock); } } } else if (typeTo == Material.WATER) { if (event.getFace() == BlockFace.DOWN) { - consumer.queueBlockReplace(new Actor("LavaFlow"), to.getState(), Material.STONE.createBlockData()); + consumer.queueBlockReplace(new Actor("LavaFlow", source), to.getState(), Material.STONE.createBlockData()); } else { - consumer.queueBlockReplace(new Actor("LavaFlow"), to.getState(), Material.COBBLESTONE.createBlockData()); + consumer.queueBlockReplace(new Actor("LavaFlow", source), to.getState(), Material.COBBLESTONE.createBlockData()); } } } else if ((typeFrom == Material.WATER) && wcfg.isLogging(Logging.WATERFLOW)) { - Levelled levelledFrom = (Levelled)blockDataFrom; + Levelled levelledFrom = (Levelled) blockDataFrom; Levelled newBlock = (Levelled) blockDataFrom.clone(); newBlock.setLevel(levelledFrom.getLevel() + 1); if (BukkitUtils.isEmpty(typeTo)) { - consumer.queueBlockPlace(new Actor("WaterFlow"), to.getLocation(), newBlock); + consumer.queueBlockPlace(new Actor("WaterFlow", source), to.getLocation(), newBlock); } else if (BukkitUtils.getNonFluidProofBlocks().contains(typeTo)) { - consumer.queueBlockReplace(new Actor("WaterFlow"), to.getState(), newBlock); + consumer.queueBlockReplace(new Actor("WaterFlow", source), to.getState(), newBlock); } else if (typeTo == Material.LAVA) { - int toLevel = ((Levelled)to.getBlockData()).getLevel(); + int toLevel = ((Levelled) to.getBlockData()).getLevel(); if (toLevel == 0) { - consumer.queueBlockReplace(new Actor("WaterFlow"), to.getState(), Material.OBSIDIAN.createBlockData()); + consumer.queueBlockReplace(new Actor("WaterFlow", source), to.getState(), Material.OBSIDIAN.createBlockData()); } else if (event.getFace() == BlockFace.DOWN) { - consumer.queueBlockReplace(new Actor("WaterFlow"), to.getState(), Material.STONE.createBlockData()); + consumer.queueBlockReplace(new Actor("WaterFlow", source), to.getState(), Material.STONE.createBlockData()); } } if (BukkitUtils.isEmpty(typeTo) || BukkitUtils.getNonFluidProofBlocks().contains(typeTo)) { - for (final BlockFace face : new BlockFace[]{BlockFace.DOWN, BlockFace.NORTH, BlockFace.WEST, BlockFace.EAST, BlockFace.SOUTH}) { + for (final BlockFace face : new BlockFace[] { BlockFace.DOWN, BlockFace.NORTH, BlockFace.WEST, BlockFace.EAST, BlockFace.SOUTH }) { final Block lower = to.getRelative(face); if (lower.getType() == Material.LAVA) { - int toLevel = ((Levelled)lower.getBlockData()).getLevel(); + int toLevel = ((Levelled) lower.getBlockData()).getLevel(); if (toLevel == 0) { - consumer.queueBlockReplace(new Actor("WaterFlow"), lower.getState(), Material.OBSIDIAN.createBlockData()); + consumer.queueBlockReplace(new Actor("WaterFlow", source), lower.getState(), Material.OBSIDIAN.createBlockData()); } else if (event.getFace() == BlockFace.DOWN) { - consumer.queueBlockReplace(new Actor("WaterFlow"), lower.getState(), Material.STONE.createBlockData()); + consumer.queueBlockReplace(new Actor("WaterFlow", source), lower.getState(), Material.STONE.createBlockData()); } } }