aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/removed
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2022-12-08 11:06:54 -0800
committerJake Potrebic <[email protected]>2022-12-08 11:06:54 -0800
commit244a523df33cbf7aa962693076fb2454b4a1f5e8 (patch)
tree1a298927cbd0ac3c16374618492e8dfaa3c2c152 /patches/removed
parent6120bc9206dc59cb57ef7ac4b1b310de4a403d76 (diff)
downloadPaper-244a523df33cbf7aa962693076fb2454b4a1f5e8.tar.gz
Paper-244a523df33cbf7aa962693076fb2454b4a1f5e8.zip
readd missing structure set seeds patch
Diffstat (limited to 'patches/removed')
-rw-r--r--patches/removed/1.19.3/0806-Add-missing-structure-set-seed-configs.patch197
1 files changed, 0 insertions, 197 deletions
diff --git a/patches/removed/1.19.3/0806-Add-missing-structure-set-seed-configs.patch b/patches/removed/1.19.3/0806-Add-missing-structure-set-seed-configs.patch
deleted file mode 100644
index e5ee2d2e6e..0000000000
--- a/patches/removed/1.19.3/0806-Add-missing-structure-set-seed-configs.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jake Potrebic <[email protected]>
-Date: Thu, 13 Jan 2022 23:05:53 -0800
-Subject: [PATCH] Add missing structure set seed configs
-
-The 4 missing structure set seed configs are strongholds, mineshafts,
-buried treasure, and ancient cities.
-
-Strongholds use a ring placement scheme which isn't random so they
-utilize the world seed by default, this adds a config to override it
-for just generating the ring positions.
-
-Mineshafts and Buried Treasure structure sets are special cases
-where the "salt" that can be defined for them via datapacks has 0
-effect because the difference between the spacing and separation is 1
-which is used as the upper bound in the random with salt. So the random
-always returns the same int (0) so the salt has no effect. This adds
-seeds/salts to the frequency reducer which has a similar effect.
-
-Co-authored-by: William Blake Galbreath <[email protected]>
-
-diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-index 4ce5d41b23d6204f280e6d4d21713ec5d9a724d1..9579889e4c7dedefc4f901ccac6157c425740481 100644
---- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-+++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
-@@ -133,7 +133,7 @@ public abstract class ChunkGenerator {
- // Spigot start
- private Stream<StructureSet> possibleStructureSetsSpigot() {
- return this.possibleStructureSets().map(Holder::value).map((structureset) -> {
-- if (structureset.placement() instanceof RandomSpreadStructurePlacement randomConfig) {
-+ if (structureset.placement() instanceof RandomSpreadStructurePlacement randomConfig && this.structureSets.getKey(structureset).getNamespace().equals(net.minecraft.resources.ResourceLocation.DEFAULT_NAMESPACE)) { // Paper - check namespace cause datapacks could add structure sets with the same path
- String name = this.structureSets.getKey(structureset).getPath();
- int seed = randomConfig.salt;
-
-@@ -180,6 +180,11 @@ public abstract class ChunkGenerator {
- case "villages":
- seed = conf.villageSeed;
- break;
-+ // Paper start
-+ case "ancient_cities":
-+ seed = conf.ancientCitySeed;
-+ break;
-+ // Paper end
- }
-
- structureset = new StructureSet(structureset.structures(), new RandomSpreadStructurePlacement(randomConfig.locateOffset, randomConfig.frequencyReductionMethod, randomConfig.frequency, seed, randomConfig.exclusionZone, randomConfig.spacing(), randomConfig.separation(), randomConfig.spreadType()));
-@@ -236,7 +241,13 @@ public abstract class ChunkGenerator {
- HolderSet<Biome> holderset = concentricringsstructureplacement.preferredBiomes();
- RandomSource randomsource = RandomSource.create();
-
-+ // Paper start
-+ if (this.conf.strongholdSeed != null && this.structureSets.getResourceKey(holder).orElse(null) == net.minecraft.world.level.levelgen.structure.BuiltinStructureSets.STRONGHOLDS) {
-+ randomsource.setSeed(this.conf.strongholdSeed);
-+ } else {
- randomsource.setSeed(this instanceof FlatLevelSource ? 0L : randomstate.legacyLevelSeed());
-+ }
-+ // Paper end
- double d0 = randomsource.nextDouble() * 3.141592653589793D * 2.0D;
- int l = 0;
- int i1 = 0;
-@@ -677,7 +688,7 @@ public abstract class ChunkGenerator {
-
- for (int i1 = chunkX - chunkRange; i1 <= chunkX + chunkRange; ++i1) {
- for (int j1 = chunkZ - chunkRange; j1 <= chunkZ + chunkRange; ++j1) {
-- if (structureplacement.isStructureChunk(this, noiseConfig, seed, i1, j1)) {
-+ if (structureplacement.isStructureChunk(this, noiseConfig, seed, i1, j1, structureSet.unwrapKey().map(ResourceKey::location).orElse(null))) { // Paper
- return true;
- }
- }
-@@ -764,7 +775,7 @@ public abstract class ChunkGenerator {
- }
- }
-
-- if (structureplacement.isStructureChunk(this, noiseConfig, seed, chunkcoordintpair.x, chunkcoordintpair.z)) {
-+ if (structureplacement.isStructureChunk(this, noiseConfig, seed, chunkcoordintpair.x, chunkcoordintpair.z, this.structureSets.getResourceKey(holder).map(ResourceKey::location).orElse(null))) { // Paper
- if (list.size() == 1) {
- this.tryGenerateStructure((StructureSet.StructureSelectionEntry) list.get(0), structureAccessor, registryManager, noiseConfig, structureTemplateManager, seed, chunk, chunkcoordintpair, sectionposition);
- } else {
-diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/placement/StructurePlacement.java b/src/main/java/net/minecraft/world/level/levelgen/structure/placement/StructurePlacement.java
-index 2fd1284c7f0d8e2cf35d03072089256d990b06eb..8ef0e9fa126cd96289bab48eaa06c2a1fbe4281e 100644
---- a/src/main/java/net/minecraft/world/level/levelgen/structure/placement/StructurePlacement.java
-+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/placement/StructurePlacement.java
-@@ -59,10 +59,22 @@ public abstract class StructurePlacement {
- return this.exclusionZone;
- }
-
-+ @Deprecated @io.papermc.paper.annotation.DoNotUse // Paper
- public boolean isStructureChunk(ChunkGenerator chunkGenerator, RandomState noiseConfig, long seed, int chunkX, int chunkZ) {
-+ // Paper start - add missing structure set configs
-+ return this.isStructureChunk(chunkGenerator, noiseConfig, seed, chunkX, chunkZ, null);
-+ }
-+ public boolean isStructureChunk(ChunkGenerator chunkGenerator, RandomState noiseConfig, long seed, int chunkX, int chunkZ, @org.jetbrains.annotations.Nullable net.minecraft.resources.ResourceLocation structureSetKey) {
-+ Integer saltOverride = null;
-+ if (net.minecraft.world.level.levelgen.structure.BuiltinStructureSets.MINESHAFTS.location().equals(structureSetKey)) {
-+ saltOverride = chunkGenerator.conf.mineshaftSeed;
-+ } else if (net.minecraft.world.level.levelgen.structure.BuiltinStructureSets.BURIED_TREASURES.location().equals(structureSetKey)) {
-+ saltOverride = chunkGenerator.conf.buriedTreasureSeed;
-+ }
-+ // Paper end
- if (!this.isPlacementChunk(chunkGenerator, noiseConfig, seed, chunkX, chunkZ)) {
- return false;
-- } else if (this.frequency < 1.0F && !this.frequencyReductionMethod.shouldGenerate(seed, this.salt, chunkX, chunkZ, this.frequency)) {
-+ } else if (this.frequency < 1.0F && !this.frequencyReductionMethod.shouldGenerate(seed, this.salt, chunkX, chunkZ, this.frequency, saltOverride)) { // Paper
- return false;
- } else {
- return !this.exclusionZone.isPresent() || !this.exclusionZone.get().isPlacementForbidden(chunkGenerator, noiseConfig, seed, chunkX, chunkZ);
-@@ -77,25 +89,31 @@ public abstract class StructurePlacement {
-
- public abstract StructurePlacementType<?> type();
-
-- private static boolean probabilityReducer(long seed, int salt, int chunkX, int chunkZ, float frequency) {
-+ private static boolean probabilityReducer(long seed, int salt, int chunkX, int chunkZ, float frequency, @org.jetbrains.annotations.Nullable Integer saltOverride) { // Paper - ignore here
- WorldgenRandom worldgenRandom = new WorldgenRandom(new LegacyRandomSource(0L));
- worldgenRandom.setLargeFeatureWithSalt(seed, salt, chunkX, chunkZ);
- return worldgenRandom.nextFloat() < frequency;
- }
-
-- private static boolean legacyProbabilityReducerWithDouble(long seed, int salt, int chunkX, int chunkZ, float frequency) {
-+ private static boolean legacyProbabilityReducerWithDouble(long seed, int salt, int chunkX, int chunkZ, float frequency, @org.jetbrains.annotations.Nullable Integer saltOverride) { // Paper
- WorldgenRandom worldgenRandom = new WorldgenRandom(new LegacyRandomSource(0L));
-+ if (saltOverride == null) { // Paper
- worldgenRandom.setLargeFeatureSeed(seed, chunkX, chunkZ);
-+ // Paper start
-+ } else {
-+ worldgenRandom.setLargeFeatureWithSalt(seed, chunkX, chunkZ, saltOverride);
-+ }
-+ // Paper end
- return worldgenRandom.nextDouble() < (double)frequency;
- }
-
-- private static boolean legacyArbitrarySaltProbabilityReducer(long seed, int salt, int chunkX, int chunkZ, float frequency) {
-+ private static boolean legacyArbitrarySaltProbabilityReducer(long seed, int salt, int chunkX, int chunkZ, float frequency, @org.jetbrains.annotations.Nullable Integer saltOverride) { // Paper
- WorldgenRandom worldgenRandom = new WorldgenRandom(new LegacyRandomSource(0L));
-- worldgenRandom.setLargeFeatureWithSalt(seed, chunkX, chunkZ, 10387320);
-+ worldgenRandom.setLargeFeatureWithSalt(seed, chunkX, chunkZ, saltOverride != null ? saltOverride : 10387320); // Paper
- return worldgenRandom.nextFloat() < frequency;
- }
-
-- private static boolean legacyPillagerOutpostReducer(long seed, int salt, int chunkX, int chunkZ, float frequency) {
-+ private static boolean legacyPillagerOutpostReducer(long seed, int salt, int chunkX, int chunkZ, float frequency, @org.jetbrains.annotations.Nullable Integer saltOverride) { // Paper - ignore here
- int i = chunkX >> 4;
- int j = chunkZ >> 4;
- WorldgenRandom worldgenRandom = new WorldgenRandom(new LegacyRandomSource(0L));
-@@ -118,7 +136,7 @@ public abstract class StructurePlacement {
-
- @FunctionalInterface
- public interface FrequencyReducer {
-- boolean shouldGenerate(long seed, int salt, int chunkX, int chunkZ, float chance);
-+ boolean shouldGenerate(long seed, int salt, int chunkX, int chunkZ, float chance, @org.jetbrains.annotations.Nullable Integer saltOverride); // Paper
- }
-
- public static enum FrequencyReductionMethod implements StringRepresentable {
-@@ -136,8 +154,8 @@ public abstract class StructurePlacement {
- this.reducer = generationPredicate;
- }
-
-- public boolean shouldGenerate(long seed, int salt, int chunkX, int chunkZ, float chance) {
-- return this.reducer.shouldGenerate(seed, salt, chunkX, chunkZ, chance);
-+ public boolean shouldGenerate(long seed, int salt, int chunkX, int chunkZ, float chance, @org.jetbrains.annotations.Nullable Integer saltOverride) { // Paper
-+ return this.reducer.shouldGenerate(seed, salt, chunkX, chunkZ, chance, saltOverride); // Paper
- }
-
- @Override
-diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-index 6bcc46795d1f78746192cc107c4a1f61580ec3c5..5503ad6a93d331771a0e92c0da6adedf2ac81aff 100644
---- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
-+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
-@@ -362,6 +362,16 @@ public class SpigotWorldConfig
- public int mansionSeed;
- public int fossilSeed;
- public int portalSeed;
-+ // Paper start - add missing structure set configs
-+ public int ancientCitySeed;
-+ public int buriedTreasureSeed;
-+ public Integer mineshaftSeed;
-+ public Long strongholdSeed;
-+ private <N extends Number> N getSeed(String path, java.util.function.Function<String, N> toNumberFunc) {
-+ final String value = this.getString(path, "default");
-+ return org.apache.commons.lang3.math.NumberUtils.isParsable(value) ? toNumberFunc.apply(value) : null;
-+ }
-+ // Paper end
- private void initWorldGenSeeds()
- {
- this.villageSeed = this.getInt( "seed-village", 10387312 );
-@@ -379,6 +389,12 @@ public class SpigotWorldConfig
- this.mansionSeed = this.getInt( "seed-mansion", 10387319 );
- this.fossilSeed = this.getInt( "seed-fossil", 14357921 );
- this.portalSeed = this.getInt( "seed-portal", 34222645 );
-+ // Paper start - add missing structure set configs
-+ this.ancientCitySeed = this.getInt("seed-ancientcity", 20083232);
-+ this.buriedTreasureSeed = this.getInt("seed-buriedtreasure", 10387320); // StructurePlacement#HIGHLY_ARBITRARY_RANDOM_SALT
-+ this.mineshaftSeed = this.getSeed("seed-mineshaft", Integer::parseInt);
-+ this.strongholdSeed = this.getSeed("seed-stronghold", Long::parseLong);
-+ // Paper end
- this.log( "Custom Map Seeds: Village: " + this.villageSeed + " Desert: " + this.desertSeed + " Igloo: " + this.iglooSeed + " Jungle: " + this.jungleSeed + " Swamp: " + this.swampSeed + " Monument: " + this.monumentSeed
- + " Ocean: " + this.oceanSeed + " Shipwreck: " + this.shipwreckSeed + " End City: " + this.endCitySeed + " Slime: " + this.slimeSeed + " Nether: " + this.netherSeed + " Mansion: " + this.mansionSeed + " Fossil: " + this.fossilSeed + " Portal: " + this.portalSeed );
- }