Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-16 19:40:07 +01:00
fc917d1687
Removed streams from hoppers and also fixed a mistake in the logic. When this patch was ported to 1.14/1.15, a line of code was put in the wrong place which disabled a significant portion of the improvement. Replaced usages of streams in isEmpty and itemstack checks Replaced usage of streams in pulling loop Replaced usage of streams in Lootable Inventory isEmpty() check Only check for refilling Lootable Inventory when accessing first slot, not all All of these in general were pretty significant hits, so this single commit is going to cause tacos to magically appear in front of you every day. 🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮🌮 Nom Nom Nom If you hate taco's, you're not allowed to use this improvement. Also ignore the renames, pulled a lot of PR's.
44 Zeilen
2.4 KiB
Diff
44 Zeilen
2.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Sat, 9 May 2020 12:11:47 -0400
|
|
Subject: [PATCH] MC-183249: Don't generate Carving Masks BitSet unless needed
|
|
|
|
This was using SIGNIFICANT amounts of memory allocating many
|
|
long[]'s for BitSets for every ProtoChunk in the cache that had
|
|
been unloaded and reloaded.
|
|
|
|
This will result in a nice memory reduction.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
index fa893b14bcef9bab6891dea2c4375b09d74ac038..e625842e524f18e469f7695b27d52d4d04892266 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
@@ -472,7 +472,12 @@ public class ChunkRegionLoader {
|
|
for (int l = 0; l < k; ++l) {
|
|
WorldGenStage.Features worldgenstage_features = aworldgenstage_features[l];
|
|
|
|
- nbttagcompound3.setByteArray(worldgenstage_features.toString(), ichunkaccess.a(worldgenstage_features).toByteArray());
|
|
+ // Paper start - don't create carving mask bitsets if not even at that chunk status yet
|
|
+ BitSet mask = protochunk.getCarvingMaskIfSet(worldgenstage_features);
|
|
+ if (mask != null) {
|
|
+ nbttagcompound3.setByteArray(worldgenstage_features.toString(), mask.toByteArray());
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
nbttagcompound1.set("CarvingMasks", nbttagcompound3);
|
|
diff --git a/src/main/java/net/minecraft/server/ProtoChunk.java b/src/main/java/net/minecraft/server/ProtoChunk.java
|
|
index deb7fb090196c4a33c0bb224f1c4e899aa3cd8c3..9223ef9545be4a87b421e25ebe3f5b7ad72c4726 100644
|
|
--- a/src/main/java/net/minecraft/server/ProtoChunk.java
|
|
+++ b/src/main/java/net/minecraft/server/ProtoChunk.java
|
|
@@ -43,7 +43,8 @@ public class ProtoChunk implements IChunkAccess {
|
|
private final ProtoChunkTickList<Block> q;
|
|
private final ProtoChunkTickList<FluidType> r;
|
|
private long s;
|
|
- private final Map<WorldGenStage.Features, BitSet> t;
|
|
+ private final Map<WorldGenStage.Features, BitSet> t;public BitSet getCarvingMaskIfSet(WorldGenStage.Features worldgenstage_features) { return this.t.get(worldgenstage_features); } // Paper
|
|
+ // Paper end
|
|
private volatile boolean u;
|
|
private final World world; // Paper - Anti-Xray - Add world
|
|
|