diff options
Diffstat (limited to 'patch-remap/og/net/minecraft/world/level/block/BlockConcretePowder.patch')
-rw-r--r-- | patch-remap/og/net/minecraft/world/level/block/BlockConcretePowder.patch | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/patch-remap/og/net/minecraft/world/level/block/BlockConcretePowder.patch b/patch-remap/og/net/minecraft/world/level/block/BlockConcretePowder.patch new file mode 100644 index 0000000000..8eb772daf5 --- /dev/null +++ b/patch-remap/og/net/minecraft/world/level/block/BlockConcretePowder.patch @@ -0,0 +1,77 @@ +--- a/net/minecraft/world/level/block/BlockConcretePowder.java ++++ b/net/minecraft/world/level/block/BlockConcretePowder.java +@@ -14,6 +14,12 @@ + import net.minecraft.world.level.block.state.BlockBase; + import net.minecraft.world.level.block.state.IBlockData; + ++// CraftBukkit start ++import org.bukkit.craftbukkit.block.CraftBlockState; ++import org.bukkit.craftbukkit.block.CraftBlockStates; ++import org.bukkit.event.block.BlockFormEvent; ++// CraftBukkit end ++ + public class BlockConcretePowder extends BlockFalling { + + public static final MapCodec<BlockConcretePowder> CODEC = RecordCodecBuilder.mapCodec((instance) -> { +@@ -36,7 +42,7 @@ + @Override + public void onLand(World world, BlockPosition blockposition, IBlockData iblockdata, IBlockData iblockdata1, EntityFallingBlock entityfallingblock) { + if (shouldSolidify(world, blockposition, iblockdata1)) { +- world.setBlock(blockposition, this.concrete.defaultBlockState(), 3); ++ org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(world, blockposition, this.concrete.defaultBlockState(), 3); // CraftBukkit + } + + } +@@ -47,7 +53,24 @@ + BlockPosition blockposition = blockactioncontext.getClickedPos(); + IBlockData iblockdata = world.getBlockState(blockposition); + +- return shouldSolidify(world, blockposition, iblockdata) ? this.concrete.defaultBlockState() : super.getStateForPlacement(blockactioncontext); ++ // CraftBukkit start ++ if (!shouldSolidify(world, blockposition, iblockdata)) { ++ return super.getStateForPlacement(blockactioncontext); ++ } ++ ++ // TODO: An event factory call for methods like this ++ CraftBlockState blockState = CraftBlockStates.getBlockState(world, blockposition); ++ blockState.setData(this.concrete.defaultBlockState()); ++ ++ BlockFormEvent event = new BlockFormEvent(blockState.getBlock(), blockState); ++ world.getServer().server.getPluginManager().callEvent(event); ++ ++ if (!event.isCancelled()) { ++ return blockState.getHandle(); ++ } ++ ++ return super.getStateForPlacement(blockactioncontext); ++ // CraftBukkit end + } + + private static boolean shouldSolidify(IBlockAccess iblockaccess, BlockPosition blockposition, IBlockData iblockdata) { +@@ -83,7 +106,25 @@ + + @Override + public IBlockData updateShape(IBlockData iblockdata, EnumDirection enumdirection, IBlockData iblockdata1, GeneratorAccess generatoraccess, BlockPosition blockposition, BlockPosition blockposition1) { +- return touchesLiquid(generatoraccess, blockposition) ? this.concrete.defaultBlockState() : super.updateShape(iblockdata, enumdirection, iblockdata1, generatoraccess, blockposition, blockposition1); ++ // CraftBukkit start ++ if (touchesLiquid(generatoraccess, blockposition)) { ++ // Suppress during worldgen ++ if (!(generatoraccess instanceof World)) { ++ return this.concrete.defaultBlockState(); ++ } ++ CraftBlockState blockState = CraftBlockStates.getBlockState(generatoraccess, blockposition); ++ blockState.setData(this.concrete.defaultBlockState()); ++ ++ BlockFormEvent event = new BlockFormEvent(blockState.getBlock(), blockState); ++ ((World) generatoraccess).getCraftServer().getPluginManager().callEvent(event); ++ ++ if (!event.isCancelled()) { ++ return blockState.getHandle(); ++ } ++ } ++ ++ return super.updateShape(iblockdata, enumdirection, iblockdata1, generatoraccess, blockposition, blockposition1); ++ // CraftBukkit end + } + + @Override |