diff --git a/README.md b/README.md index 46eb096..17fc80d 100644 --- a/README.md +++ b/README.md @@ -49,9 +49,6 @@ - And some fixes from various places.
-## Compatibility -- `CoreProtect` is incompatible with `feature.liquid-physics` (Generates an error, but does not cause the server to crash) - ## Benchmark I don't know diff --git a/patches/api/0005-Vine-Config.patch b/patches/api/0005-Vine-Config.patch index 455ee20..e70c1e6 100644 --- a/patches/api/0005-Vine-Config.patch +++ b/patches/api/0005-Vine-Config.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Vine Config diff --git a/src/main/java/one/tranic/vine/config/VineConfig.java b/src/main/java/one/tranic/vine/config/VineConfig.java new file mode 100644 -index 0000000000000000000000000000000000000000..fb5b6306efe79a7f7d5ba2fc8e4200997fd09621 +index 0000000000000000000000000000000000000000..f10bcb077e93b4f9d491780de0d546c572ec0d07 --- /dev/null +++ b/src/main/java/one/tranic/vine/config/VineConfig.java -@@ -0,0 +1,149 @@ +@@ -0,0 +1,154 @@ +package one.tranic.vine.config; + +import one.tranic.vine.region.Compression; @@ -47,7 +47,6 @@ index 0000000000000000000000000000000000000000..fb5b6306efe79a7f7d5ba2fc8e420099 + // If the player is blocked on the top of the player's head, he will not try to rebirth the player on the ceiling. + public static boolean disableRespawnCeiling = false; + public static boolean flattenTriangularDistribution = false; -+ public static boolean liquidPhysics = false; + /** + * Switch to a 1024-bit secure seed to protect it from being cracked. + * Destroy the ambitions of those cheaters. @@ -73,6 +72,12 @@ index 0000000000000000000000000000000000000000..fb5b6306efe79a7f7d5ba2fc8e420099 + public static boolean fireworks = false; + } + ++ public static class liquidPhysics { ++ public static boolean base = false; ++ // Allow explosions underwater ++ public static boolean aeu = false; ++ } ++ + public static class Region { + // Support: ANVIL (Vanilla), LINEAR, SECTORFILE + public static Format format = Format.ANVIL; diff --git a/patches/server/0011-Vine-Config-Feature.patch b/patches/server/0011-Vine-Config-Feature.patch index efd7f9d..242bb69 100644 --- a/patches/server/0011-Vine-Config-Feature.patch +++ b/patches/server/0011-Vine-Config-Feature.patch @@ -37,6 +37,34 @@ index 0000000000000000000000000000000000000000..657642f146baea146e6b2274052eb76a + } +} \ No newline at end of file +diff --git a/src/main/kotlin/one/tranic/vine/config/module/feature/LiquidPhysics.kt b/src/main/kotlin/one/tranic/vine/config/module/feature/LiquidPhysics.kt +new file mode 100644 +index 0000000000000000000000000000000000000000..3e1b0a8928b6703fcaffef38476a66e090650841 +--- /dev/null ++++ b/src/main/kotlin/one/tranic/vine/config/module/feature/LiquidPhysics.kt +@@ -0,0 +1,21 @@ ++package one.tranic.vine.config.module.feature ++ ++import one.tranic.vine.config.VineConfig.Feature ++import one.tranic.vine.config.impl.ConfigImpl ++import one.tranic.vine.config.util.ConfigHelper ++ ++object LiquidPhysics : ConfigImpl, ConfigHelper() { ++ private const val BASEPATH = "feature.liquid-physics" ++ override fun default() { ++ addDefault("$BASEPATH.base", false) ++ addDefault("$BASEPATH.aeu", false, "Allow explosions to destroy fluids") ++ addComment(BASEPATH, "The new liquid physics system may affect some mechanisms.") ++ } ++ ++ override fun load() { ++ Feature.liquidPhysics.base = getBoolean("$BASEPATH.base") ++ Feature.liquidPhysics.aeu = getBoolean("$BASEPATH.aeu") ++ } ++ ++ ++} +\ No newline at end of file diff --git a/src/main/kotlin/one/tranic/vine/config/module/feature/PlayerProfile.kt b/src/main/kotlin/one/tranic/vine/config/module/feature/PlayerProfile.kt new file mode 100644 index 0000000000000000000000000000000000000000..4c9654fd67f8b68a30af044b0886e146412cf34b @@ -161,10 +189,10 @@ index 0000000000000000000000000000000000000000..0beda6c4679b93cdde58c58cd5b69e86 \ No newline at end of file diff --git a/src/main/kotlin/one/tranic/vine/config/module/feature/Value.kt b/src/main/kotlin/one/tranic/vine/config/module/feature/Value.kt new file mode 100644 -index 0000000000000000000000000000000000000000..782e236848d0d684750f152b28df1ef145227b54 +index 0000000000000000000000000000000000000000..7853408d6788116deb8822721c325dc9f958b63c --- /dev/null +++ b/src/main/kotlin/one/tranic/vine/config/module/feature/Value.kt -@@ -0,0 +1,59 @@ +@@ -0,0 +1,57 @@ +package one.tranic.vine.config.module.feature + +import one.tranic.vine.config.VineConfig.Feature @@ -193,7 +221,6 @@ index 0000000000000000000000000000000000000000..782e236848d0d684750f152b28df1ef1 + "With that edge cases are more likely to happen" + ) + ) -+ addDefault("feature.liquid-physics", false, "The new liquid physics system may affect some mechanisms.") + addDefault( + "feature.secure-seed", false, listOf( + "Changes the seed from 64bit to 1024bit, this will strictly secure your seed,", @@ -211,7 +238,6 @@ index 0000000000000000000000000000000000000000..782e236848d0d684750f152b28df1ef1 + Feature.disableSpark = getBoolean("feature.disable-spark") + Feature.disableRespawnCeiling = getBoolean("feature.disable-respawn-ceiling") + Feature.flattenTriangularDistribution = getBoolean("feature.flatten-triangular-distribution") -+ Feature.liquidPhysics = getBoolean("feature.liquid-physics") + getBoolean("feature.secure-seed") { + if (Locker.secureSeed == null) { + Feature.secureSeed = it diff --git a/patches/server/0122-Kiterino-New-liquid-physics.patch b/patches/server/0122-Kiterino-New-liquid-physics.patch index f364fb3..815178d 100644 --- a/patches/server/0122-Kiterino-New-liquid-physics.patch +++ b/patches/server/0122-Kiterino-New-liquid-physics.patch @@ -6,14 +6,14 @@ Subject: [PATCH] Kiterino: New liquid physics You can find the original code on https://github.com/SoSeDiKs-Universe/Kiterino diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java -index ca5d3e0dd4da0aab64a566e6facd8492a166f323..c40bd571195e5a094bee9bbc429c1663cf99fdf7 100644 +index ca5d3e0dd4da0aab64a566e6facd8492a166f323..07e63d2bd79e80c20d1d1f402b1b3d766881608d 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java @@ -616,6 +616,7 @@ public class Boat extends VehicleEntity implements VariantHolder { int j = Mth.ceil(axisalignedbb.maxX); int k = Mth.floor(axisalignedbb.minY); int l = Mth.ceil(axisalignedbb.minY + 0.001D); -+ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics) l++; // Vine - Kiterino extra height ++ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base) l++; // Vine - Kiterino extra height int i1 = Mth.floor(axisalignedbb.minZ); int j1 = Mth.ceil(axisalignedbb.maxZ); boolean flag = false; @@ -22,12 +22,12 @@ index ca5d3e0dd4da0aab64a566e6facd8492a166f323..c40bd571195e5a094bee9bbc429c1663 if (fluid.is(FluidTags.WATER) && d0 < (double) ((float) blockposition_mutableblockposition.getY() + fluid.getHeight(this.level(), blockposition_mutableblockposition))) { if (!fluid.isSource()) { - return Boat.Status.UNDER_FLOWING_WATER; -+ return one.tranic.vine.config.VineConfig.Feature.liquidPhysics ? Boat.Status.UNDER_FLOWING_WATER : (fluid.getAmount() == 8 ? Boat.Status.UNDER_FLOWING_WATER : Boat.Status.IN_WATER); // Vine - Kiterino Do not sink boats in flowing water ++ return one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base ? Boat.Status.UNDER_FLOWING_WATER : (fluid.getAmount() == 8 ? Boat.Status.UNDER_FLOWING_WATER : Boat.Status.IN_WATER); // Vine - Kiterino Do not sink boats in flowing water } flag = true; diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java -index ce639e4a2d87202a10ef4fc73274c4b2c4e95720..793cfa19bd8ca96239683f0f269accd2db03a062 100644 +index ce639e4a2d87202a10ef4fc73274c4b2c4e95720..c2dc94cee4e1610654d6856d382cfb3e73e1b956 100644 --- a/src/main/java/net/minecraft/world/level/block/Blocks.java +++ b/src/main/java/net/minecraft/world/level/block/Blocks.java @@ -347,7 +347,7 @@ public class Blocks { @@ -35,19 +35,19 @@ index ce639e4a2d87202a10ef4fc73274c4b2c4e95720..793cfa19bd8ca96239683f0f269accd2 .noCollission() .strength(100.0F) - .pushReaction(PushReaction.DESTROY) -+ .pushReaction(one.tranic.vine.config.VineConfig.Feature.liquidPhysics ? PushReaction.PUSH_ONLY : PushReaction.DESTROY) // Vine - Kiterino pushable water ++ .pushReaction(one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base ? PushReaction.PUSH_ONLY : PushReaction.DESTROY) // Vine - Kiterino pushable water .noLootTable() .liquid() .sound(SoundType.EMPTY) diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonBaseBlock.java b/src/main/java/net/minecraft/world/level/block/piston/PistonBaseBlock.java -index e0c62227b279a5fe0f3868fbf9ce8c78c515a09c..79a1ed3b7e38d1addb611d464be9e3cb40d6ff7f 100644 +index e0c62227b279a5fe0f3868fbf9ce8c78c515a09c..1c2b960d6d4213f2ff0ef6853523703b7ae10a13 100644 --- a/src/main/java/net/minecraft/world/level/block/piston/PistonBaseBlock.java +++ b/src/main/java/net/minecraft/world/level/block/piston/PistonBaseBlock.java @@ -313,6 +313,20 @@ public class PistonBaseBlock extends DirectionalBlock { } public static boolean isPushable(BlockState state, Level world, BlockPos pos, Direction direction, boolean canBreak, Direction pistonDir) { -+ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics) { ++ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base) { + // Vine start - Kiterino New liquid physics + net.minecraft.world.level.material.FluidState fluidState = state.getFluidState(); + if (!fluidState.isEmpty() && fluidState.isSourceOfType(net.minecraft.world.level.material.Fluids.WATER)) { @@ -68,7 +68,7 @@ index e0c62227b279a5fe0f3868fbf9ce8c78c515a09c..79a1ed3b7e38d1addb611d464be9e3cb } // CraftBukkit end -+ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics) { ++ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base) { + // Kiterino start + Direction oppositeDir = dir.getOpposite(); + @@ -112,7 +112,7 @@ index e0c62227b279a5fe0f3868fbf9ce8c78c515a09c..79a1ed3b7e38d1addb611d464be9e3cb int j; BlockState iblockdata1; diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/SpringFeature.java b/src/main/java/net/minecraft/world/level/levelgen/feature/SpringFeature.java -index 72c7179ea7743c67f2489573c0e886f20871fe60..8c90c1d15811444c2edd0eb1b9e05b6b08b52672 100644 +index 72c7179ea7743c67f2489573c0e886f20871fe60..c5ae32e6eede98430cdf4566b3b68a7e9df5939c 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/feature/SpringFeature.java +++ b/src/main/java/net/minecraft/world/level/levelgen/feature/SpringFeature.java @@ -69,7 +69,28 @@ public class SpringFeature extends Feature { @@ -120,7 +120,7 @@ index 72c7179ea7743c67f2489573c0e886f20871fe60..8c90c1d15811444c2edd0eb1b9e05b6b if (j == springConfiguration.rockCount && k == springConfiguration.holeCount) { - worldGenLevel.setBlock(blockPos, springConfiguration.state.createLegacyBlock(), 2); -+ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics) { ++ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base) { + // Vine start - Kiterino make water springs out of corals and spawn magma block next to lava, so they could persist the fluid physics changes + BlockState springState; + if (springConfiguration.state.is(net.minecraft.world.level.material.Fluids.WATER)) { @@ -146,7 +146,7 @@ index 72c7179ea7743c67f2489573c0e886f20871fe60..8c90c1d15811444c2edd0eb1b9e05b6b i++; } 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 16f1ed279fb05d47d97692f26d083683dd942dc4..9780df3f4cacb305ee6cb95f1c3bcbf9bfc4489d 100644 +index 16f1ed279fb05d47d97692f26d083683dd942dc4..e413226becf02d3a710e1d79a28e4074cb27e159 100644 --- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java +++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java @@ -227,7 +227,11 @@ public abstract class FlowingFluid extends Fluid { @@ -154,7 +154,7 @@ index 16f1ed279fb05d47d97692f26d083683dd942dc4..9780df3f4cacb305ee6cb95f1c3bcbf9 } - if (this.canConvertToSource(world) && j >= getRequiredSources(world)) { -+ boolean b1 = one.tranic.vine.config.VineConfig.Feature.liquidPhysics ? ++ boolean b1 = one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base ? + (this.canConvertToSource(world, pos) && j >= getRequiredSources(world)): + (this.canConvertToSource(world) && j >= getRequiredSources(world)); + @@ -166,7 +166,7 @@ index 16f1ed279fb05d47d97692f26d083683dd942dc4..9780df3f4cacb305ee6cb95f1c3bcbf9 VoxelShape voxelshape1 = fromState.getCollisionShape(world, fromPos); boolean flag = !Shapes.mergedFaceOccludes(voxelshape, voxelshape1, face); -+ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics) { ++ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base) { + // Vine start + if (!flag) { + if (state.is(BlockTags.LEAVES)) { @@ -202,7 +202,7 @@ index 16f1ed279fb05d47d97692f26d083683dd942dc4..9780df3f4cacb305ee6cb95f1c3bcbf9 + // Vine end + protected void spreadTo(LevelAccessor world, BlockPos pos, BlockState state, Direction direction, FluidState fluidState) { -+ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics && flowTo(world, pos, state, direction)) return; // Kiterino ++ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base && flowTo(world, pos, state, direction)) return; // Kiterino if (state.getBlock() instanceof LiquidBlockContainer) { ((LiquidBlockContainer) state.getBlock()).placeLiquid(world, pos, state, fluidState); } else { @@ -383,7 +383,7 @@ index 16f1ed279fb05d47d97692f26d083683dd942dc4..9780df3f4cacb305ee6cb95f1c3bcbf9 } protected boolean canSpreadTo(BlockGetter world, BlockPos fluidPos, BlockState fluidBlockState, Direction flowDirection, BlockPos flowTo, BlockState flowToBlockState, FluidState fluidState, Fluid fluid) { -+ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics && canFlowTo(world, flowDirection, flowTo, flowToBlockState, fluidState)) return true; // Vine ++ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base && canFlowTo(world, flowDirection, flowTo, flowToBlockState, fluidState)) return true; // Vine return fluidState.canBeReplacedWith(world, flowTo, fluid, flowDirection) && this.canPassThroughWall(flowDirection, world, fluidPos, fluidBlockState, flowTo, flowToBlockState) && this.canHoldFluid(world, flowTo, flowToBlockState, fluid); } @@ -451,7 +451,7 @@ index 16f1ed279fb05d47d97692f26d083683dd942dc4..9780df3f4cacb305ee6cb95f1c3bcbf9 protected int getSpreadDelay(Level world, BlockPos pos, FluidState oldState, FluidState newState) { 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 9dcdb2f4001115db0c26fdbf86531dbe6098485d..4971cc45d95ae6b8aac8daad2888168e28941ea0 100644 +index 9dcdb2f4001115db0c26fdbf86531dbe6098485d..cc18fd04041966d86614374eccdcbffd273d80b0 100644 --- a/src/main/java/net/minecraft/world/level/material/WaterFluid.java +++ b/src/main/java/net/minecraft/world/level/material/WaterFluid.java @@ -77,9 +77,32 @@ public abstract class WaterFluid extends FlowingFluid { @@ -459,18 +459,18 @@ index 9dcdb2f4001115db0c26fdbf86531dbe6098485d..4971cc45d95ae6b8aac8daad2888168e @Override protected boolean canConvertToSource(Level world) { - return world.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); -+ return !one.tranic.vine.config.VineConfig.Feature.liquidPhysics && world.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); // Vine - Kiterino - Don't convert to source ++ return !one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base && world.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); // Vine - Kiterino - Don't convert to source } + // Vine start + @Override + protected boolean canConvertToSource(Level world, BlockPos pos) { -+ return one.tranic.vine.config.VineConfig.Feature.liquidPhysics ? (isInInfiniteBiome(world, pos) || canConvertToSource(world)) : super.canConvertToSource(world, pos); ++ return one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base ? (isInInfiniteBiome(world, pos) || canConvertToSource(world)) : super.canConvertToSource(world, pos); + } + + @Override + protected boolean isUnfillableInBiome(Fluid fluid, LevelReader world, BlockPos flowTo) { -+ return one.tranic.vine.config.VineConfig.Feature.liquidPhysics ? isInInfiniteBiome(world, flowTo) : super.isUnfillableInBiome(fluid, world, flowTo); ++ return one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base ? isInInfiniteBiome(world, flowTo) : super.isUnfillableInBiome(fluid, world, flowTo); + } + + private boolean isInInfiniteBiome(LevelReader world, BlockPos pos) { diff --git a/patches/server/0123-Kiterino-Preserve-waterfalls.patch b/patches/server/0123-Kiterino-Preserve-waterfalls.patch index 0f093ee..5814bcf 100644 --- a/patches/server/0123-Kiterino-Preserve-waterfalls.patch +++ b/patches/server/0123-Kiterino-Preserve-waterfalls.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Kiterino: Preserve waterfalls Makes waterfalls still somewhat possible with the custom liquid physics 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 9780df3f4cacb305ee6cb95f1c3bcbf9bfc4489d..cf45df1f3e3e5cc22c8b48a0a96e776de6ad0718 100644 +index e413226becf02d3a710e1d79a28e4074cb27e159..242c529c30e03484ce8da6b1929e3428c2b6772d 100644 --- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java +++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java @@ -433,6 +433,8 @@ public abstract class FlowingFluid extends Fluid { @@ -31,28 +31,28 @@ index 9780df3f4cacb305ee6cb95f1c3bcbf9bfc4489d..cf45df1f3e3e5cc22c8b48a0a96e776d // Vine end protected abstract int getDropOff(LevelReader world); -@@ -787,7 +795,26 @@ public abstract class FlowingFluid extends Fluid { - FluidState fluid1 = this.getNewLiquid(world, pos, world.getBlockState(pos)); +@@ -788,6 +796,27 @@ public abstract class FlowingFluid extends Fluid { int i = this.getSpreadDelay(world, pos, state, fluid1); -- if (fluid1.isEmpty()) { -+ if (fluid1.isEmpty() && one.tranic.vine.config.VineConfig.Feature.liquidPhysics) { -+ // Kiterino start -+ if (state.getAmount() == 1 && world.getFluidState(pos.below()).getAmount() == 8) { -+ int waterfalls = 0; -+ for (Direction dir1 : NORTH_SOUTH) { -+ BlockPos relative = pos.relative(dir1); -+ if (isWaterfall(world, relative)) waterfalls++; -+ if (waterfalls >= 2) break; -+ for (Direction dir2 : EAST_WEST) { -+ if (isWaterfall(world, pos.relative(dir2))) waterfalls++; -+ if (waterfalls >= 2) break; -+ if (isWaterfall(world, relative.relative(dir2))) waterfalls++; + if (fluid1.isEmpty()) { ++ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base) { ++ // Kiterino start ++ if (state.getAmount() == 1 && world.getFluidState(pos.below()).getAmount() == 8) { ++ int waterfalls = 0; ++ for (Direction dir1 : NORTH_SOUTH) { ++ BlockPos relative = pos.relative(dir1); ++ if (isWaterfall(world, relative)) waterfalls++; + if (waterfalls >= 2) break; ++ for (Direction dir2 : EAST_WEST) { ++ if (isWaterfall(world, pos.relative(dir2))) waterfalls++; ++ if (waterfalls >= 2) break; ++ if (isWaterfall(world, relative.relative(dir2))) waterfalls++; ++ if (waterfalls >= 2) break; ++ } ++ } ++ if (waterfalls >= 2) { ++ return; + } -+ } -+ if (waterfalls >= 2) { -+ return; + } + } + // Kiterino end diff --git a/patches/server/0124-Kiterino-Super-dumb-liquid-ticks-limiter.patch b/patches/server/0124-Kiterino-Super-dumb-liquid-ticks-limiter.patch index 7f16ad2..dd869f0 100644 --- a/patches/server/0124-Kiterino-Super-dumb-liquid-ticks-limiter.patch +++ b/patches/server/0124-Kiterino-Super-dumb-liquid-ticks-limiter.patch @@ -5,15 +5,15 @@ Subject: [PATCH] Kiterino: Super dumb liquid ticks limiter 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 cf45df1f3e3e5cc22c8b48a0a96e776de6ad0718..2295996241aa827542c6bc51942e6b359e953505 100644 +index 242c529c30e03484ce8da6b1929e3428c2b6772d..e715d8c87fa53c6de67583f866ca7d3cfe5abada 100644 --- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java +++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -@@ -835,7 +835,14 @@ public abstract class FlowingFluid extends Fluid { +@@ -837,7 +837,14 @@ public abstract class FlowingFluid extends Fluid { // CraftBukkit end world.scheduleTick(pos, fluid1.getType(), i); world.updateNeighborsAt(pos, iblockdata.getBlock()); + } // Kiterino start - Super dumb liquid physics limiter to reduce the load -+ else if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics) { ++ else if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics.base) { + if (org.bukkit.Bukkit.isLagging() || org.bukkit.Bukkit.getCurrentTick() % 20 > 12) { + world.scheduleTick(pos, this, 9); + return; diff --git a/patches/server/0125-Kiterino-Allow-explosions-underwater-fluids.patch b/patches/server/0125-Kiterino-Allow-explosions-underwater-fluids.patch index 878d6f8..9e75f18 100644 --- a/patches/server/0125-Kiterino-Allow-explosions-underwater-fluids.patch +++ b/patches/server/0125-Kiterino-Allow-explosions-underwater-fluids.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Kiterino: Allow explosions underwater (/fluids) diff --git a/src/main/java/net/minecraft/world/level/ExplosionDamageCalculator.java b/src/main/java/net/minecraft/world/level/ExplosionDamageCalculator.java -index 1eb259b48bcab6172c15546744eea410c6a3e1fe..b1c70b2ee0863f9b221241347d0c625d14f0a7b1 100644 +index 1eb259b48bcab6172c15546744eea410c6a3e1fe..c2df1bd45bcb637c9bd40e064beb44b6189a0d47 100644 --- a/src/main/java/net/minecraft/world/level/ExplosionDamageCalculator.java +++ b/src/main/java/net/minecraft/world/level/ExplosionDamageCalculator.java @@ -9,6 +9,12 @@ import net.minecraft.world.phys.Vec3; public class ExplosionDamageCalculator { public Optional getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState) { -+ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics) { ++ if (one.tranic.vine.config.VineConfig.Feature.liquidPhysics.aeu) { + // Kiterino start - Allow explosions underwater (/fluids) + if (blockState.isAir()) return Optional.empty(); + if (!fluidState.isEmpty()) return Optional.empty();