From e333cb0d9b353fcd4828e679634afa442a06e992 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 23 Nov 2019 17:55:42 -0600 Subject: [PATCH] Implement infinite lava --- src/main/java/net/minecraft/server/FluidTypeFlowing.java | 9 ++++++++- src/main/java/net/minecraft/server/FluidTypeLava.java | 7 +++++++ src/main/java/net/minecraft/server/WorldProvider.java | 2 +- src/main/java/net/pl3x/purpur/PurpurWorldConfig.java | 5 +++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/FluidTypeFlowing.java b/src/main/java/net/minecraft/server/FluidTypeFlowing.java index 376dca1889..c8abe61cf7 100644 --- a/src/main/java/net/minecraft/server/FluidTypeFlowing.java +++ b/src/main/java/net/minecraft/server/FluidTypeFlowing.java @@ -219,7 +219,7 @@ public abstract class FluidTypeFlowing extends FluidType { } } - if (this.f() && j >= 2) { + if (infinite(iworldreader) && j >= 2) { // Purpur IBlockData iblockdata2 = iworldreader.getType(blockposition.down()); Fluid fluid1 = iblockdata2.getFluid(); @@ -290,6 +290,13 @@ public abstract class FluidTypeFlowing extends FluidType { return (Fluid) this.e().h().set(FluidTypeFlowing.FALLING, flag); } + // Purpur start + protected boolean infinite(IWorldReader iworldreader) { + return infinite(); + } + // Purpur end + + protected boolean infinite() { return f(); } // Purpur - OBFHELPER protected abstract boolean f(); protected void a(GeneratorAccess generatoraccess, BlockPosition blockposition, IBlockData iblockdata, EnumDirection enumdirection, Fluid fluid) { diff --git a/src/main/java/net/minecraft/server/FluidTypeLava.java b/src/main/java/net/minecraft/server/FluidTypeLava.java index d25368d032..09f82c2d92 100644 --- a/src/main/java/net/minecraft/server/FluidTypeLava.java +++ b/src/main/java/net/minecraft/server/FluidTypeLava.java @@ -147,6 +147,13 @@ public abstract class FluidTypeLava extends FluidTypeFlowing { generatoraccess.triggerEffect(1501, blockposition, 0); } + // Purpur start + @Override + protected boolean infinite(IWorldReader iworldreader) { + return iworldreader.getWorldProvider().getWorld().purpurConfig.lavaInfinite; + } + // Purpur end + @Override protected boolean f() { return false; diff --git a/src/main/java/net/minecraft/server/WorldProvider.java b/src/main/java/net/minecraft/server/WorldProvider.java index 9eba9a12c0..39252e6873 100644 --- a/src/main/java/net/minecraft/server/WorldProvider.java +++ b/src/main/java/net/minecraft/server/WorldProvider.java @@ -5,7 +5,7 @@ import javax.annotation.Nullable; public abstract class WorldProvider { public static final float[] a = new float[]{1.0F, 0.75F, 0.5F, 0.25F, 0.0F, 0.25F, 0.5F, 0.75F}; - protected final World b; + protected final World b; public World getWorld() { return b; } // Purpur - OBFHELPER private final DimensionManager f; protected boolean c; protected boolean d; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index b82fc8d19f..059ecf375c 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -155,6 +155,11 @@ public class PurpurWorldConfig { milkCuresBadOmen = getBoolean("milk-cures-bad-omen", milkCuresBadOmen); } + public boolean lavaInfinite = false; + private void lavaSettings() { + lavaInfinite = getBoolean("settings.lava-flow.infinite", lavaInfinite); + } + public int elytraDamagePerSecond = 1; public double elytraDamageMultiplyBySpeed = 0; public boolean elytraIgnoreUnbreaking = false; -- 2.24.0