From 6fc1a2b41153994c4886c620fdf6dd2ce12f7977 Mon Sep 17 00:00:00 2001 From: MrJeremyFisher <63616270+MrJeremyFisher@users.noreply.github.com> Date: Wed, 28 Feb 2024 23:32:56 -0500 Subject: [PATCH] Prevent grass spread to reinforced dirt --- .../mc/citadel/listener/BlockListener.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/plugins/citadel-paper/src/main/java/vg/civcraft/mc/citadel/listener/BlockListener.java b/plugins/citadel-paper/src/main/java/vg/civcraft/mc/citadel/listener/BlockListener.java index f1f8a2cf4..b6ddff072 100644 --- a/plugins/citadel-paper/src/main/java/vg/civcraft/mc/citadel/listener/BlockListener.java +++ b/plugins/citadel-paper/src/main/java/vg/civcraft/mc/citadel/listener/BlockListener.java @@ -28,6 +28,7 @@ import org.bukkit.event.block.BlockDispenseEvent; import org.bukkit.event.block.BlockFertilizeEvent; import org.bukkit.event.block.BlockFromToEvent; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.block.BlockSpreadEvent; import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerHarvestBlockEvent; @@ -198,6 +199,22 @@ public class BlockListener implements Listener { } } + // prevent "enemy" grass spreading to reinforced dirt + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onGrassSpread(BlockSpreadEvent event) { + if (event.getSource().getType() != Material.GRASS_BLOCK) return; + + Reinforcement destRein = ReinforcementLogic.getReinforcementProtecting(event.getBlock()); + + if (destRein != null) { + Reinforcement sourceRein = ReinforcementLogic.getReinforcementProtecting(event.getSource()); + + if (sourceRein == null || sourceRein.getGroupId() != destRein.getGroupId()) { + event.setCancelled(true); + } + } + } + // prevent breaking reinforced blocks through plant growth @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onStructureGrow(StructureGrowEvent event) {