385f313a8b
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: d41796de SPIGOT-7071: Add Player#stopSound(SoundCategory category) 61dae5b2 SPIGOT-7011, SPIGOT-7065: Overhaul of structures CraftBukkit Changes: 991aeda12 SPIGOT-1729, SPIGOT-7090: Keep precision in teleportation between worlds 5c9a5f628 SPIGOT-7071: Add Player#stopSound(SoundCategory category) 68f888ded SPIGOT-7011, SPIGOT-7065: Overhaul of structures 0231a3746 Remove outdated build delay. Spigot Changes: 475f6008 Rebuild patches 8ce1761f Rebuild patches
69 Zeilen
4.4 KiB
Diff
69 Zeilen
4.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Tue, 29 Mar 2022 13:46:23 -0700
|
|
Subject: [PATCH] Fire CauldronLevelChange on initial fill
|
|
|
|
Also don't fire level events or game events if stalactite
|
|
drip is cancelled
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/CauldronBlock.java b/src/main/java/net/minecraft/world/level/block/CauldronBlock.java
|
|
index 53089c3a36bf2c0ec1bc9b436884deff0c30f028..46846ac9981e447fc6886aecf82563378a4f5548 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/CauldronBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/CauldronBlock.java
|
|
@@ -36,10 +36,18 @@ public class CauldronBlock extends AbstractCauldronBlock {
|
|
public void handlePrecipitation(BlockState state, Level world, BlockPos pos, Biome.Precipitation precipitation) {
|
|
if (CauldronBlock.shouldHandlePrecipitation(world, precipitation)) {
|
|
if (precipitation == Biome.Precipitation.RAIN) {
|
|
- world.setBlockAndUpdate(pos, Blocks.WATER_CAULDRON.defaultBlockState());
|
|
+ // Paper start - call event for initial fill
|
|
+ if (!LayeredCauldronBlock.changeLevel(state, world, pos, Blocks.WATER_CAULDRON.defaultBlockState(), null, CauldronLevelChangeEvent.ChangeReason.NATURAL_FILL)) {
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
world.gameEvent((Entity) null, GameEvent.BLOCK_CHANGE, pos);
|
|
} else if (precipitation == Biome.Precipitation.SNOW) {
|
|
- world.setBlockAndUpdate(pos, Blocks.POWDER_SNOW_CAULDRON.defaultBlockState());
|
|
+ // Paper start - call event for initial fill
|
|
+ if (!LayeredCauldronBlock.changeLevel(state, world, pos, Blocks.POWDER_SNOW_CAULDRON.defaultBlockState(), null, CauldronLevelChangeEvent.ChangeReason.NATURAL_FILL)) {
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
world.gameEvent((Entity) null, GameEvent.BLOCK_CHANGE, pos);
|
|
}
|
|
|
|
@@ -57,11 +65,19 @@ public class CauldronBlock extends AbstractCauldronBlock {
|
|
|
|
if (fluid == Fluids.WATER) {
|
|
iblockdata1 = Blocks.WATER_CAULDRON.defaultBlockState();
|
|
- LayeredCauldronBlock.changeLevel(state, world, pos, iblockdata1, null, CauldronLevelChangeEvent.ChangeReason.NATURAL_FILL); // CraftBukkit
|
|
+ // Paper start - don't send level event or game event if cancelled
|
|
+ if (!LayeredCauldronBlock.changeLevel(state, world, pos, iblockdata1, null, CauldronLevelChangeEvent.ChangeReason.NATURAL_FILL)) { // CraftBukkit
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
world.levelEvent(1047, pos, 0);
|
|
} else if (fluid == Fluids.LAVA) {
|
|
iblockdata1 = Blocks.LAVA_CAULDRON.defaultBlockState();
|
|
- LayeredCauldronBlock.changeLevel(state, world, pos, iblockdata1, null, CauldronLevelChangeEvent.ChangeReason.NATURAL_FILL); // CraftBukkit
|
|
+ // Paper start - don't send level event or game event if cancelled
|
|
+ if (!LayeredCauldronBlock.changeLevel(state, world, pos, iblockdata1, null, CauldronLevelChangeEvent.ChangeReason.NATURAL_FILL)) { // CraftBukkit
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
world.levelEvent(1046, pos, 0);
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/LayeredCauldronBlock.java b/src/main/java/net/minecraft/world/level/block/LayeredCauldronBlock.java
|
|
index 24d2da792bc498adf4251555a538df4cafe2e827..1a7cb12fd3f183c00079d679452a01b8df8d2bbb 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/LayeredCauldronBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/LayeredCauldronBlock.java
|
|
@@ -91,7 +91,7 @@ public class LayeredCauldronBlock extends AbstractCauldronBlock {
|
|
}
|
|
|
|
// CraftBukkit start
|
|
- public static boolean changeLevel(BlockState iblockdata, Level world, BlockPos blockposition, BlockState newBlock, Entity entity, CauldronLevelChangeEvent.ChangeReason reason) {
|
|
+ public static boolean changeLevel(BlockState iblockdata, Level world, BlockPos blockposition, BlockState newBlock, @javax.annotation.Nullable Entity entity, CauldronLevelChangeEvent.ChangeReason reason) { // Paper - entity is nullable
|
|
CraftBlockState newState = CraftBlockStates.getBlockState(world, blockposition);
|
|
newState.setData(newBlock);
|
|
|