forked from LogBlock/LogBlock
Optionally log fluid flow as the player who created the fluid
This commit is contained in:
@@ -35,6 +35,7 @@ public class Config {
|
|||||||
public static boolean logBedExplosionsAsPlayerWhoTriggeredThese;
|
public static boolean logBedExplosionsAsPlayerWhoTriggeredThese;
|
||||||
public static boolean logCreeperExplosionsAsPlayerWhoTriggeredThese, logPlayerInfo;
|
public static boolean logCreeperExplosionsAsPlayerWhoTriggeredThese, logPlayerInfo;
|
||||||
public static boolean logFireSpreadAsPlayerWhoCreatedIt;
|
public static boolean logFireSpreadAsPlayerWhoCreatedIt;
|
||||||
|
public static boolean logFluidFlowAsPlayerWhoTriggeredIt;
|
||||||
public static LogKillsLevel logKillsLevel;
|
public static LogKillsLevel logKillsLevel;
|
||||||
public static Set<Material> dontRollback, replaceAnyway;
|
public static Set<Material> dontRollback, replaceAnyway;
|
||||||
public static int rollbackMaxTime, rollbackMaxArea;
|
public static int rollbackMaxTime, rollbackMaxArea;
|
||||||
@@ -95,6 +96,7 @@ public class Config {
|
|||||||
def.put("logging.logBedExplosionsAsPlayerWhoTriggeredThese", true);
|
def.put("logging.logBedExplosionsAsPlayerWhoTriggeredThese", true);
|
||||||
def.put("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false);
|
def.put("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false);
|
||||||
def.put("logging.logFireSpreadAsPlayerWhoCreatedIt", true);
|
def.put("logging.logFireSpreadAsPlayerWhoCreatedIt", true);
|
||||||
|
def.put("logging.logFluidFlowAsPlayerWhoTriggeredIt", false);
|
||||||
def.put("logging.logKillsLevel", "PLAYERS");
|
def.put("logging.logKillsLevel", "PLAYERS");
|
||||||
def.put("logging.logEnvironmentalKills", false);
|
def.put("logging.logEnvironmentalKills", false);
|
||||||
def.put("logging.logPlayerInfo", false);
|
def.put("logging.logPlayerInfo", false);
|
||||||
@@ -172,6 +174,7 @@ public class Config {
|
|||||||
logBedExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logBedExplosionsAsPlayerWhoTriggeredThese", true);
|
logBedExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logBedExplosionsAsPlayerWhoTriggeredThese", true);
|
||||||
logCreeperExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false);
|
logCreeperExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false);
|
||||||
logFireSpreadAsPlayerWhoCreatedIt = config.getBoolean("logging.logFireSpreadAsPlayerWhoCreatedIt", true);
|
logFireSpreadAsPlayerWhoCreatedIt = config.getBoolean("logging.logFireSpreadAsPlayerWhoCreatedIt", true);
|
||||||
|
logFluidFlowAsPlayerWhoTriggeredIt = config.getBoolean("logging.logFluidFlowAsPlayerWhoTriggeredIt", false);
|
||||||
logPlayerInfo = config.getBoolean("logging.logPlayerInfo", true);
|
logPlayerInfo = config.getBoolean("logging.logPlayerInfo", true);
|
||||||
try {
|
try {
|
||||||
logKillsLevel = LogKillsLevel.valueOf(config.getString("logging.logKillsLevel").toUpperCase());
|
logKillsLevel = LogKillsLevel.valueOf(config.getString("logging.logKillsLevel").toUpperCase());
|
||||||
|
@@ -3,6 +3,7 @@ package de.diddiz.LogBlock.listeners;
|
|||||||
import de.diddiz.LogBlock.Actor;
|
import de.diddiz.LogBlock.Actor;
|
||||||
import de.diddiz.LogBlock.LogBlock;
|
import de.diddiz.LogBlock.LogBlock;
|
||||||
import de.diddiz.LogBlock.Logging;
|
import de.diddiz.LogBlock.Logging;
|
||||||
|
import de.diddiz.LogBlock.config.Config;
|
||||||
import de.diddiz.LogBlock.config.WorldConfig;
|
import de.diddiz.LogBlock.config.WorldConfig;
|
||||||
import de.diddiz.util.BukkitUtils;
|
import de.diddiz.util.BukkitUtils;
|
||||||
|
|
||||||
@@ -30,6 +31,7 @@ public class FluidFlowLogging extends LoggingListener {
|
|||||||
final BlockData blockDataFrom = event.getBlock().getBlockData();
|
final BlockData blockDataFrom = event.getBlock().getBlockData();
|
||||||
final Material typeFrom = blockDataFrom.getMaterial();
|
final Material typeFrom = blockDataFrom.getMaterial();
|
||||||
|
|
||||||
|
Block source = Config.logFluidFlowAsPlayerWhoTriggeredIt ? event.getBlock() : null;
|
||||||
final Block to = event.getToBlock();
|
final Block to = event.getToBlock();
|
||||||
final Material typeTo = to.getType();
|
final Material typeTo = to.getType();
|
||||||
final boolean canFlow = BukkitUtils.isEmpty(typeTo) || BukkitUtils.getNonFluidProofBlocks().contains(typeTo);
|
final boolean canFlow = BukkitUtils.isEmpty(typeTo) || BukkitUtils.getNonFluidProofBlocks().contains(typeTo);
|
||||||
@@ -37,21 +39,21 @@ public class FluidFlowLogging extends LoggingListener {
|
|||||||
Levelled levelledFrom = (Levelled) blockDataFrom;
|
Levelled levelledFrom = (Levelled) blockDataFrom;
|
||||||
if (canFlow) {
|
if (canFlow) {
|
||||||
if (isSurroundedByWater(to) && levelledFrom.getLevel() <= 2) {
|
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 {
|
} else {
|
||||||
Levelled newBlock = (Levelled) blockDataFrom.clone();
|
Levelled newBlock = (Levelled) blockDataFrom.clone();
|
||||||
newBlock.setLevel(levelledFrom.getLevel() + 1);
|
newBlock.setLevel(levelledFrom.getLevel() + 1);
|
||||||
if (BukkitUtils.isEmpty(typeTo)) {
|
if (BukkitUtils.isEmpty(typeTo)) {
|
||||||
consumer.queueBlockPlace(new Actor("LavaFlow"), to.getLocation(), newBlock);
|
consumer.queueBlockPlace(new Actor("LavaFlow", source), to.getLocation(), newBlock);
|
||||||
} else {
|
} else {
|
||||||
consumer.queueBlockReplace(new Actor("LavaFlow"), to.getState(), newBlock);
|
consumer.queueBlockReplace(new Actor("LavaFlow", source), to.getState(), newBlock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (typeTo == Material.WATER) {
|
} else if (typeTo == Material.WATER) {
|
||||||
if (event.getFace() == BlockFace.DOWN) {
|
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 {
|
} 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)) {
|
} else if ((typeFrom == Material.WATER) && wcfg.isLogging(Logging.WATERFLOW)) {
|
||||||
@@ -59,15 +61,15 @@ public class FluidFlowLogging extends LoggingListener {
|
|||||||
Levelled newBlock = (Levelled) blockDataFrom.clone();
|
Levelled newBlock = (Levelled) blockDataFrom.clone();
|
||||||
newBlock.setLevel(levelledFrom.getLevel() + 1);
|
newBlock.setLevel(levelledFrom.getLevel() + 1);
|
||||||
if (BukkitUtils.isEmpty(typeTo)) {
|
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)) {
|
} 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) {
|
} else if (typeTo == Material.LAVA) {
|
||||||
int toLevel = ((Levelled) to.getBlockData()).getLevel();
|
int toLevel = ((Levelled) to.getBlockData()).getLevel();
|
||||||
if (toLevel == 0) {
|
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) {
|
} 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)) {
|
if (BukkitUtils.isEmpty(typeTo) || BukkitUtils.getNonFluidProofBlocks().contains(typeTo)) {
|
||||||
@@ -76,9 +78,9 @@ public class FluidFlowLogging extends LoggingListener {
|
|||||||
if (lower.getType() == Material.LAVA) {
|
if (lower.getType() == Material.LAVA) {
|
||||||
int toLevel = ((Levelled) lower.getBlockData()).getLevel();
|
int toLevel = ((Levelled) lower.getBlockData()).getLevel();
|
||||||
if (toLevel == 0) {
|
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) {
|
} 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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user