From 7f3837f1fe94f9fc1ecfb943aa07ecd3eb3c23f4 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Fri, 9 Jul 2021 06:27:21 +0200 Subject: [PATCH] Fix logging bonemealing moss --- .../java/de/diddiz/LogBlock/LogBlock.java | 5 ++- .../listeners/BlockFertilizeLogging.java | 36 +++++++++++++++++++ .../listeners/StructureGrowLogging.java | 20 ++++------- 3 files changed, 47 insertions(+), 14 deletions(-) create mode 100644 src/main/java/de/diddiz/LogBlock/listeners/BlockFertilizeLogging.java diff --git a/src/main/java/de/diddiz/LogBlock/LogBlock.java b/src/main/java/de/diddiz/LogBlock/LogBlock.java index 38e9d42..4075e23 100644 --- a/src/main/java/de/diddiz/LogBlock/LogBlock.java +++ b/src/main/java/de/diddiz/LogBlock/LogBlock.java @@ -189,9 +189,12 @@ public class LogBlock extends JavaPlugin { if (isLogging(Logging.WITHER)) { pm.registerEvents(new WitherLogging(this), this); } - if (isLogging(Logging.NATURALSTRUCTUREGROW) || isLogging(Logging.BONEMEALSTRUCTUREGROW)) { + if (isLogging(Logging.NATURALSTRUCTUREGROW)) { pm.registerEvents(new StructureGrowLogging(this), this); } + if (isLogging(Logging.BONEMEALSTRUCTUREGROW)) { + pm.registerEvents(new BlockFertilizeLogging(this), this); + } if (isLogging(Logging.GRASSGROWTH) || isLogging(Logging.MYCELIUMSPREAD) || isLogging(Logging.VINEGROWTH) || isLogging(Logging.MUSHROOMSPREAD) || isLogging(Logging.BAMBOOGROWTH) || isLogging(Logging.DRIPSTONEGROWTH)) { pm.registerEvents(new BlockSpreadLogging(this), this); } diff --git a/src/main/java/de/diddiz/LogBlock/listeners/BlockFertilizeLogging.java b/src/main/java/de/diddiz/LogBlock/listeners/BlockFertilizeLogging.java new file mode 100644 index 0000000..b77ebcd --- /dev/null +++ b/src/main/java/de/diddiz/LogBlock/listeners/BlockFertilizeLogging.java @@ -0,0 +1,36 @@ +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.WorldConfig; +import org.bukkit.block.BlockState; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.block.BlockFertilizeEvent; +import static de.diddiz.LogBlock.config.Config.getWorldConfig; + +public class BlockFertilizeLogging extends LoggingListener { + public BlockFertilizeLogging(LogBlock lb) { + super(lb); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockFertilize(BlockFertilizeEvent event) { + final WorldConfig wcfg = getWorldConfig(event.getBlock().getLocation().getWorld()); + if (wcfg != null) { + if (!wcfg.isLogging(Logging.BONEMEALSTRUCTUREGROW)) { + return; + } + final Actor actor; + if (event.getPlayer() != null) { + actor = Actor.actorFromEntity(event.getPlayer()); + } else { + actor = new Actor("Dispenser"); + } + for (final BlockState state : event.getBlocks()) { + consumer.queueBlockReplace(actor, state.getBlock().getState(), state); + } + } + } +} diff --git a/src/main/java/de/diddiz/LogBlock/listeners/StructureGrowLogging.java b/src/main/java/de/diddiz/LogBlock/listeners/StructureGrowLogging.java index c5730d2..62f4357 100644 --- a/src/main/java/de/diddiz/LogBlock/listeners/StructureGrowLogging.java +++ b/src/main/java/de/diddiz/LogBlock/listeners/StructureGrowLogging.java @@ -20,20 +20,14 @@ public class StructureGrowLogging extends LoggingListener { public void onStructureGrow(StructureGrowEvent event) { final WorldConfig wcfg = getWorldConfig(event.getWorld()); if (wcfg != null) { - final Actor actor; - if (event.getPlayer() != null) { - if (!wcfg.isLogging(Logging.BONEMEALSTRUCTUREGROW)) { - return; - } - actor = Actor.actorFromEntity(event.getPlayer()); - } else { - if (!wcfg.isLogging(Logging.NATURALSTRUCTUREGROW)) { - return; - } - actor = new Actor("NaturalGrow"); + if (!wcfg.isLogging(Logging.NATURALSTRUCTUREGROW)) { + return; } - for (final BlockState state : event.getBlocks()) { - consumer.queueBlockReplace(actor, state.getBlock().getState(), state); + if (!event.isFromBonemeal()) { + final Actor actor = new Actor("NaturalGrow"); + for (final BlockState state : event.getBlocks()) { + consumer.queueBlockReplace(actor, state.getBlock().getState(), state); + } } } }