From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 23 Nov 2019 17:55:42 -0600 Subject: [PATCH] Implement infinite liquids diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java index c2c3ed6ba79f9f41497e042571f699a0fc6e9335..a1d0329401dbb9e5f0fd27bd42d1c5a7c40d1c03 100644 --- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java +++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java @@ -226,7 +226,7 @@ public abstract class FlowingFluid extends Fluid { } } - if (this.canConvertToSource() && j >= 2) { + if (this.canConvertToSource(world) && j >= getRequiredSources(world)) { BlockState iblockdata2 = world.getBlockState(pos.below()); FluidState fluid1 = iblockdata2.getFluidState(); @@ -322,6 +322,16 @@ public abstract class FlowingFluid extends Fluid { return (FluidState) this.getSource().defaultFluidState().setValue(FlowingFluid.FALLING, falling); } + // Purpur start + protected boolean canConvertToSource(LevelReader world) { + return canConvertToSource(); + } + + protected int getRequiredSources(LevelReader world) { + return 2; + } + // Purpur end + protected abstract boolean canConvertToSource(); protected void spreadTo(LevelAccessor world, BlockPos pos, BlockState state, Direction direction, FluidState fluidState) { diff --git a/src/main/java/net/minecraft/world/level/material/LavaFluid.java b/src/main/java/net/minecraft/world/level/material/LavaFluid.java index 5dfa257e99c778113cfa8ca74f56482285b3a006..3bba47381e07c5edad4b18dfbdf152812baeef13 100644 --- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java +++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java @@ -198,6 +198,18 @@ public abstract class LavaFluid extends FlowingFluid { world.levelEvent(1501, pos, 0); } + // Purpur start + @Override + protected boolean canConvertToSource(LevelReader world) { + return world.getWorldBorder().world.purpurConfig.lavaInfinite; + } + + @Override + protected int getRequiredSources(LevelReader world) { + return world.getWorldBorder().world.purpurConfig.lavaInfiniteRequiredSources; + } + // Purpur end + @Override protected boolean canConvertToSource() { return false; diff --git a/src/main/java/net/minecraft/world/level/material/WaterFluid.java b/src/main/java/net/minecraft/world/level/material/WaterFluid.java index 56d50b9310d30e0f81f3d2549ff5c256eb07cc2a..4cc6d665c7d52b6edcaaa5f9ed1314077f68c224 100644 --- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java +++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java @@ -63,6 +63,18 @@ public abstract class WaterFluid extends FlowingFluid { return true; } + // Purpur start + @Override + protected boolean canConvertToSource(LevelReader world) { + return world.getWorldBorder().world.purpurConfig.waterInfinite; + } + + @Override + protected int getRequiredSources(LevelReader world) { + return world.getWorldBorder().world.purpurConfig.waterInfiniteRequiredSources; + } + // Purpur end + // Paper start @Override protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 39b47c37523950e9282b8db9e028795ee48f1155..58e2ae7e885c1fd838001f077affe08bf4dc3da3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -224,6 +224,13 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } + public boolean lavaInfinite = false; + public int lavaInfiniteRequiredSources = 2; + private void lavaSettings() { + lavaInfinite = getBoolean("blocks.lava.infinite-source", lavaInfinite); + lavaInfiniteRequiredSources = getInt("blocks.lava.infinite-required-sources", lavaInfiniteRequiredSources); + } + public boolean signRightClickEdit = false; private void signSettings() { signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); @@ -238,6 +245,13 @@ public class PurpurWorldConfig { turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); } + public boolean waterInfinite = true; + public int waterInfiniteRequiredSources = 2; + private void waterSources() { + waterInfinite = getBoolean("blocks.water.infinite-source", waterInfinite); + waterInfiniteRequiredSources = getInt("blocks.water.infinite-required-sources", waterInfiniteRequiredSources); + } + public boolean babiesAreRidable = true; public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false;