Move flat bedrock generator to file patches

This commit is contained in:
Nassim Jahnke
2024-12-19 12:26:28 +01:00
parent 5f9265cc31
commit 4353c33213
12 changed files with 238 additions and 293 deletions

View File

@@ -0,0 +1,12 @@
--- a/data/minecraft/worldgen/noise_settings/amplified.json
+++ b/data/minecraft/worldgen/noise_settings/amplified.json
@@ -389,7 +_,8 @@
{
"type": "minecraft:condition",
"if_true": {
- "type": "minecraft:vertical_gradient",
+ "type": "paper:optionally_flat_bedrock_condition_source",
+ "is_roof": false,
"false_at_and_above": {
"above_bottom": 5
},

View File

@@ -0,0 +1,22 @@
--- a/data/minecraft/worldgen/noise_settings/caves.json
+++ b/data/minecraft/worldgen/noise_settings/caves.json
@@ -110,7 +_,8 @@
"if_true": {
"type": "minecraft:not",
"invert": {
- "type": "minecraft:vertical_gradient",
+ "type": "paper:optionally_flat_bedrock_condition_source",
+ "is_roof": true,
"false_at_and_above": {
"below_top": 0
},
@@ -130,7 +_,8 @@
{
"type": "minecraft:condition",
"if_true": {
- "type": "minecraft:vertical_gradient",
+ "type": "paper:optionally_flat_bedrock_condition_source",
+ "is_roof": false,
"false_at_and_above": {
"above_bottom": 5
},

View File

@@ -0,0 +1,12 @@
--- a/data/minecraft/worldgen/noise_settings/large_biomes.json
+++ b/data/minecraft/worldgen/noise_settings/large_biomes.json
@@ -389,7 +_,8 @@
{
"type": "minecraft:condition",
"if_true": {
- "type": "minecraft:vertical_gradient",
+ "type": "paper:optionally_flat_bedrock_condition_source",
+ "is_roof": false,
"false_at_and_above": {
"above_bottom": 5
},

View File

@@ -0,0 +1,22 @@
--- a/data/minecraft/worldgen/noise_settings/nether.json
+++ b/data/minecraft/worldgen/noise_settings/nether.json
@@ -108,7 +_,8 @@
{
"type": "minecraft:condition",
"if_true": {
- "type": "minecraft:vertical_gradient",
+ "type": "paper:optionally_flat_bedrock_condition_source",
+ "is_roof": false,
"false_at_and_above": {
"above_bottom": 5
},
@@ -129,7 +_,8 @@
"if_true": {
"type": "minecraft:not",
"invert": {
- "type": "minecraft:vertical_gradient",
+ "type": "paper:optionally_flat_bedrock_condition_source",
+ "is_roof": true,
"false_at_and_above": {
"below_top": 0
},

View File

@@ -0,0 +1,12 @@
--- a/data/minecraft/worldgen/noise_settings/overworld.json
+++ b/data/minecraft/worldgen/noise_settings/overworld.json
@@ -389,7 +_,8 @@
{
"type": "minecraft:condition",
"if_true": {
- "type": "minecraft:vertical_gradient",
+ "type": "paper:optionally_flat_bedrock_condition_source",
+ "is_roof": false,
"false_at_and_above": {
"above_bottom": 5
},

View File

@@ -8,13 +8,14 @@
if (BuiltInRegistries.REGISTRY.keySet().isEmpty()) {
throw new IllegalStateException("Unable to load registries");
} else {
@@ -54,11 +_,77 @@
@@ -54,11 +_,78 @@
EntitySelectorOptions.bootStrap();
DispenseItemBehavior.bootStrap();
CauldronInteraction.bootStrap();
- BuiltInRegistries.bootStrap();
+ // Paper start
+ BuiltInRegistries.bootStrap(() -> {
+ io.papermc.paper.world.worldgen.OptionallyFlatBedrockConditionSource.bootstrap(); // Paper - Flat bedrock generator settings
+ });
+ // Paper end
CreativeModeTabs.validate();

View File

@@ -5,3 +5,21 @@
package net.minecraft.world.level.levelgen;
import com.google.common.annotations.VisibleForTesting;
@@ -218,7 +_,7 @@
@Override
public void buildSurface(WorldGenRegion level, StructureManager structureManager, RandomState random, ChunkAccess chunk) {
if (!SharedConstants.debugVoidTerrain(chunk.getPos())) {
- WorldGenerationContext worldGenerationContext = new WorldGenerationContext(this, level);
+ WorldGenerationContext worldGenerationContext = new WorldGenerationContext(this, level, level.getMinecraftWorld()); // Paper - Flat bedrock generator settings
this.buildSurface(
chunk,
worldGenerationContext,
@@ -260,7 +_,7 @@
NoiseChunk noiseChunk = chunk.getOrCreateNoiseChunk(chunkAccess -> this.createNoiseChunk(chunkAccess, structureManager, Blender.of(level), random));
Aquifer aquifer = noiseChunk.aquifer();
CarvingContext carvingContext = new CarvingContext(
- this, level.registryAccess(), chunk.getHeightAccessorForGeneration(), noiseChunk, random, this.settings.value().surfaceRule()
+ this, level.registryAccess(), chunk.getHeightAccessorForGeneration(), noiseChunk, random, this.settings.value().surfaceRule(), level.getMinecraftWorld() // Paper - Flat bedrock generator settings
);
CarvingMask carvingMask = ((ProtoChunk)chunk).getOrCreateCarvingMask();

View File

@@ -0,0 +1,32 @@
--- a/net/minecraft/world/level/levelgen/WorldGenerationContext.java
+++ b/net/minecraft/world/level/levelgen/WorldGenerationContext.java
@@ -6,8 +_,15 @@
public class WorldGenerationContext {
private final int minY;
private final int height;
+ // Paper start - Flat bedrock generator settings
+ private final @javax.annotation.Nullable net.minecraft.world.level.Level serverLevel;
public WorldGenerationContext(ChunkGenerator generator, LevelHeightAccessor level) {
+ this(generator, level, null);
+ }
+ public WorldGenerationContext(ChunkGenerator generator, LevelHeightAccessor level, net.minecraft.world.level.Level serverLevel) {
+ this.serverLevel = serverLevel;
+ // Paper end - Flat bedrock generator settings
this.minY = Math.max(level.getMinY(), generator.getMinY());
this.height = Math.min(level.getHeight(), generator.getGenDepth());
}
@@ -19,4 +_,13 @@
public int getGenDepth() {
return this.height;
}
+
+ // Paper start - Flat bedrock generator settings
+ public net.minecraft.world.level.Level level() {
+ if (this.serverLevel == null) {
+ throw new NullPointerException("WorldGenerationContext was initialized without a Level, but WorldGenerationContext#level was called");
+ }
+ return this.serverLevel;
+ }
+ // Paper end - Flat bedrock generator settings
}

View File

@@ -0,0 +1,14 @@
--- a/net/minecraft/world/level/levelgen/carver/CarvingContext.java
+++ b/net/minecraft/world/level/levelgen/carver/CarvingContext.java
@@ -27,9 +_,9 @@
LevelHeightAccessor level,
NoiseChunk noiseChunk,
RandomState randomState,
- SurfaceRules.RuleSource surfaceRule
+ SurfaceRules.RuleSource surfaceRule, @javax.annotation.Nullable net.minecraft.world.level.Level serverLevel // Paper - Flat bedrock generator settings
) {
- super(generator, level);
+ super(generator, level, serverLevel); // Paper - Flat bedrock generator settings
this.registryAccess = registryAccess;
this.noiseChunk = noiseChunk;
this.randomState = randomState;

View File

@@ -0,0 +1,11 @@
--- a/net/minecraft/world/level/levelgen/placement/PlacementContext.java
+++ b/net/minecraft/world/level/levelgen/placement/PlacementContext.java
@@ -17,7 +_,7 @@
private final Optional<PlacedFeature> topFeature;
public PlacementContext(WorldGenLevel level, ChunkGenerator generator, Optional<PlacedFeature> topFeature) {
- super(generator, level);
+ super(generator, level, level.getLevel()); // Paper - Flat bedrock generator settings
this.level = level;
this.generator = generator;
this.topFeature = topFeature;