51 lines
3.5 KiB
Diff
51 lines
3.5 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Nassim Jahnke <jahnke.nassim@gmail.com>
|
||
|
Date: Tue, 31 Aug 2021 17:05:27 +0200
|
||
|
Subject: [PATCH] Configurable feature seeds
|
||
|
|
||
|
Co-authored-by: Thonk <30448663+ExcessiveAmountsOfZombies@users.noreply.github.com>
|
||
|
|
||
|
diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java
|
||
|
index 46297ac0a19fd2398ab777a381eff4d0a256161e..78280fb3bcd8d792a58ece6d735e0824ea4be536 100644
|
||
|
--- a/src/main/java/co/aikar/timings/TimingsExport.java
|
||
|
+++ b/src/main/java/co/aikar/timings/TimingsExport.java
|
||
|
@@ -283,7 +283,7 @@ public class TimingsExport extends Thread {
|
||
|
JSONObject object = new JSONObject();
|
||
|
for (String key : config.getKeys(false)) {
|
||
|
String fullKey = (parentKey != null ? parentKey + "." + key : key);
|
||
|
- if (fullKey.equals("database") || fullKey.equals("settings.bungeecord-addresses") || TimingsManager.hiddenConfigs.contains(fullKey) || key.startsWith("seed-") || key.equals("worldeditregentempworld")) {
|
||
|
+ if (fullKey.equals("database") || fullKey.equals("settings.bungeecord-addresses") || TimingsManager.hiddenConfigs.contains(fullKey) || key.startsWith("seed-") || key.equals("worldeditregentempworld") || key.equals("feature-seeds")) {
|
||
|
continue;
|
||
|
}
|
||
|
final Object val = config.get(key);
|
||
|
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 a4e2ee3efde40c902555f982ffa546c24bc31377..ec7343c7acb438781026b25390528889209fe97a 100644
|
||
|
--- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
|
||
|
+++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
|
||
|
@@ -530,7 +530,7 @@ public abstract class ChunkGenerator {
|
||
|
int j = list.size();
|
||
|
|
||
|
try {
|
||
|
- Registry<PlacedFeature> iregistry1 = generatoraccessseed.registryAccess().registryOrThrow(Registry.PLACED_FEATURE_REGISTRY);
|
||
|
+ Registry<PlacedFeature> iregistry1 = generatoraccessseed.registryAccess().registryOrThrow(Registry.PLACED_FEATURE_REGISTRY); // Paper - diff on change
|
||
|
int k = Math.max(GenerationStep.Decoration.values().length, j);
|
||
|
|
||
|
for (int l = 0; l < k; ++l) {
|
||
|
@@ -603,7 +603,15 @@ public abstract class ChunkGenerator {
|
||
|
return (String) optional.orElseGet(placedfeature::toString);
|
||
|
};
|
||
|
|
||
|
- seededrandom.setFeatureSeed(i, l1, l);
|
||
|
+ // Paper start - change populationSeed used in random
|
||
|
+ long featurePopulationSeed = i;
|
||
|
+ final net.minecraft.resources.ResourceLocation location = iregistry1.getKey(placedfeature);
|
||
|
+ final long configFeatureSeed = generatoraccessseed.getMinecraftWorld().paperConfig().featureSeeds.features.getLong(location); // TODO this wont work
|
||
|
+ if (configFeatureSeed != -1) {
|
||
|
+ featurePopulationSeed = seededrandom.setDecorationSeed(configFeatureSeed, blockposition.getX(), blockposition.getZ()); // See seededrandom.setDecorationSeed from above
|
||
|
+ }
|
||
|
+ seededrandom.setFeatureSeed(featurePopulationSeed, l1, l);
|
||
|
+ // Paper end
|
||
|
|
||
|
try {
|
||
|
generatoraccessseed.setCurrentlyGenerating(supplier1);
|