mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-09 19:49:35 +01:00
25f3b50f6b
By: md_5 <git@md-5.net>
105 lines
6.3 KiB
Diff
105 lines
6.3 KiB
Diff
--- a/net/minecraft/util/worldupdate/WorldUpgrader.java
|
|
+++ b/net/minecraft/util/worldupdate/WorldUpgrader.java
|
|
@@ -40,6 +40,10 @@
|
|
import net.minecraft.world.level.storage.WorldPersistentData;
|
|
import org.slf4j.Logger;
|
|
|
|
+// CraftBukkit start
|
|
+import net.minecraft.world.level.dimension.WorldDimension;
|
|
+// CraftBukkit end
|
|
+
|
|
public class WorldUpgrader {
|
|
|
|
private static final Logger LOGGER = LogUtils.getLogger();
|
|
@@ -55,7 +59,7 @@
|
|
private volatile int totalChunks;
|
|
private volatile int converted;
|
|
private volatile int skipped;
|
|
- private final Object2FloatMap<ResourceKey<World>> progressMap = Object2FloatMaps.synchronize(new Object2FloatOpenCustomHashMap(SystemUtils.identityStrategy()));
|
|
+ private final Object2FloatMap<ResourceKey<WorldDimension>> progressMap = Object2FloatMaps.synchronize(new Object2FloatOpenCustomHashMap(SystemUtils.identityStrategy())); // CraftBukkit
|
|
private volatile IChatBaseComponent status = IChatBaseComponent.translatable("optimizeWorld.stage.counting");
|
|
private static final Pattern REGEX = Pattern.compile("^r\\.(-?[0-9]+)\\.(-?[0-9]+)\\.mca$");
|
|
private final WorldPersistentData overworldDataStorage;
|
|
@@ -88,13 +92,13 @@
|
|
|
|
private void work() {
|
|
this.totalChunks = 0;
|
|
- Builder<ResourceKey<World>, ListIterator<ChunkCoordIntPair>> builder = ImmutableMap.builder();
|
|
- ImmutableSet<ResourceKey<World>> immutableset = this.worldGenSettings.levels();
|
|
+ Builder<ResourceKey<WorldDimension>, ListIterator<ChunkCoordIntPair>> builder = ImmutableMap.builder(); // CraftBukkit
|
|
+ ImmutableSet<ResourceKey<WorldDimension>> immutableset = ImmutableSet.of(levelStorage.dimensionType); // CraftBukkit
|
|
|
|
List list;
|
|
|
|
for (UnmodifiableIterator unmodifiableiterator = immutableset.iterator(); unmodifiableiterator.hasNext(); this.totalChunks += list.size()) {
|
|
- ResourceKey<World> resourcekey = (ResourceKey) unmodifiableiterator.next();
|
|
+ ResourceKey<WorldDimension> resourcekey = (ResourceKey) unmodifiableiterator.next(); // CraftBukkit
|
|
|
|
list = this.getAllChunkPos(resourcekey);
|
|
builder.put(resourcekey, list.listIterator());
|
|
@@ -104,18 +108,18 @@
|
|
this.finished = true;
|
|
} else {
|
|
float f = (float) this.totalChunks;
|
|
- ImmutableMap<ResourceKey<World>, ListIterator<ChunkCoordIntPair>> immutablemap = builder.build();
|
|
- Builder<ResourceKey<World>, IChunkLoader> builder1 = ImmutableMap.builder();
|
|
+ ImmutableMap<ResourceKey<WorldDimension>, ListIterator<ChunkCoordIntPair>> immutablemap = builder.build(); // CraftBukkit
|
|
+ Builder<ResourceKey<WorldDimension>, IChunkLoader> builder1 = ImmutableMap.builder(); // CraftBukkit
|
|
UnmodifiableIterator unmodifiableiterator1 = immutableset.iterator();
|
|
|
|
while (unmodifiableiterator1.hasNext()) {
|
|
- ResourceKey<World> resourcekey1 = (ResourceKey) unmodifiableiterator1.next();
|
|
- Path path = this.levelStorage.getDimensionPath(resourcekey1);
|
|
+ ResourceKey<WorldDimension> resourcekey1 = (ResourceKey) unmodifiableiterator1.next(); // CraftBukkit
|
|
+ Path path = this.levelStorage.getDimensionPath((ResourceKey) null); // CraftBukkit
|
|
|
|
builder1.put(resourcekey1, new IChunkLoader(path.resolve("region"), this.dataFixer, true));
|
|
}
|
|
|
|
- ImmutableMap<ResourceKey<World>, IChunkLoader> immutablemap1 = builder1.build();
|
|
+ ImmutableMap<ResourceKey<WorldDimension>, IChunkLoader> immutablemap1 = builder1.build(); // CraftBukkit
|
|
long i = SystemUtils.getMillis();
|
|
|
|
this.status = IChatBaseComponent.translatable("optimizeWorld.stage.upgrading");
|
|
@@ -127,7 +131,7 @@
|
|
float f2;
|
|
|
|
for (UnmodifiableIterator unmodifiableiterator2 = immutableset.iterator(); unmodifiableiterator2.hasNext(); f1 += f2) {
|
|
- ResourceKey<World> resourcekey2 = (ResourceKey) unmodifiableiterator2.next();
|
|
+ ResourceKey<WorldDimension> resourcekey2 = (ResourceKey) unmodifiableiterator2.next(); // CraftBukkit
|
|
ListIterator<ChunkCoordIntPair> listiterator = (ListIterator) immutablemap.get(resourcekey2);
|
|
IChunkLoader ichunkloader = (IChunkLoader) immutablemap1.get(resourcekey2);
|
|
|
|
@@ -140,10 +144,10 @@
|
|
|
|
if (nbttagcompound != null) {
|
|
int j = IChunkLoader.getVersion(nbttagcompound);
|
|
- ChunkGenerator chunkgenerator = ((WorldDimension) this.worldGenSettings.dimensions().get(GeneratorSettings.levelToLevelStem(resourcekey2))).generator();
|
|
+ ChunkGenerator chunkgenerator = ((WorldDimension) this.worldGenSettings.dimensions().get(resourcekey2)).generator(); // CraftBukkit
|
|
NBTTagCompound nbttagcompound1 = ichunkloader.upgradeChunkTag(resourcekey2, () -> {
|
|
return this.overworldDataStorage;
|
|
- }, nbttagcompound, chunkgenerator.getTypeNameForDataFixer());
|
|
+ }, nbttagcompound, chunkgenerator.getTypeNameForDataFixer(), chunkcoordintpair, null); // CraftBukkit
|
|
ChunkCoordIntPair chunkcoordintpair1 = new ChunkCoordIntPair(nbttagcompound1.getInt("xPos"), nbttagcompound1.getInt("zPos"));
|
|
|
|
if (!chunkcoordintpair1.equals(chunkcoordintpair)) {
|
|
@@ -223,8 +227,8 @@
|
|
}
|
|
}
|
|
|
|
- private List<ChunkCoordIntPair> getAllChunkPos(ResourceKey<World> resourcekey) {
|
|
- File file = this.levelStorage.getDimensionPath(resourcekey).toFile();
|
|
+ private List<ChunkCoordIntPair> getAllChunkPos(ResourceKey<WorldDimension> resourcekey) { // CraftBukkit
|
|
+ File file = this.levelStorage.getDimensionPath((ResourceKey) null).toFile(); // CraftBukkit
|
|
File file1 = new File(file, "region");
|
|
File[] afile = file1.listFiles((file2, s) -> {
|
|
return s.endsWith(".mca");
|
|
@@ -284,7 +288,7 @@
|
|
}
|
|
|
|
public ImmutableSet<ResourceKey<World>> levels() {
|
|
- return this.worldGenSettings.levels();
|
|
+ throw new AssertionError("Unsupported"); // CraftBukkit
|
|
}
|
|
|
|
public float dimensionProgress(ResourceKey<World> resourcekey) {
|