Fix NPE in SculkBloomEvent world access

This commit is contained in:
Lulu13022002 2023-10-20 19:50:22 +02:00
parent a6ef388655
commit 93c87bedaf

View file

@ -1,12 +1,17 @@
--- a/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java
@@ -35,10 +35,13 @@
public SculkCatalystBlockEntity(BlockPos pos, BlockState state) {
super(BlockEntityType.SCULK_CATALYST, pos, state);
@@ -37,8 +37,18 @@
this.catalystListener = new SculkCatalystBlockEntity.CatalystListener(state, new BlockPositionSource(pos));
+ this.catalystListener.level = this.level; // CraftBukkit
}
+ // Paper start - Fix NPE in SculkBloomEvent world access
+ @Override
+ public void setLevel(Level level) {
+ super.setLevel(level);
+ this.catalystListener.sculkSpreader.level = level;
+ }
+ // Paper end - Fix NPE in SculkBloomEvent world access
+
public static void serverTick(Level world, BlockPos pos, BlockState state, SculkCatalystBlockEntity blockEntity) {
+ org.bukkit.craftbukkit.event.CraftEventFactory.sourceBlockOverride = blockEntity.getBlockPos(); // CraftBukkit - SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPosition up to five methods deep.
blockEntity.catalystListener.getSculkSpreader().updateCursors(world, pos, world.getRandom(), true);
@ -14,17 +19,11 @@
}
@Override
@@ -64,11 +67,13 @@
final SculkSpreader sculkSpreader;
private final BlockState blockState;
private final PositionSource positionSource;
+ private Level level; // CraftBukkit
public CatalystListener(BlockState state, PositionSource positionSource) {
@@ -69,6 +79,7 @@
this.blockState = state;
this.positionSource = positionSource;
this.sculkSpreader = SculkSpreader.createLevelSpreader();
+ this.sculkSpreader.level = this.level; // CraftBukkit
+ // this.sculkSpreader.level = this.level; // CraftBukkit // Paper - Fix NPE in SculkBloomEvent world access
}
@Override