--- a/net/minecraft/world/level/block/SculkSpreader.java +++ b/net/minecraft/world/level/block/SculkSpreader.java @@ -35,6 +35,14 @@ import net.minecraft.world.level.GeneratorAccess; import net.minecraft.world.level.block.state.IBlockData; +// CraftBukkit start +import net.minecraft.nbt.NBTBase; +import net.minecraft.world.level.World; +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.block.CraftBlock; +import org.bukkit.event.block.SculkBloomEvent; +// CraftBukkit end + public class SculkSpreader { public static final int MAX_GROWTH_RATE_RADIUS = 24; @@ -50,6 +58,7 @@ private final int chargeDecayRate; private final int additionalDecayRate; private List cursors = new ArrayList(); + public World level; // CraftBukkit public SculkSpreader(boolean flag, TagKey tagkey, int i, int j, int k, int l) { this.isWorldGeneration = flag; @@ -103,7 +112,7 @@ public void load(NBTTagCompound nbttagcompound) { this.cursors.clear(); - ((List) nbttagcompound.read("cursors", SculkSpreader.a.CODEC.sizeLimitedListOf(32)).orElse(List.of())).forEach(this::addCursor); + (nbttagcompound.read("cursors", SculkSpreader.a.CODEC.sizeLimitedListOf(32)).orElse(List.of())).forEach(this::addCursor); // CraftBukkit - decompile error } public void save(NBTTagCompound nbttagcompound) { @@ -122,6 +131,19 @@ private void addCursor(SculkSpreader.a sculkspreader_a) { if (this.cursors.size() < 32) { + // CraftBukkit start + if (!isWorldGeneration()) { // CraftBukkit - SPIGOT-7475: Don't call event during world generation + CraftBlock bukkitBlock = CraftBlock.at(level, sculkspreader_a.pos); + SculkBloomEvent event = new SculkBloomEvent(bukkitBlock, sculkspreader_a.getCharge()); + Bukkit.getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + + sculkspreader_a.charge = event.getCharge(); + } + // CraftBukkit end + this.cursors.add(sculkspreader_a); } } @@ -214,7 +236,7 @@ this.charge = i; this.decayDelay = j; this.updateDelay = k; - this.facings = (Set) optional.orElse((Object) null); + this.facings = (Set) optional.orElse(null); // CraftBukkit - decompile error } public a(BlockPosition blockposition, int i) {