mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-20 18:07:43 +01:00
Updated Upstream (Paper)
Upstream has released updates that appears to apply and compile correctly Paper Changes: d78cbb85 [1.16] Remove some streams from structures (#3704)
This commit is contained in:
2
Paper
2
Paper
Submodule Paper updated: 8522e7b274...d78cbb8553
@@ -1 +1 @@
|
|||||||
1.16.1--60c274b0bdfbddf76123182f724083092e5b1fdc
|
1.16.1--9df7694b152e9bdeb20c3f122f82f06d23ddc2dc
|
||||||
|
|||||||
@@ -1,121 +0,0 @@
|
|||||||
From ae05c0006b43c2b1663a8f3cd1caf54fa23d2b4c Mon Sep 17 00:00:00 2001
|
|
||||||
From: JRoy <joshroy126@gmail.com>
|
|
||||||
Date: Mon, 29 Jun 2020 17:03:06 -0400
|
|
||||||
Subject: [PATCH] PaperPR - Remove some streams from structures
|
|
||||||
|
|
||||||
This showed up a lot in the spark profiler, should have a low-medium performance improvement.
|
|
||||||
Fix compile
|
|
||||||
---
|
|
||||||
.../java/net/minecraft/server/BiomeBase.java | 8 ++--
|
|
||||||
.../server/ChunkGeneratorAbstract.java | 5 +--
|
|
||||||
.../minecraft/server/StructureManager.java | 38 +++++++++++++++----
|
|
||||||
3 files changed, 37 insertions(+), 14 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java
|
|
||||||
index 30aeb45d6..db198811d 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/BiomeBase.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/BiomeBase.java
|
|
||||||
@@ -339,9 +339,11 @@ public class BiomeBase {
|
|
||||||
int j1 = l << 4;
|
|
||||||
|
|
||||||
try {
|
|
||||||
- structuremanager.a(SectionPosition.a(blockposition), structuregenerator).forEach((structurestart) -> {
|
|
||||||
- structurestart.a(generatoraccessseed, structuremanager, chunkgenerator, seededrandom, new StructureBoundingBox(i1, j1, i1 + 15, j1 + 15), new ChunkCoordIntPair(k, l));
|
|
||||||
- });
|
|
||||||
+ // Paper start - remove structure streams
|
|
||||||
+ for (StructureStart<?> structureStart : structuremanager.getFeatureStarts(SectionPosition.a(blockposition), structuregenerator)) {
|
|
||||||
+ structureStart.a(generatoraccessseed, structuremanager, chunkgenerator, seededrandom, new StructureBoundingBox(i1, j1, i1 + 15, j1 + 15), new ChunkCoordIntPair(k, l));
|
|
||||||
+ }
|
|
||||||
+ // Paper end
|
|
||||||
} catch (Exception exception) {
|
|
||||||
CrashReport crashreport = CrashReport.a(exception, "Feature placement");
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java b/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java
|
|
||||||
index 733c6244e..04f70e29b 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/ChunkGeneratorAbstract.java
|
|
||||||
@@ -417,7 +417,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator {
|
|
||||||
while (iterator.hasNext()) {
|
|
||||||
StructureGenerator<?> structuregenerator = (StructureGenerator) iterator.next();
|
|
||||||
|
|
||||||
- structuremanager.a(SectionPosition.a(chunkcoordintpair, 0), structuregenerator).forEach((structurestart) -> {
|
|
||||||
+ for (StructureStart<?> structurestart : structuremanager.getFeatureStarts(SectionPosition.a(chunkcoordintpair, 0), structuregenerator)) { // Paper - remove structure streams
|
|
||||||
Iterator iterator1 = structurestart.d().iterator();
|
|
||||||
|
|
||||||
while (iterator1.hasNext()) {
|
|
||||||
@@ -448,8 +448,7 @@ public final class ChunkGeneratorAbstract extends ChunkGenerator {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- });
|
|
||||||
+ } // Paper - remove structure streams
|
|
||||||
}
|
|
||||||
|
|
||||||
double[][][] adouble = new double[2][this.p + 1][this.o + 1];
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/StructureManager.java b/src/main/java/net/minecraft/server/StructureManager.java
|
|
||||||
index c434427ce..6c7804ac0 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/StructureManager.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/StructureManager.java
|
|
||||||
@@ -6,7 +6,7 @@ import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
public class StructureManager {
|
|
||||||
|
|
||||||
- private final GeneratorAccess a;
|
|
||||||
+ private final GeneratorAccess a; public GeneratorAccess getLevel() { return a; } // Paper - OBFHELPER
|
|
||||||
private final GeneratorSettings b;
|
|
||||||
|
|
||||||
public StructureManager(GeneratorAccess generatoraccess, GeneratorSettings generatorsettings) {
|
|
||||||
@@ -32,6 +32,20 @@ public class StructureManager {
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Paper start - remove structure streams
|
|
||||||
+ public java.util.List<StructureStart<?>> getFeatureStarts(SectionPosition sectionPosition, StructureGenerator<?> structureGenerator) {
|
|
||||||
+ java.util.List<StructureStart<?>> list = new it.unimi.dsi.fastutil.objects.ObjectArrayList<>();
|
|
||||||
+ for (Long curLong: getLevel().getChunkAt(sectionPosition.a(), sectionPosition.c(), ChunkStatus.STRUCTURE_REFERENCES).b(structureGenerator)) {
|
|
||||||
+ SectionPosition sectionPosition1 = SectionPosition.a(new ChunkCoordIntPair(curLong), 0);
|
|
||||||
+ StructureStart<?> structurestart = a(sectionPosition1, structureGenerator, getLevel().getChunkAt(sectionPosition1.a(), sectionPosition1.c(), ChunkStatus.STRUCTURE_STARTS));
|
|
||||||
+ if (structurestart != null && structurestart.e()) {
|
|
||||||
+ list.add(structurestart);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ return list;
|
|
||||||
+ }
|
|
||||||
+ // Paper end
|
|
||||||
+
|
|
||||||
@Nullable
|
|
||||||
public StructureStart<?> a(SectionPosition sectionposition, StructureGenerator<?> structuregenerator, IStructureAccess istructureaccess) {
|
|
||||||
return istructureaccess.a(structuregenerator);
|
|
||||||
@@ -50,13 +64,21 @@ public class StructureManager {
|
|
||||||
}
|
|
||||||
|
|
||||||
public StructureStart<?> a(BlockPosition blockposition, boolean flag, StructureGenerator<?> structuregenerator) {
|
|
||||||
- return (StructureStart) DataFixUtils.orElse(this.a(SectionPosition.a(blockposition), structuregenerator).filter((structurestart) -> {
|
|
||||||
- return structurestart.c().b((BaseBlockPosition) blockposition);
|
|
||||||
- }).filter((structurestart) -> {
|
|
||||||
- return !flag || structurestart.d().stream().anyMatch((structurepiece) -> {
|
|
||||||
- return structurepiece.g().b((BaseBlockPosition) blockposition);
|
|
||||||
- });
|
|
||||||
- }).findFirst(), StructureStart.a);
|
|
||||||
+ // Paper start - remove structure streams
|
|
||||||
+ for (StructureStart<?> structurestart : getFeatureStarts(SectionPosition.a(blockposition), structuregenerator)) {
|
|
||||||
+ if (structurestart.c().b(blockposition)) {
|
|
||||||
+ if (!flag) {
|
|
||||||
+ return structurestart;
|
|
||||||
+ }
|
|
||||||
+ for (StructurePiece structurepiece : structurestart.d()) {
|
|
||||||
+ if (structurepiece.g().b(blockposition)) {
|
|
||||||
+ return structurestart;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ return StructureStart.a;
|
|
||||||
+ // Paper end
|
|
||||||
}
|
|
||||||
|
|
||||||
// Spigot start
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user