From b446cb5d744836d3de6288da0ef5761dc127a78a Mon Sep 17 00:00:00 2001 From: md_5 Date: Thu, 13 Dec 2018 14:28:34 +1100 Subject: SPIGOT-4527: Fix sponges with waterlogged blocks --- nms-patches/BlockSponge.patch | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/nms-patches/BlockSponge.patch b/nms-patches/BlockSponge.patch index a2e22a37..f6f58628 100644 --- a/nms-patches/BlockSponge.patch +++ b/nms-patches/BlockSponge.patch @@ -46,12 +46,12 @@ ++i; if (j < 6) { linkedlist.add(new Tuple(blockposition2, j + 1)); -@@ -75,6 +82,31 @@ +@@ -75,6 +82,37 @@ break; } } + // CraftBukkit start -+ List blocks = blockList.getList(); ++ List blocks = blockList.getList(); // Is a clone + if (!blocks.isEmpty()) { + final org.bukkit.block.Block bblock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); + @@ -65,12 +65,18 @@ + for (CraftBlockState block : blocks) { + BlockPosition blockposition2 = new BlockPosition(block.getX(), block.getY(), block.getZ()); + IBlockData iblockdata = world.getType(blockposition2); ++ Fluid fluid = world.getFluid(blockposition2); + Material material = iblockdata.getMaterial(); + -+ if (material == Material.WATER_PLANT || material == Material.REPLACEABLE_WATER_PLANT) { -+ iblockdata.a(world, blockposition2, 0); ++ 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); ++ } + } -+ + world.setTypeAndData(blockposition2, block.getHandle(), block.getFlag()); + } + } -- cgit v1.2.3