mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 17:07:43 +01:00
Upstream has released updates that appears to apply and compile correctly Tuinity Changes: 3b008f5 Optimisations 200f825 Actually unload POI data db64f14 Make sure to despawn entities if they are outside the player general 89276ac Fix villagers aggressively looking at people 8830cef Remove streams for poi searching in some zombie pathfinding a17dc2c Attempt to fix incorrect nearest village distance tracker updating ef8cd34 Fix NPE 3e45700Do not return complex parts for entity by class lookup 2110847 Rewrite getClosestEntity 460581d Fix getClosestEntity not working 2cb36ca Optimise non-flush packet sending 784b838 Some fixes e2dcdd1 Correct return value for ChunkCache#getCubes 968512b Add Velocity natives for encryption and compression (#188) 102d60b Rebuild patches 57fed71 Fix decompression with Velocity natives 442890b Fix decompression with Velocity natives (#191) 0179ea8 Re-Add region manager and notify patch cbffdcc Do not mark entities in unloaded chunks as being in blocks f2eef4a Fixup dev branch patches and store reverted patches in revert folder
93 lines
4.8 KiB
Diff
93 lines
4.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Sat, 18 Jul 2020 11:27:43 -0500
|
|
Subject: [PATCH] Populator seed controls
|
|
|
|
|
|
diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java
|
|
index dae2e5d707..55b67f1057 100644
|
|
--- a/src/main/java/co/aikar/timings/TimingsExport.java
|
|
+++ b/src/main/java/co/aikar/timings/TimingsExport.java
|
|
@@ -293,7 +293,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") || fullKey.contains("worldgen.seeds.populator")) { // Tuinity
|
|
continue;
|
|
}
|
|
final Object val = config.get(key);
|
|
diff --git a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java
|
|
index 285534d2c9..0b6cbeeae9 100644
|
|
--- a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java
|
|
+++ b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java
|
|
@@ -1,5 +1,6 @@
|
|
package com.tuinity.tuinity.config;
|
|
|
|
+import co.aikar.timings.TimingsManager;
|
|
import com.destroystokyo.paper.util.SneakyThrow;
|
|
import net.minecraft.server.MinecraftServer;
|
|
import net.minecraft.server.TicketType;
|
|
@@ -370,6 +371,19 @@ public final class TuinityConfig {
|
|
this.spawnLimitAmbient = this.getInt(path + ".ambient", -1);
|
|
}
|
|
|
|
+ public Long populatorSeed;
|
|
+ public boolean useRandomPopulatorSeed;
|
|
+
|
|
+ private void populatorSeed() {
|
|
+ final String seedString = this.getString("worldgen.seeds.populator", "default");
|
|
+ if (seedString.equalsIgnoreCase("random")) {
|
|
+ this.useRandomPopulatorSeed = true;
|
|
+ } else if (!seedString.equalsIgnoreCase("default")) {
|
|
+ this.populatorSeed = Long.parseLong(seedString);
|
|
+ }
|
|
+ if (!TimingsManager.hiddenConfigs.contains("worldgen.seeds.populator")) TimingsManager.hiddenConfigs.add("worldgen.seeds.populator");
|
|
+ }
|
|
+
|
|
}
|
|
|
|
}
|
|
\ No newline at end of file
|
|
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java
|
|
index 0854ac9ef5..df6874c1cf 100644
|
|
--- a/src/main/java/net/minecraft/server/BiomeBase.java
|
|
+++ b/src/main/java/net/minecraft/server/BiomeBase.java
|
|
@@ -189,6 +189,10 @@ public final class BiomeBase {
|
|
return this.k;
|
|
}
|
|
|
|
+ // Tuinity start - populator seed control
|
|
+ private static final java.security.SecureRandom SECURE_RANDOM = new java.security.SecureRandom();
|
|
+ // Tuinity end - populator seed control
|
|
+
|
|
public void a(StructureManager structuremanager, ChunkGenerator chunkgenerator, RegionLimitedWorldAccess regionlimitedworldaccess, long i, SeededRandom seededrandom, BlockPosition blockposition) {
|
|
List<List<Supplier<WorldGenFeatureConfigured<?, ?>>>> list = this.k.c();
|
|
int j = WorldGenStage.Decoration.values().length;
|
|
@@ -225,12 +229,24 @@ public final class BiomeBase {
|
|
}
|
|
}
|
|
|
|
+ // Tuinity start - populator seed control
|
|
+ long populatorSeed;
|
|
+ WorldServer world = (WorldServer)((ChunkProviderServer)regionlimitedworldaccess.getChunkProvider()).getWorld();
|
|
+ if (world.tuinityConfig.useRandomPopulatorSeed) {
|
|
+ populatorSeed = SECURE_RANDOM.nextLong();
|
|
+ } else if (world.tuinityConfig.populatorSeed != null) {
|
|
+ populatorSeed = world.tuinityConfig.populatorSeed.longValue();
|
|
+ } else {
|
|
+ populatorSeed = i;
|
|
+ }
|
|
+ // Tuinity end - populator seed control
|
|
+
|
|
if (list.size() > k) {
|
|
for (Iterator iterator1 = ((List) list.get(k)).iterator(); iterator1.hasNext(); ++l) {
|
|
Supplier<WorldGenFeatureConfigured<?, ?>> supplier = (Supplier) iterator1.next();
|
|
WorldGenFeatureConfigured<?, ?> worldgenfeatureconfigured = (WorldGenFeatureConfigured) supplier.get();
|
|
|
|
- seededrandom.b(i, l, k);
|
|
+ seededrandom.b(populatorSeed, l, k); // Tuinity - populator seed control - move i up into default branch
|
|
|
|
try {
|
|
worldgenfeatureconfigured.a(regionlimitedworldaccess, chunkgenerator, seededrandom, blockposition);
|