mirror of
https://github.com/Dreeam-qwq/Gale.git
synced 2025-12-21 15:59:28 +00:00
Faster floating-point positive modulo
This commit is contained in:
@@ -366,3 +366,62 @@ index 915c1cbcc0ecf634cc76f02bba53dc82d22be698..0c05aa0d0938b19453f45adf5931c887
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java b/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java
|
||||
index 8d40205f56a7b204a65505f9e1b4e20000221755..a6434f2c2d1ddb33e7c51d0a099fd127d8a785e6 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java
|
||||
@@ -113,13 +113,15 @@ public class Blender {
|
||||
MutableDouble mutableDouble3 = new MutableDouble(Double.POSITIVE_INFINITY);
|
||||
this.heightAndBiomeBlendingData.forEach((chunkPos, data) -> {
|
||||
data.iterateHeights(QuartPos.fromSection(ChunkPos.getX(chunkPos)), QuartPos.fromSection(ChunkPos.getZ(chunkPos)), (biomeX, biomeZ, height) -> {
|
||||
- double d = Mth.length((double)(i - biomeX), (double)(j - biomeZ));
|
||||
- if (!(d > (double)HEIGHT_BLENDING_RANGE_CELLS)) {
|
||||
- if (d < mutableDouble3.doubleValue()) {
|
||||
- mutableDouble3.setValue(d);
|
||||
+ // Gale start - dev import deobfuscation fixes
|
||||
+ double distance = Mth.length((double)(i - biomeX), (double)(j - biomeZ));
|
||||
+ if (!(distance > (double)HEIGHT_BLENDING_RANGE_CELLS)) {
|
||||
+ if (distance < mutableDouble3.doubleValue()) {
|
||||
+ mutableDouble3.setValue(distance);
|
||||
}
|
||||
|
||||
- double e = 1.0D / (d * d * d * d);
|
||||
+ double e = 1.0D / (distance * distance * distance * distance);
|
||||
+ // Gale end - dev import deobfuscation fixes
|
||||
mutableDouble2.add(height * e);
|
||||
mutableDouble.add(e);
|
||||
}
|
||||
@@ -156,13 +158,15 @@ public class Blender {
|
||||
MutableDouble mutableDouble3 = new MutableDouble(Double.POSITIVE_INFINITY);
|
||||
this.densityBlendingData.forEach((chunkPos, data) -> {
|
||||
data.iterateDensities(QuartPos.fromSection(ChunkPos.getX(chunkPos)), QuartPos.fromSection(ChunkPos.getZ(chunkPos)), j - 1, j + 1, (biomeX, halfSectionY, biomeZ, collidableBlockDensity) -> {
|
||||
- double d = Mth.length((double)(i - biomeX), (double)((j - halfSectionY) * 2), (double)(k - biomeZ));
|
||||
- if (!(d > 2.0D)) {
|
||||
- if (d < mutableDouble3.doubleValue()) {
|
||||
- mutableDouble3.setValue(d);
|
||||
+ // Gale start - dev import deobfuscation fixes
|
||||
+ double distance = Mth.length((double)(i - biomeX), (double)((j - halfSectionY) * 2), (double)(k - biomeZ));
|
||||
+ if (!(distance > 2.0D)) {
|
||||
+ if (distance < mutableDouble3.doubleValue()) {
|
||||
+ mutableDouble3.setValue(distance);
|
||||
}
|
||||
|
||||
- double e = 1.0D / (d * d * d * d);
|
||||
+ double e = 1.0D / (distance * distance * distance * distance);
|
||||
+ // Gale end - dev import deobfuscation fixes
|
||||
mutableDouble2.add(collidableBlockDensity * e);
|
||||
mutableDouble.add(e);
|
||||
}
|
||||
@@ -317,8 +321,10 @@ public class Blender {
|
||||
double f = (double)offsetZ + 0.5D + SHIFT_NOISE.getValue((double)offsetZ, (double)offsetX, (double)y) * 4.0D;
|
||||
return distanceGetter.getDistance(d, e, f) < 4.0D;
|
||||
};
|
||||
- Stream.of(GenerationStep.Carving.values()).map(chunk::getOrCreateCarvingMask).forEach((mask) -> {
|
||||
- mask.setAdditionalMask(mask);
|
||||
+ // Gale start - dev import deobfuscation fixes
|
||||
+ Stream.of(GenerationStep.Carving.values()).map(chunk::getOrCreateCarvingMask).forEach((carvingMask) -> {
|
||||
+ carvingMask.setAdditionalMask(mask);
|
||||
+ // Gale end - dev import deobfuscation fixes
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ index 2868dab7b100d9c325b0e5056f86660d631dec4b..2acad4c3fd58178b0f8b22bdb04eeeeb
|
||||
}
|
||||
diff --git a/src/main/java/org/galemc/gale/version/GaleSemanticVersion.java b/src/main/java/org/galemc/gale/version/GaleSemanticVersion.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..d7a6b62905b897531d18f614292afeea89a7a165
|
||||
index 0000000000000000000000000000000000000000..9bee7629dd00453dc4a712f3c48cf4f2ae3da5c5
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/galemc/gale/version/GaleSemanticVersion.java
|
||||
@@ -0,0 +1,37 @@
|
||||
@@ -57,7 +57,7 @@ index 0000000000000000000000000000000000000000..d7a6b62905b897531d18f614292afeea
|
||||
+ * The <code>patch</code> version is incremented for small changes that do not affect the goal of any feature,
|
||||
+ * such as bug fixes, performance improvements or changes in wording.
|
||||
+ */
|
||||
+ public static final @NotNull String version = "0.6.4";
|
||||
+ public static final @NotNull String version = "0.6.5";
|
||||
+
|
||||
+ /**
|
||||
+ * The "<code>major.minor</code>" portion of the {@link #version}.
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martijn Muijsers <martijnmuijsers@live.nl>
|
||||
Date: Tue, 29 Aug 2023 22:29:08 +0200
|
||||
Subject: [PATCH] Faster floating-point positive modulo
|
||||
|
||||
License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
|
||||
Gale - https://galemc.org
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/util/Mth.java b/src/main/java/net/minecraft/util/Mth.java
|
||||
index 7327f3bb1c1f764ae1da88af27b1e9fb03fb89d9..aaefd728bb1a9fc398e55fe30c9337d51cf43785 100644
|
||||
--- a/src/main/java/net/minecraft/util/Mth.java
|
||||
+++ b/src/main/java/net/minecraft/util/Mth.java
|
||||
@@ -139,14 +139,26 @@ public class Mth {
|
||||
return Math.floorMod(dividend, divisor);
|
||||
}
|
||||
|
||||
- public static float positiveModulo(float dividend, float divisor) {
|
||||
+ public static float positiveModuloForAnyDivisor(float dividend, float divisor) { // Gale - faster floating-point positive modulo
|
||||
return (dividend % divisor + divisor) % divisor;
|
||||
}
|
||||
|
||||
- public static double positiveModulo(double dividend, double divisor) {
|
||||
+ public static double positiveModuloForAnyDivisor(double dividend, double divisor) { // Gale - faster floating-point positive modulo
|
||||
return (dividend % divisor + divisor) % divisor;
|
||||
}
|
||||
|
||||
+ // Gale start - faster floating-point positive modulo
|
||||
+ public static float positiveModuloForPositiveDivisor(float dividend, float divisor) {
|
||||
+ var modulo = dividend % divisor;
|
||||
+ return modulo < 0 ? modulo + divisor : modulo;
|
||||
+ }
|
||||
+
|
||||
+ public static double positiveModuloForPositiveDivisor(double dividend, double divisor) {
|
||||
+ var modulo = dividend % divisor;
|
||||
+ return modulo < 0 ? modulo + divisor : modulo;
|
||||
+ }
|
||||
+ // Gale end - faster floating-point positive modulo
|
||||
+
|
||||
public static boolean isMultipleOf(int a, int b) {
|
||||
return a % b == 0;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java b/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java
|
||||
index a6434f2c2d1ddb33e7c51d0a099fd127d8a785e6..aeecd8fc0b9d514990e1fa1f1c790fa61d664a0b 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/blending/Blender.java
|
||||
@@ -141,7 +141,7 @@ public class Blender {
|
||||
private static double heightToOffset(double height) {
|
||||
double d = 1.0D;
|
||||
double e = height + 0.5D;
|
||||
- double f = Mth.positiveModulo(e, 8.0D);
|
||||
+ double f = Mth.positiveModuloForPositiveDivisor(e, 8.0D); // Gale - faster floating-point positive modulo
|
||||
return 1.0D * (32.0D * (e - 128.0D) - 3.0D * (e - 120.0D) * f + 3.0D * f * f) / (128.0D * (32.0D - 3.0D * f));
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
||||
index 78201998d6cbee9aa6f0bad80b726b46675393dc..041f188b742ad819e2460e8ca5ab7f44412dbf9b 100644
|
||||
index c7a8ec6b99e7db62abcbb1d5aed99738ee8732de..6c77db5edce2101847234f65bd10c5841fd5bd4f 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
||||
@@ -539,6 +539,7 @@ public class ServerChunkCache extends ChunkSource {
|
||||
@@ -31,7 +31,7 @@ You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index c2e22dd084d922a827e6dd53e8634ec5b9e2d1ee..97226a1135e9228ec010110b5d24fae00a49996a 100644
|
||||
index 04dfa4f59921ec5fcea6fb6989847fc5164ccfda..6d1baf7592a0d016b7d9a842ecc8660c42059490 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -1141,6 +1141,13 @@ public final class CraftServer implements Server {
|
||||
@@ -31,7 +31,7 @@ You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||
index d934d07ad761319f338d4386536f68fde211c041..e215cb22a226fa61d7eb9a8f69fe2a644d4394f7 100644
|
||||
index 196280f54e397c69d32bd4d1f6ae666efdd93773..8c28305ffdb210722b11a0bdcf077452d09bcc2d 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||
@@ -181,6 +181,7 @@ public class ServerEntity {
|
||||
@@ -13,7 +13,7 @@ As part of: Pufferfish (https://github.com/pufferfish-gg/Pufferfish)
|
||||
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
|
||||
|
||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||
index 50bb7e538c7493e52b2d1356ef6c89194efa593a..a0237112353240d9c8d0dc733f9176fd7e95f007 100644
|
||||
index 9606c6954f2c53dbbda7e7235cf37308822fea02..4466f21a83cb9ddca7309a194afcb8eded92de81 100644
|
||||
--- a/build.gradle.kts
|
||||
+++ b/build.gradle.kts
|
||||
@@ -73,6 +73,7 @@ tasks.withType<JavaCompile> {
|
||||
@@ -84,7 +84,7 @@ index 2acad4c3fd58178b0f8b22bdb04eeeeb689d5afa..850ccd53c5007e8b18344ba76c9e7f00
|
||||
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
index 5be4267d88604210b7bfcc03b2c2056e0a9f0fb0..13d9fc5f4e6316b3fd6ef5ab50f78c7117e2df3a 100644
|
||||
index e75f0e6ce6cb7fa88ca3bd8dd7e63ea885bae341..aba9c02f74bc0a1270d90a17db74f64dadb99f92 100644
|
||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
@@ -14,6 +14,8 @@ import java.util.Locale;
|
||||
@@ -35,7 +35,7 @@ index d4a26febc956d8a4cecda742b28e2700a1148559..1eaa559b177f2dc982865f96dfc7654b
|
||||
|
||||
public static long getCoordinateKey(final ChunkPos pair) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index fb43c428813d05f047a801cff8a2682499a03208..a33457376dad6f5e9680518ce11bb47c89f59f1e 100644
|
||||
index d751b3ce631527c2e65e649b56880fe0330c07e4..19d05bfec4aafdf3712ad24b4b29a9f55067e578 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user