aboutsummaryrefslogtreecommitdiffhomepage
path: root/patch-remap/og/net/minecraft/world/level/block/BlockConcretePowder.patch
diff options
context:
space:
mode:
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.patch77
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