64 lines
2.5 KiB
Diff
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) {
|