9
0
mirror of https://github.com/Samsuik/Sakura.git synced 2025-12-21 07:49:29 +00:00

Add lava flow speed api

This commit is contained in:
Samsuik
2024-12-05 22:23:07 +00:00
parent e1b741ea37
commit e830b9a2d8
3 changed files with 49 additions and 2 deletions

View File

@@ -0,0 +1,21 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Samsuik <kfian294ma4@gmail.com>
Date: Thu, 5 Dec 2024 22:27:38 +0000
Subject: [PATCH] Add lava flow speed api
diff --git a/src/main/java/me/samsuik/sakura/local/LocalValueKey.java b/src/main/java/me/samsuik/sakura/local/LocalValueKey.java
index 741e5466f00b34832ac69ff01503146278e952a9..3ae1e31a11921282ac6e293e8fe5c231e71ad770 100644
--- a/src/main/java/me/samsuik/sakura/local/LocalValueKey.java
+++ b/src/main/java/me/samsuik/sakura/local/LocalValueKey.java
@@ -33,6 +33,10 @@ public record LocalValueKey<T>(NamespacedKey key, Supplier<T> defaultSupplier) {
new NamespacedKey("sakura", "redstone-cache"), () -> false
);
+ public static final LocalValueKey<Integer> LAVA_FLOW_SPEED = new LocalValueKey<>(
+ new NamespacedKey("sakura", "lava-flow-speed"), () -> -1
+ );
+
@Override
public boolean equals(Object o) {
if (this == o) return true;

View File

@@ -153,10 +153,10 @@ index 0000000000000000000000000000000000000000..58e2bada4d9120a4802def5caece906f
+}
diff --git a/src/main/java/me/samsuik/sakura/local/config/LocalValueConfig.java b/src/main/java/me/samsuik/sakura/local/config/LocalValueConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..5b3e2cca7ee16bc6ecfa0f29438fa6588fa39a99
index 0000000000000000000000000000000000000000..86a5964e7dea512da0a54ae675394bded91c5e0e
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/local/config/LocalValueConfig.java
@@ -0,0 +1,69 @@
@@ -0,0 +1,73 @@
+package me.samsuik.sakura.local.config;
+
+import io.papermc.paper.configuration.WorldConfiguration.Misc.RedstoneImplementation;
@@ -179,6 +179,7 @@ index 0000000000000000000000000000000000000000..5b3e2cca7ee16bc6ecfa0f29438fa658
+ public RedstoneImplementation redstoneImplementation;
+ public boolean consistentRadius;
+ public boolean redstoneCache;
+ public int lavaFlowSpeed = -1;
+
+ LocalValueConfig(Expiry expiry) {
+ this.expiry = expiry;
@@ -220,6 +221,9 @@ index 0000000000000000000000000000000000000000..5b3e2cca7ee16bc6ecfa0f29438fa658
+
+ // redstone cache
+ this.redstoneCache = storage.getOrDefault(LocalValueKey.REDSTONE_CACHE, this.redstoneCache);
+
+ // lava flow speed
+ this.lavaFlowSpeed = storage.getOrDefault(LocalValueKey.LAVA_FLOW_SPEED, this.lavaFlowSpeed);
+ }
+
+ Expiry expiry() {

View File

@@ -0,0 +1,22 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Samsuik <kfian294ma4@gmail.com>
Date: Thu, 5 Dec 2024 22:21:39 +0000
Subject: [PATCH] Add lava flow speed api
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 ce34bbe57c524964300b6086358fa456f9e6d3ca..1a6fd2c638f04c92a2fb39331054e6c07371ce6f 100644
--- a/src/main/java/net/minecraft/world/level/material/LavaFluid.java
+++ b/src/main/java/net/minecraft/world/level/material/LavaFluid.java
@@ -189,7 +189,10 @@ public abstract class LavaFluid extends FlowingFluid {
@Override
public int getSpreadDelay(Level world, BlockPos pos, FluidState oldState, FluidState newState) {
- int i = this.getTickDelay(world);
+ // Sakura start - lava flow speed api
+ final int flowSpeed = world.localConfig().config(pos).lavaFlowSpeed;
+ int i = flowSpeed >= 0 ? flowSpeed : this.getTickDelay(world);
+ // Sakura end - lava flow speed api
if (!oldState.isEmpty() && !newState.isEmpty() && !(Boolean) oldState.getValue(LavaFluid.FALLING) && !(Boolean) newState.getValue(LavaFluid.FALLING) && newState.getHeight(world, pos) > oldState.getHeight(world, pos) && world.getRandom().nextInt(4) != 0) {
i *= 4;