mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-19 15:09:25 +00:00
73 lines
3.6 KiB
Diff
73 lines
3.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com>
|
|
Date: Tue, 9 Nov 2077 00:00:00 +0800
|
|
Subject: [PATCH] C2ME: Optimize world gen math
|
|
|
|
This patch is based on following mixins:
|
|
* "com/ishland/c2me/opts/math/mixin/MixinChunkPos.java"
|
|
* "com/ishland/c2me/opts/worldgen/vanilla/mixin/structure_weight_sampler/MixinStructureWeightSampler.java"
|
|
By: ishland <ishlandmc@yeah.net>
|
|
As part of: C2ME-fabric (https://github.com/RelativityMC/C2ME-fabric)
|
|
Licensed under: MIT
|
|
|
|
Co-authored-by: Taiyou06 <kaandindar21@gmail.com>
|
|
|
|
diff --git a/net/minecraft/world/level/ChunkPos.java b/net/minecraft/world/level/ChunkPos.java
|
|
index 55ce935a2fab7e32904d9ff599867269035d703f..6e2b2d258e47dcca30a5ad9f4f492598f2bc21fb 100644
|
|
--- a/net/minecraft/world/level/ChunkPos.java
|
|
+++ b/net/minecraft/world/level/ChunkPos.java
|
|
@@ -110,7 +110,13 @@ public class ChunkPos {
|
|
|
|
@Override
|
|
public boolean equals(Object other) {
|
|
- return this == other || other instanceof ChunkPos chunkPos && this.x == chunkPos.x && this.z == chunkPos.z;
|
|
+ // Leaf start - C2ME - Optimize world gen math
|
|
+ // Use standard equals
|
|
+ if (other == this) return true;
|
|
+ if (other == null || other.getClass() != this.getClass()) return false;
|
|
+ ChunkPos thatPos = (ChunkPos) other;
|
|
+ return this.x == thatPos.x && this.z == thatPos.z;
|
|
+ // Leaf end - C2ME - Optimize world gen math
|
|
}
|
|
|
|
public int getMiddleBlockX() {
|
|
diff --git a/net/minecraft/world/level/levelgen/Beardifier.java b/net/minecraft/world/level/levelgen/Beardifier.java
|
|
index 74d8202b5c9bb2a3ee832be70f95c0b5cbecb460..9ea92c7beee917e47f02e24982bb97ff7eee7c7d 100644
|
|
--- a/net/minecraft/world/level/levelgen/Beardifier.java
|
|
+++ b/net/minecraft/world/level/levelgen/Beardifier.java
|
|
@@ -131,8 +131,15 @@ public class Beardifier implements DensityFunctions.BeardifierOrMarker {
|
|
}
|
|
|
|
private static double getBuryContribution(double x, double y, double z) {
|
|
- double len = Mth.length(x, y, z);
|
|
- return Mth.clampedMap(len, 0.0, 6.0, 1.0, 0.0);
|
|
+ // Leaf start - C2ME - Optimize world gen math
|
|
+ // Optimize method for beardifier
|
|
+ double len = Math.sqrt(x * x + y * y + z * z);
|
|
+ if (len > 6.0) {
|
|
+ return 0.0;
|
|
+ } else {
|
|
+ return 1.0 - len / 6.0;
|
|
+ }
|
|
+ // Leaf end - C2ME - Optimize world gen math
|
|
}
|
|
|
|
private static double getBeardContribution(int x, int y, int z, int height) {
|
|
diff --git a/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java b/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java
|
|
index 57ae4aaf1431021daf77c5638038d4910a358155..d4317668df3b1a2ae1b6091b65dfa9da3582f967 100644
|
|
--- a/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java
|
|
+++ b/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java
|
|
@@ -68,8 +68,10 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator {
|
|
Aquifer.FluidStatus fluidStatus = new Aquifer.FluidStatus(-54, Blocks.LAVA.defaultBlockState());
|
|
int seaLevel = settings.seaLevel();
|
|
Aquifer.FluidStatus fluidStatus1 = new Aquifer.FluidStatus(seaLevel, settings.defaultFluid());
|
|
- Aquifer.FluidStatus fluidStatus2 = new Aquifer.FluidStatus(DimensionType.MIN_Y * 2, Blocks.AIR.defaultBlockState());
|
|
- return (x, y, z) -> y < Math.min(-54, seaLevel) ? fluidStatus : fluidStatus1;
|
|
+ // Leaf start - C2ME - Optimize world gen math
|
|
+ final int min = Math.min(-54, seaLevel);
|
|
+ return (x, y, z) -> y < min ? fluidStatus : fluidStatus1;
|
|
+ // Leaf end - C2ME - Optimize world gen math
|
|
}
|
|
|
|
@Override
|