2025-03-26 03:05:00 +11:00

64 lines
2.5 KiB
Diff

--- 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<SculkSpreader.a> cursors = new ArrayList();
+ public World level; // CraftBukkit
public SculkSpreader(boolean flag, TagKey<Block> 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) {