3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-12-21 05:50:05 +01:00

SPIGOT-4527: Fix sponges with waterlogged blocks

Dieser Commit ist enthalten in:
md_5 2018-12-13 14:28:34 +11:00
Ursprung 6ec8ea5cf4
Commit b446cb5d74

Datei anzeigen

@ -46,12 +46,12 @@
++i; ++i;
if (j < 6) { if (j < 6) {
linkedlist.add(new Tuple(blockposition2, j + 1)); linkedlist.add(new Tuple(blockposition2, j + 1));
@@ -75,6 +82,31 @@ @@ -75,6 +82,37 @@
break; break;
} }
} }
+ // CraftBukkit start + // CraftBukkit start
+ List<CraftBlockState> blocks = blockList.getList(); + List<CraftBlockState> blocks = blockList.getList(); // Is a clone
+ if (!blocks.isEmpty()) { + if (!blocks.isEmpty()) {
+ final org.bukkit.block.Block bblock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); + final org.bukkit.block.Block bblock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
+ +
@ -65,12 +65,18 @@
+ for (CraftBlockState block : blocks) { + for (CraftBlockState block : blocks) {
+ BlockPosition blockposition2 = new BlockPosition(block.getX(), block.getY(), block.getZ()); + BlockPosition blockposition2 = new BlockPosition(block.getX(), block.getY(), block.getZ());
+ IBlockData iblockdata = world.getType(blockposition2); + IBlockData iblockdata = world.getType(blockposition2);
+ Fluid fluid = world.getFluid(blockposition2);
+ Material material = iblockdata.getMaterial(); + Material material = iblockdata.getMaterial();
+ +
+ if (material == Material.WATER_PLANT || material == Material.REPLACEABLE_WATER_PLANT) { + if (fluid.a(TagsFluid.WATER)) {
+ if (iblockdata.getBlock() instanceof IFluidSource && ((IFluidSource) iblockdata.getBlock()).a(blockList, blockposition2, iblockdata) != FluidTypes.a) {
+ // NOP
+ } else if (iblockdata.getBlock() instanceof BlockFluids) {
+ // NOP
+ } else if (material == Material.WATER_PLANT || material == Material.REPLACEABLE_WATER_PLANT) {
+ iblockdata.a(world, blockposition2, 0); + iblockdata.a(world, blockposition2, 0);
+ } + }
+ + }
+ world.setTypeAndData(blockposition2, block.getHandle(), block.getFlag()); + world.setTypeAndData(blockposition2, block.getHandle(), block.getFlag());
+ } + }
+ } + }