Skip to content

Commit ec54bf7

Browse files
committed
Merge remote-tracking branch 'upstream'
2 parents eda7367 + ccc9ec0 commit ec54bf7

File tree

11 files changed

+123
-49
lines changed

11 files changed

+123
-49
lines changed

build.gradle

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,29 @@ dependencies {
5050
include modImplementation("dev.xpple:betterconfig-fabric:${project.betterconfig_version}")
5151
include modImplementation("dev.xpple:simplewaypoints:${project.simplewaypoints_version}")
5252

53-
// modRuntimeOnly("me.djtheredstoner:DevAuth-fabric:${project.devauth_version}") {
54-
// exclude group: 'net.fabricmc', module: 'fabric-loader'
55-
// }
56-
// productionRuntimeMods("me.djtheredstoner:DevAuth-fabric:${project.devauth_version}") {
57-
// exclude group: 'net.fabricmc', module: 'fabric-loader'
58-
// }
53+
modRuntimeOnly("me.djtheredstoner:DevAuth-fabric:${project.devauth_version}") {
54+
exclude group: 'net.fabricmc', module: 'fabric-loader'
55+
}
56+
productionRuntimeMods("me.djtheredstoner:DevAuth-fabric:${project.devauth_version}") {
57+
exclude group: 'net.fabricmc', module: 'fabric-loader'
58+
}
5959

6060
testImplementation platform("org.junit:junit-bom:${project.junit_version}")
6161
testImplementation 'org.junit.jupiter:junit-jupiter'
6262
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
6363
}
6464

65+
clean {
66+
delete fileTree("${projectDir}/src/main/java/com/github/cubiomes") {
67+
exclude '.gitkeep'
68+
}
69+
}
70+
6571
tasks.register('createJavaBindings', CreateJavaBindingsTask) {}
6672
compileJava.dependsOn('createJavaBindings')
6773

74+
createJavaBindings.dependsOn(clean)
75+
6876
tasks.register('generateBuildInfo', GenerateBuildInfoTask) {
6977
outputFile = new File(temporaryDir, "build_info.json")
7078
}

buildSrc/src/main/java/dev/xpple/seedmapper/buildscript/CreateJavaBindingsTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ public abstract class CreateJavaBindingsTask extends Exec {
1313

1414
this.setWorkingDir(this.getProject().getRootDir());
1515
this.setStandardOutput(System.out);
16-
this.commandLine("./jextract/build/jextract/bin/jextract" + EXTENSION, "--include-dir", "src/main/c/cubiomes", "--output", "src/main/java", "--use-system-load-library", "--target-package", "com.github.cubiomes", "--header-class-name", "Cubiomes", "@includes.txt", "biomenoise.h", "biomes.h", "finders.h", "generator.h", "layers.h", "biomenoise.h", "biomes.h", "noise.h", "rng.h", "util.h", "quadbase.h", "xrms.h", "loot/items.h", "loot/logging.h", "loot/loot_functions.h", "loot/loot_table_context.h", "loot/loot_table_parser.h", "loot/loot_tables.h", "loot/mc_loot.h");
16+
this.commandLine("./jextract/build/jextract/bin/jextract" + EXTENSION, "--include-dir", "src/main/c/cubiomes", "--output", "src/main/java", "--use-system-load-library", "--target-package", "com.github.cubiomes", "--header-class-name", "Cubiomes", "@includes.txt", "biomenoise.h", "biomes.h", "finders.h", "generator.h", "layers.h", "biomenoise.h", "biomes.h", "noise.h", "terrainnoise.h", "rng.h", "util.h", "quadbase.h", "xrms.h", "loot/items.h", "loot/logging.h", "loot/loot_functions.h", "loot/loot_table_context.h", "loot/loot_table_parser.h", "loot/loot_tables.h", "loot/mc_loot.h");
1717
}
1818
}

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G
33
org.gradle.parallel=true
44

55
# Mod Properties
6-
mod_version=2.19.0-CevAPI
6+
mod_version=2.19.1-CevAPI
77
maven_group=dev.xpple
88
archives_base_name=SeedMapper
99

@@ -24,7 +24,7 @@ betterconfig_version=2.5.0
2424
clientarguments_version=1.11.6
2525
simplewaypoints_version=1.2.0
2626

27-
devauth_version=1.2.1
27+
devauth_version=1.2.2
2828

2929
# Test dependencies
3030
junit_version=5.13.4

includes.txt

Lines changed: 55 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,52 +11,33 @@
1111
--include-struct SplineStack
1212
--include-struct SurfaceNoise
1313
--include-struct SurfaceNoiseBeta
14-
--include-struct TerrainNoiseParameters
14+
--include-struct TerrainNoise
15+
--include-function addSplineVal
1516
--include-function approxSurfaceBeta
1617
--include-function climateToBiome
18+
--include-function createFixSpline
1719
--include-function genBiomeNoiseBetaScaled
1820
--include-function genBiomeNoiseChunkSection
1921
--include-function genBiomeNoiseScaled
20-
--include-function generateColumn
21-
--include-function generateRegion
2222
--include-function genEndScaled
2323
--include-function genNetherScaled
2424
--include-function getBiomeDepthAndScale
2525
--include-function getEndSurfaceHeight
2626
--include-function getNetherBiome
2727
--include-function getOldBetaBiome
28+
--include-function getSpline
2829
--include-function getVoronoiSrcRange
2930
--include-function initBiomeNoise
3031
--include-function initBlendedNoise
3132
--include-function initSurfaceNoise
3233
--include-function initSurfaceNoiseBeta
33-
--include-function initTerrainNoise
3434
--include-function mapEnd
3535
--include-function mapEndBiome
3636
--include-function mapEndSurfaceHeight
3737
--include-function mapNether2D
3838
--include-function mapNether3D
39-
--include-function sampleBase3dNoise
40-
--include-function sampleBiomeNoise
41-
--include-function sampleBiomeNoiseBeta
42-
--include-function sampleCaveCheese
43-
--include-function sampleCaveEntrance
44-
--include-function sampleCaveLayer
45-
--include-function sampleClimatePara
46-
--include-function sampleEntrances
47-
--include-function sampleFinalDensity
48-
--include-function sampleNoiseColumn
49-
--include-function sampleNoodle
50-
--include-function samplePillars
51-
--include-function samplePreliminarySurfaceLevel
52-
--include-function sampleSlopedCheese
53-
--include-function sampleSpaghetti2d
54-
--include-function sampleSpaghetti3d
55-
--include-function sampleSpaghetti2dThicknessModulator
56-
--include-function sampleSpaghettiRoughness
5739
--include-function sampleSurfaceNoise
5840
--include-function sampleSurfaceNoiseBetween
59-
--include-function sampleUnderground
6041
--include-function setBetaBiomeSeed
6142
--include-function setBiomeSeed
6243
--include-function setClimateParaSeed
@@ -73,6 +54,10 @@
7354
--include-constant SAMPLE_NO_BIOME
7455
--include-constant SAMPLE_NO_DEPTH
7556
--include-constant SAMPLE_NO_SHIFT
57+
--include-constant SP_CONTINENTALNESS
58+
--include-constant SP_EROSION
59+
--include-constant SP_RIDGES
60+
--include-constant SP_WEIRDNESS
7661

7762
--include-function areSimilar
7863
--include-function biomeExists
@@ -946,6 +931,53 @@
946931
--include-function xOctaveLegacyInit
947932
--include-function xPerlinInit
948933

934+
--include-function initTerrainNoise
935+
--include-function generateColumn
936+
--include-function generateRegion
937+
--include-function sampleBase3dNoise
938+
--include-function sampleBiomeNoise
939+
--include-function sampleBiomeNoiseBeta
940+
--include-function sampleCaveCheese
941+
--include-function sampleCaveEntrance
942+
--include-function sampleCaveLayer
943+
--include-function sampleClimatePara
944+
--include-function sampleEntrances
945+
--include-function sampleFinalDensity
946+
--include-function sampleNoiseColumn
947+
--include-function sampleNoiseParameters
948+
--include-function sampleNoodle
949+
--include-function samplePillars
950+
--include-function samplePreliminarySurfaceLevel
951+
--include-function sampleSlopedCheese
952+
--include-function sampleSpaghetti2d
953+
--include-function sampleSpaghetti3d
954+
--include-function sampleSpaghetti2dThicknessModulator
955+
--include-function sampleSpaghettiRoughness
956+
--include-function sampleUnderground
957+
--include-function setupTerrainNoise
958+
--include-constant OTP_CAVE_ENTRANCE
959+
--include-constant OTP_CAVE_CHEESE
960+
--include-constant OTP_CAVE_LAYER
961+
--include-constant OTP_JAGGED
962+
--include-constant OTP_MAX
963+
--include-constant OTP_NOODLE
964+
--include-constant OTP_NOODLE_RIDGE_A
965+
--include-constant OTP_NOODLE_RIDGE_B
966+
--include-constant OTP_NOODLE_THICKNESS
967+
--include-constant OTP_PILLAR
968+
--include-constant OTP_PILLAR_RARENESS
969+
--include-constant OTP_PILLAR_THICKNESS
970+
--include-constant OTP_SPAGHETTI_2D
971+
--include-constant OTP_SPAGHETTI_2D_ELEVATION
972+
--include-constant OTP_SPAGHETTI_2D_MODULATOR
973+
--include-constant OTP_SPAGHETTI_2D_THICKNESS
974+
--include-constant OTP_SPAGHETTI_3D_1
975+
--include-constant OTP_SPAGHETTI_3D_2
976+
--include-constant OTP_SPAGHETTI_3D_RARITY
977+
--include-constant OTP_SPAGHETTI_3D_THICKNESS
978+
--include-constant OTP_SPAGHETTI_ROUGHNESS
979+
--include-constant OTP_SPAGHETTI_ROUGHNESS_MODULATOR
980+
949981
--include-function getOptimalAfk
950982
--include-function getQuadHutCst
951983
--include-function scanForQuads

src/main/java/dev/xpple/seedmapper/command/arguments/DensityFunctionArgument.java

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package dev.xpple.seedmapper.command.arguments;
22

3+
import com.github.cubiomes.BiomeNoise;
34
import com.github.cubiomes.Cubiomes;
4-
import com.github.cubiomes.TerrainNoiseParameters;
5+
import com.github.cubiomes.DoublePerlinNoise;
6+
import com.github.cubiomes.Generator;
7+
import com.github.cubiomes.TerrainNoise;
58
import com.google.common.collect.ImmutableMap;
69
import com.mojang.brigadier.StringReader;
710
import com.mojang.brigadier.arguments.ArgumentType;
@@ -13,6 +16,7 @@
1316
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
1417
import net.minecraft.commands.SharedSuggestionProvider;
1518

19+
import java.lang.foreign.Arena;
1620
import java.lang.foreign.MemorySegment;
1721
import java.util.Arrays;
1822
import java.util.Collection;
@@ -24,25 +28,25 @@ public class DensityFunctionArgument implements ArgumentType<DensityFunctionArgu
2428
private static final Collection<String> EXAMPLES = Arrays.asList("overworld", "the_nether", "the_end");
2529

2630
public static final Map<String, DensityFunction> DENSITY_FUNCTIONS = ImmutableMap.<String, DensityFunction>builder()
27-
.put("overworld.base_3d_noise", (params, x, y, z) -> Cubiomes.sampleBase3dNoise(TerrainNoiseParameters.bln(params), x, y, z))
31+
.put("overworld.base_3d_noise", (params, x, y, z) -> Cubiomes.sampleBase3dNoise(TerrainNoise.base3dNoise(params), x, y, z))
2832
.put("overworld.caves.spaghetti_roughness_function", Cubiomes::sampleSpaghettiRoughness)
2933
.put("overworld.caves.spaghetti_2d_thickness_modulator", Cubiomes::sampleSpaghetti2dThicknessModulator)
3034
.put("overworld.caves.spaghetti_2d", Cubiomes::sampleSpaghetti2d)
3135
.put("spaghetti_3d", Cubiomes::sampleSpaghetti3d)
3236
.put("cave_entrance", Cubiomes::sampleCaveEntrance)
3337
.put("overworld.caves.entrances", (params, x, y, z) -> Cubiomes.sampleEntrances(params, x, y, z, Cubiomes.sampleSpaghettiRoughness(params, x, y, z)))
3438
.put("cave_layer", Cubiomes::sampleCaveLayer)
35-
.put("overworld.sloped_cheese", Cubiomes::sampleSlopedCheese)
36-
.put("cave_cheese", (params, x, y, z) -> Cubiomes.sampleCaveCheese(params, x, y, z, Cubiomes.sampleSlopedCheese(params, x, y, z)))
39+
.put("overworld.sloped_cheese", DensityFunctionArgument::computeSlopedCheese)
40+
.put("cave_cheese", (params, x, y, z) -> Cubiomes.sampleCaveCheese(params, x, y, z, computeSlopedCheese(params, x, y, z)))
3741
.put("overworld.caves.pillars", Cubiomes::samplePillars)
3842
.put("overworld.caves.noodle", Cubiomes::sampleNoodle)
3943
.put("underground", (params, x, y, z) -> {
4044
double spaghettiRoughness = Cubiomes.sampleSpaghettiRoughness(params, x, y, z);
41-
return Cubiomes.sampleUnderground(params, x, y, z, spaghettiRoughness, Cubiomes.sampleEntrances(params, x, y, z, spaghettiRoughness), Cubiomes.sampleSlopedCheese(params, x, y, z));
45+
return Cubiomes.sampleUnderground(params, x, y, z, spaghettiRoughness, Cubiomes.sampleEntrances(params, x, y, z, spaghettiRoughness), computeSlopedCheese(params, x, y, z));
4246
})
4347
.put("final_density", (params, x, y, z) -> {
4448
double spaghettiRoughness = Cubiomes.sampleSpaghettiRoughness(params, x, y, z);
45-
return Cubiomes.sampleFinalDensity(params, x, y, z, spaghettiRoughness, Cubiomes.sampleEntrances(params, x, y, z, spaghettiRoughness), Cubiomes.sampleSlopedCheese(params, x, y, z));
49+
return Cubiomes.sampleFinalDensity(params, x, y, z, spaghettiRoughness, Cubiomes.sampleEntrances(params, x, y, z, spaghettiRoughness), computeSlopedCheese(params, x, y, z));
4650
})
4751
.put("preliminary_surface_level", (params, x, _, z) -> Cubiomes.samplePreliminarySurfaceLevel(params, x, z))
4852
.build();
@@ -79,6 +83,19 @@ public Collection<String> getExamples() {
7983

8084
@FunctionalInterface
8185
public interface DensityFunction {
82-
double compute(MemorySegment terrainNoiseParameters, int x, int y, int z);
86+
double compute(MemorySegment terrainNoise, int x, int y, int z);
87+
}
88+
89+
private static double computeSlopedCheese(MemorySegment params, int x, int y, int z) {
90+
try (Arena arena = Arena.ofConfined()) {
91+
MemorySegment np_param = arena.allocate(Cubiomes.C_FLOAT, 4);
92+
Cubiomes.sampleNoiseParameters(Generator.bn(TerrainNoise.g(params)), x >> 2, z >> 2, np_param);
93+
double depth = Cubiomes.getSpline(BiomeNoise.sp(Generator.bn(TerrainNoise.g(params))), np_param) - 0.50375f;
94+
double factor = Cubiomes.getSpline(TerrainNoise.factorSpline(params), np_param);
95+
double jagged = Cubiomes.sampleDoublePerlin(TerrainNoise.noises(params).asSlice(Cubiomes.OTP_JAGGED() * DoublePerlinNoise.sizeof()), x * 1500.0, 0, z * 1500.0);
96+
jagged = jagged >= 0.0 ? jagged : jagged / 2.0;
97+
jagged *= Cubiomes.getSpline(TerrainNoise.jaggednessSpline(params), np_param);
98+
return Cubiomes.sampleSlopedCheese(params, x, y, z, depth, factor, jagged);
99+
}
83100
}
84101
}

src/main/java/dev/xpple/seedmapper/command/commands/HighlightCommand.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import com.github.cubiomes.Pos3;
1010
import com.github.cubiomes.Pos3List;
1111
import com.github.cubiomes.SurfaceNoise;
12-
import com.github.cubiomes.TerrainNoiseParameters;
12+
import com.github.cubiomes.TerrainNoise;
1313
import com.mojang.brigadier.CommandDispatcher;
1414
import com.mojang.brigadier.exceptions.CommandSyntaxException;
1515
import com.mojang.datafixers.util.Pair;
@@ -254,6 +254,7 @@ private static int highlightTerrain(CustomClientCommandSource source, int chunkR
254254
throw CommandExceptions.INVALID_DIMENSION_EXCEPTION.create();
255255
}
256256
int version = source.getVersion();
257+
int generatorFlags = source.getGeneratorFlags();
257258

258259
ChunkPos center = new ChunkPos(BlockPos.containing(source.getPosition()));
259260
int minChunkX = center.x - chunkRange;
@@ -266,8 +267,11 @@ private static int highlightTerrain(CustomClientCommandSource source, int chunkR
266267
int minZ = minChunkZ << 4;
267268

268269
try (Arena arena = Arena.ofConfined()) {
269-
MemorySegment params = TerrainNoiseParameters.allocate(arena);
270-
if (Cubiomes.initTerrainNoise(params, seed.seed(), version) == 0) {
270+
MemorySegment params = TerrainNoise.allocate(arena);
271+
if (Cubiomes.setupTerrainNoise(params, version, generatorFlags) == 0) {
272+
throw CommandExceptions.INCOMPATIBLE_PARAMETERS_EXCEPTION.create();
273+
}
274+
if (Cubiomes.initTerrainNoise(params, seed.seed(), dimension) == 0) {
271275
throw CommandExceptions.INCOMPATIBLE_PARAMETERS_EXCEPTION.create();
272276
}
273277

src/main/java/dev/xpple/seedmapper/command/commands/SampleCommand.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package dev.xpple.seedmapper.command.commands;
22

33
import com.github.cubiomes.Cubiomes;
4-
import com.github.cubiomes.TerrainNoiseParameters;
4+
import com.github.cubiomes.TerrainNoise;
55
import com.mojang.brigadier.CommandDispatcher;
66
import com.mojang.brigadier.exceptions.CommandSyntaxException;
77
import dev.xpple.seedmapper.command.CommandExceptions;
@@ -37,12 +37,16 @@ private static int sampleAll(CustomClientCommandSource source) throws CommandSyn
3737
throw CommandExceptions.INVALID_DIMENSION_EXCEPTION.create();
3838
}
3939
int version = source.getVersion();
40+
int generatorFlags = source.getGeneratorFlags();
4041

4142
BlockPos pos = BlockPos.containing(source.getPosition());
4243

4344
try (Arena arena = Arena.ofConfined()) {
44-
MemorySegment params = TerrainNoiseParameters.allocate(arena);
45-
if (Cubiomes.initTerrainNoise(params, seed.seed(), version) == 0) {
45+
MemorySegment params = TerrainNoise.allocate(arena);
46+
if (Cubiomes.setupTerrainNoise(params, version, generatorFlags) == 0) {
47+
throw CommandExceptions.INCOMPATIBLE_PARAMETERS_EXCEPTION.create();
48+
}
49+
if (Cubiomes.initTerrainNoise(params, seed.seed(), dimension) == 0) {
4650
throw CommandExceptions.INCOMPATIBLE_PARAMETERS_EXCEPTION.create();
4751
}
4852

@@ -62,12 +66,18 @@ private static int sampleDensity(CustomClientCommandSource source, DensityFuncti
6266
throw CommandExceptions.INVALID_DIMENSION_EXCEPTION.create();
6367
}
6468
int version = source.getVersion();
69+
int generatorFlags = source.getGeneratorFlags();
6570

6671
BlockPos pos = BlockPos.containing(source.getPosition());
6772

6873
try (Arena arena = Arena.ofConfined()) {
69-
MemorySegment params = TerrainNoiseParameters.allocate(arena);
70-
Cubiomes.initTerrainNoise(params, seed.seed(), version);
74+
MemorySegment params = TerrainNoise.allocate(arena);
75+
if (Cubiomes.setupTerrainNoise(params, version, generatorFlags) == 0) {
76+
throw CommandExceptions.INCOMPATIBLE_PARAMETERS_EXCEPTION.create();
77+
}
78+
if (Cubiomes.initTerrainNoise(params, seed.seed(), dimension) == 0) {
79+
throw CommandExceptions.INCOMPATIBLE_PARAMETERS_EXCEPTION.create();
80+
}
7181
double density = densityFunction.compute(params, pos.getX(), pos.getY(), pos.getZ());
7282
source.sendFeedback(Component.translatable("command.sample.sampleDensity.success", ComponentUtils.formatXYZ(pos.getX(), pos.getY(), pos.getZ()), ComponentUtils.formatNumber(density)));
7383

src/main/java/dev/xpple/seedmapper/seedmap/FeatureToggleWidget.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import dev.xpple.seedmapper.config.Configs;
44
import net.minecraft.client.gui.GuiGraphics;
55
import net.minecraft.client.gui.components.Button;
6+
import net.minecraft.client.gui.components.Tooltip;
67
import net.minecraft.network.chat.Component;
78
import net.minecraft.util.ARGB;
89

@@ -13,6 +14,7 @@ public class FeatureToggleWidget extends Button {
1314
public FeatureToggleWidget(MapFeature feature, int x, int y) {
1415
super(x, y, feature.getDefaultTexture().width(), feature.getDefaultTexture().height(), Component.literal(feature.getName()), FeatureToggleWidget::onButtonPress, DEFAULT_NARRATION);
1516
this.feature = feature;
17+
this.setTooltip(Tooltip.create(Component.literal(this.feature.getName())));
1618
}
1719

1820
public Component getTooltip() {

src/main/resources/assets/seedmapper/lang/en_us.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@
100100
"config.worldBorder.comment": "Limits the seed map to a square world border radius in blocks. Use 0 to disable.",
101101

102102
"key.seedMap": "Seed map",
103+
"key.minimap": "Seed minimap",
103104

104105
"seedMap.seed": "Seed: %s | %s %s",
105106
"seedMap.chestLoot.title": "%s loot (%d/%d)",

0 commit comments

Comments
 (0)