9
0
mirror of https://github.com/Samsuik/Sakura.git synced 2025-12-30 20:29:14 +00:00
Files
SakuraMC/sakura-server/minecraft-patches/features/0021-Legacy-lava-block-formation.patch

78 lines
4.7 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Samsuik <kfian294ma4@gmail.com>
Date: Sat, 2 Dec 2023 15:14:15 +0000
Subject: [PATCH] Legacy lava block formation
diff --git a/net/minecraft/world/level/block/LiquidBlock.java b/net/minecraft/world/level/block/LiquidBlock.java
index e6091c252f252373481f46a3ef119ddc32baddf0..cf624b29ed2b7ca2d6af24b3cac6bb316199d287 100644
--- a/net/minecraft/world/level/block/LiquidBlock.java
+++ b/net/minecraft/world/level/block/LiquidBlock.java
@@ -198,7 +198,14 @@ public class LiquidBlock extends Block implements BucketPickup {
// Sakura start - configure cannon physics
final FluidState fluidState = state.getFluidState();
final Block block = fluidState.isSource() ? Blocks.OBSIDIAN : Blocks.COBBLESTONE;
- final me.samsuik.sakura.mechanics.MinecraftMechanicsTarget mechanicsTarget = level.localConfig().at(pos).mechanicsTarget;
+ // Sakura start - legacy lava block formation
+ final me.samsuik.sakura.mechanics.MinecraftMechanicsTarget mechanicsTarget;
+ if (level.sakuraConfig().environment.blockGeneration.legacyBlockFormation) {
+ mechanicsTarget = me.samsuik.sakura.mechanics.MinecraftMechanicsTarget.legacy();
+ } else {
+ mechanicsTarget = level.localConfig().at(pos).mechanicsTarget;
+ }
+ // Sakura end - legacy lava block formation
if (block == Blocks.COBBLESTONE && !me.samsuik.sakura.mechanics.LiquidBehaviour.canLiquidSolidify(level, pos, fluidState, mechanicsTarget)) {
return true;
}
diff --git a/net/minecraft/world/level/material/LavaFluid.java b/net/minecraft/world/level/material/LavaFluid.java
index 752099419e46070b42f9f2ecff1016d28a6ebf49..b6f198a8ef365c0414d2560b36a9c7d13d86ccbf 100644
--- a/net/minecraft/world/level/material/LavaFluid.java
+++ b/net/minecraft/world/level/material/LavaFluid.java
@@ -184,9 +184,16 @@ public abstract class LavaFluid extends FlowingFluid {
@Override
public boolean canBeReplacedWith(FluidState fluidState, BlockGetter blockReader, BlockPos pos, Fluid fluid, Direction direction) {
- // Sakura start - configure cannon physics
- if (blockReader instanceof Level level && level.localConfig().at(pos).mechanicsTarget.before(me.samsuik.sakura.mechanics.MechanicVersion.v1_13)) {
- return false;
+ // Sakura start - configure cannon physics & legacy lava block formation
+ if (blockReader instanceof Level level) {
+ if (level.localConfig().at(pos).mechanicsTarget.before(me.samsuik.sakura.mechanics.MechanicVersion.v1_13)) {
+ return false;
+ }
+
+ if (level.sakuraConfig().environment.blockGeneration.legacyBlockFormation) {
+ return false;
+ }
+ // Sakura end - legacy lava block formation
}
// Sakura end - configure cannon physics
return fluidState.getHeight(blockReader, pos) >= 0.44444445F && fluid.is(FluidTags.WATER);
diff --git a/net/minecraft/world/level/material/WaterFluid.java b/net/minecraft/world/level/material/WaterFluid.java
index 9fc1c56dec5201c3b700992f88b258225ceb8581..65fab5cb4af7e3357a1f65e89eb87a4c7fcd01a7 100644
--- a/net/minecraft/world/level/material/WaterFluid.java
+++ b/net/minecraft/world/level/material/WaterFluid.java
@@ -124,10 +124,18 @@ public abstract class WaterFluid extends FlowingFluid {
@Override
public boolean canBeReplacedWith(FluidState fluidState, BlockGetter blockReader, BlockPos pos, Fluid fluid, Direction direction) {
- // Sakura start - configure cannon physics
- final boolean canReplace = direction == Direction.DOWN
- || blockReader instanceof Level level
- && level.localConfig().at(pos).mechanicsTarget.before(me.samsuik.sakura.mechanics.MechanicVersion.v1_13);
+ // Sakura start - configure cannon physics & legacy lava block formation
+ boolean canReplace = false;
+ if (direction == Direction.DOWN) {
+ canReplace = true;
+ } else if (blockReader instanceof Level level) {
+ if (level.localConfig().at(pos).mechanicsTarget.before(me.samsuik.sakura.mechanics.MechanicVersion.v1_13)) {
+ canReplace = true;
+ } else if (level.sakuraConfig().environment.blockGeneration.legacyBlockFormation) {
+ canReplace = true;
+ }
+ }
+ // Sakura end - legacy lava block formation
// Before 1.13 lava could replace water
return canReplace && !fluid.is(FluidTags.WATER);
// Sakura end - configure cannon physics