Skip to content

Commit 182a609

Browse files
Fix duplicate world keys via createWorld (#7614)
1 parent 79e07f3 commit 182a609

13 files changed

+48
-30
lines changed

patches/server/0608-Add-methods-to-get-world-by-key.patch

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,28 @@ Subject: [PATCH] Add methods to get world by key
55

66

77
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
8-
index f904ce285548a81835b1d3af9c05f00f84d5d3da..3e26f9a4c93f616f4f02edbbd851cf0b9ab0cdb1 100644
8+
index f904ce285548a81835b1d3af9c05f00f84d5d3da..6f30668471c2076e2bbd8af79791bbe362f4d08e 100644
99
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
1010
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
11-
@@ -1232,7 +1232,7 @@ public final class CraftServer implements Server {
11+
@@ -1138,9 +1138,15 @@ public final class CraftServer implements Server {
12+
File folder = new File(this.getWorldContainer(), name);
13+
World world = this.getWorld(name);
14+
15+
- if (world != null) {
16+
- return world;
17+
+ // Paper start
18+
+ World worldByKey = this.getWorld(creator.key());
19+
+ if (world != null || worldByKey != null) {
20+
+ if (world == worldByKey) {
21+
+ return world;
22+
+ }
23+
+ throw new IllegalArgumentException("Cannot create a world with key " + creator.key() + " and name " + name + " one (or both) already match a world that exists");
24+
}
25+
+ // Paper end
26+
27+
if ((folder.exists()) && (!folder.isDirectory())) {
28+
throw new IllegalArgumentException("File exists with the name '" + name + "' and isn't a folder");
29+
@@ -1232,7 +1238,7 @@ public final class CraftServer implements Server {
1230
} else if (name.equals(levelName + "_the_end")) {
1331
worldKey = net.minecraft.world.level.Level.END;
1432
} else {
@@ -17,7 +35,7 @@ index f904ce285548a81835b1d3af9c05f00f84d5d3da..3e26f9a4c93f616f4f02edbbd851cf0b
1735
}
1836

1937
ServerLevel internal = (ServerLevel) new ServerLevel(this.console, console.executor, worldSession, worlddata, worldKey, holder, this.getServer().progressListenerFactory.create(11),
20-
@@ -1324,6 +1324,15 @@ public final class CraftServer implements Server {
38+
@@ -1324,6 +1330,15 @@ public final class CraftServer implements Server {
2139
return null;
2240
}
2341

patches/server/0646-Add-basic-Datapack-API.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ index 0000000000000000000000000000000000000000..cf4374493c11057451a62a655514415c
9292
+ }
9393
+}
9494
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
95-
index 3e26f9a4c93f616f4f02edbbd851cf0b9ab0cdb1..8cf01762342c848ce7610d32e033f9a36953077b 100644
95+
index 6f30668471c2076e2bbd8af79791bbe362f4d08e..3cb0b4797015eff95632355e4b78b955a8280a02 100644
9696
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
9797
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
9898
@@ -281,6 +281,7 @@ public final class CraftServer implements Server {
@@ -111,7 +111,7 @@ index 3e26f9a4c93f616f4f02edbbd851cf0b9ab0cdb1..8cf01762342c848ce7610d32e033f9a3
111111
}
112112

113113
public boolean getCommandBlockOverride(String command) {
114-
@@ -2737,5 +2739,11 @@ public final class CraftServer implements Server {
114+
@@ -2743,5 +2745,11 @@ public final class CraftServer implements Server {
115115
public com.destroystokyo.paper.entity.ai.MobGoals getMobGoals() {
116116
return mobGoals;
117117
}

patches/server/0651-Fix-and-optimise-world-force-upgrading.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,10 +357,10 @@ index 4bc33c31d497aa7d69226ab870fd78902bedfd5b..089e8414c7bdc102ba0d914af576df1a
357357
return this.regionCache.getAndMoveToFirst(ChunkPos.asLong(chunkcoordintpair.getRegionX(), chunkcoordintpair.getRegionZ()));
358358
}
359359
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
360-
index 48f991bd9b6ec689b462f6a546ec1379d2e30002..ecffb6e2c779d520e25c79d04f10d408a7c778c6 100644
360+
index 3cb0b4797015eff95632355e4b78b955a8280a02..d4be39b4cb6a6c7f8b27ddd6dfb60541e9ac8834 100644
361361
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
362362
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
363-
@@ -1193,12 +1193,7 @@ public final class CraftServer implements Server {
363+
@@ -1199,12 +1199,7 @@ public final class CraftServer implements Server {
364364
}
365365
worlddata.checkName(name);
366366
worlddata.setModdedInfo(this.console.getServerModName(), this.console.getModdedStatus().shouldReportAsModified());
@@ -374,7 +374,7 @@ index 48f991bd9b6ec689b462f6a546ec1379d2e30002..ecffb6e2c779d520e25c79d04f10d408
374374

375375
long j = BiomeManager.obfuscateSeed(creator.seed());
376376
List<CustomSpawner> list = ImmutableList.of(new PhantomSpawner(), new PatrolSpawner(), new CatSpawner(), new VillageSiege(), new WanderingTraderSpawner(worlddata));
377-
@@ -1227,6 +1222,14 @@ public final class CraftServer implements Server {
377+
@@ -1233,6 +1228,14 @@ public final class CraftServer implements Server {
378378
}
379379
}
380380

patches/server/0733-Add-paper-mobcaps-and-paper-playermobcaps.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,10 +293,10 @@ index ce6051531f021bf20851bc5ab763e732ee10427d..87d1f5b2717fc82203b5674ac0bf2704
293293
public static void spawnCategoryForChunk(MobCategory group, ServerLevel world, LevelChunk chunk, NaturalSpawner.SpawnPredicate checker, NaturalSpawner.AfterSpawnCallback runner) {
294294
spawnCategoryForChunk(group, world, chunk, checker, runner, Integer.MAX_VALUE, null);
295295
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
296-
index 4fb0ad44672e0fed8c5d523d03801df725cc136f..7b1bccfbf44c5b431f52f4ed974f9143c12a8300 100644
296+
index 0bf0bdc72c85bbf726fa86a778c8bcf5ed534be0..c99a522c7839b2a9cf131913172baabfc0658eeb 100644
297297
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
298298
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
299-
@@ -2143,6 +2143,11 @@ public final class CraftServer implements Server {
299+
@@ -2149,6 +2149,11 @@ public final class CraftServer implements Server {
300300

301301
@Override
302302
public int getSpawnLimit(SpawnCategory spawnCategory) {

patches/server/0806-Allow-delegation-to-vanilla-chunk-gen.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Allow delegation to vanilla chunk gen
55

66

77
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
8-
index 7b1bccfbf44c5b431f52f4ed974f9143c12a8300..72bb60f5bf4cf67bd2951228287693cfc52e2b2b 100644
8+
index c99a522c7839b2a9cf131913172baabfc0658eeb..2747a420f2c1ba4cf103f6340c5db671af3ade81 100644
99
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
1010
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
11-
@@ -2311,6 +2311,90 @@ public final class CraftServer implements Server {
11+
@@ -2317,6 +2317,90 @@ public final class CraftServer implements Server {
1212
return new OldCraftChunkData(world.getMinHeight(), world.getMaxHeight(), handle.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY), world); // Paper - Anti-Xray - Add parameters
1313
}
1414

patches/server/0831-Expose-vanilla-BiomeProvider-from-WorldInfo.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ index df955666723a8cb1e612311f0b8e77fb577d6be5..01aefce226ae82d707b38b0d56d2580d
1818
biomeProvider = gen.getDefaultBiomeProvider(worldInfo);
1919
}
2020
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
21-
index 72bb60f5bf4cf67bd2951228287693cfc52e2b2b..07f5c20d28120acad34d36d371ba7f95f62ff71d 100644
21+
index 2747a420f2c1ba4cf103f6340c5db671af3ade81..7dc79e7c552d7ebc2dea9248c2d5647b5a6895e0 100644
2222
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
2323
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
24-
@@ -1211,7 +1211,7 @@ public final class CraftServer implements Server {
24+
@@ -1217,7 +1217,7 @@ public final class CraftServer implements Server {
2525
chunkgenerator = worlddimension.generator();
2626
}
2727

@@ -31,7 +31,7 @@ index 72bb60f5bf4cf67bd2951228287693cfc52e2b2b..07f5c20d28120acad34d36d371ba7f95
3131
biomeProvider = generator.getDefaultBiomeProvider(worldInfo);
3232
}
3333
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
34-
index 760149102313626831e3692936c6a984f04d252a..fbfd094a938a96c03d614059fb1cd5a720865a83 100644
34+
index 0ebacc6f35591b3f1fc740d484f30c7c2337392a..bd24cf74dfc0974f5bc132994deac45b4ec7b344 100644
3535
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
3636
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
3737
@@ -212,6 +212,31 @@ public class CraftWorld extends CraftRegionAccessor implements World {

patches/server/0846-API-for-creating-command-sender-which-forwards-feedb.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,10 @@ index 0000000000000000000000000000000000000000..f7c86155ce0cfd9b4bf8a2b79d77a656
123123
+ }
124124
+}
125125
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
126-
index 07f5c20d28120acad34d36d371ba7f95f62ff71d..782f9519b942e027de4d51acdb1ef5f994506838 100644
126+
index 7dc79e7c552d7ebc2dea9248c2d5647b5a6895e0..66d931bf247cfc07c40ef4721ab24e163e6038ea 100644
127127
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
128128
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
129-
@@ -1982,6 +1982,13 @@ public final class CraftServer implements Server {
129+
@@ -1988,6 +1988,13 @@ public final class CraftServer implements Server {
130130
return console.console;
131131
}
132132

patches/server/0851-Add-missing-Validate-calls-to-CraftServer-getSpawnLi.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ Subject: [PATCH] Add missing Validate calls to CraftServer#getSpawnLimit
66
Copies appropriate checks from CraftWorld#getSpawnLimit
77

88
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
9-
index 782f9519b942e027de4d51acdb1ef5f994506838..125a150779ee20763383acb53633aa1e2cbce166 100644
9+
index 66d931bf247cfc07c40ef4721ab24e163e6038ea..6b43fcb230cdc562585fbdc01a5db43b9cb6eca2 100644
1010
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
1111
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
12-
@@ -2151,6 +2151,8 @@ public final class CraftServer implements Server {
12+
@@ -2157,6 +2157,8 @@ public final class CraftServer implements Server {
1313
@Override
1414
public int getSpawnLimit(SpawnCategory spawnCategory) {
1515
// Paper start

patches/server/0852-Add-GameEvent-tags.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ index 0000000000000000000000000000000000000000..cb78a3d4e21376ea24347187478525d5
4545
+ }
4646
+}
4747
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
48-
index 125a150779ee20763383acb53633aa1e2cbce166..95f8685ad1c817ccb195b3124283e5b809ef7dcd 100644
48+
index 6b43fcb230cdc562585fbdc01a5db43b9cb6eca2..196640c203b3c33c1e967b2f1bf1fa360dc6952b 100644
4949
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
5050
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
5151
@@ -97,6 +97,7 @@ import net.minecraft.world.level.biome.BiomeSource;
@@ -56,7 +56,7 @@ index 125a150779ee20763383acb53633aa1e2cbce166..95f8685ad1c817ccb195b3124283e5b8
5656
import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator;
5757
import net.minecraft.world.level.levelgen.PatrolSpawner;
5858
import net.minecraft.world.level.levelgen.PhantomSpawner;
59-
@@ -2557,6 +2558,15 @@ public final class CraftServer implements Server {
59+
@@ -2563,6 +2564,15 @@ public final class CraftServer implements Server {
6060
return (org.bukkit.Tag<T>) new CraftEntityTag(Registry.ENTITY_TYPE, entityTagKey);
6161
}
6262
}
@@ -72,7 +72,7 @@ index 125a150779ee20763383acb53633aa1e2cbce166..95f8685ad1c817ccb195b3124283e5b8
7272
default -> throw new IllegalArgumentException();
7373
}
7474

75-
@@ -2589,6 +2599,13 @@ public final class CraftServer implements Server {
75+
@@ -2595,6 +2605,13 @@ public final class CraftServer implements Server {
7676
Registry<EntityType<?>> entityTags = Registry.ENTITY_TYPE;
7777
return entityTags.getTags().map(pair -> (org.bukkit.Tag<T>) new CraftEntityTag(entityTags, pair.getFirst())).collect(ImmutableList.toImmutableList());
7878
}

patches/server/0860-Put-world-into-worldlist-before-initing-the-world.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ index 443fb9cdce8bf542ca6216aa65c3e48c66dde654..e4461fb3485391ec0a9d902d5b896bb9
2323

2424
if (worlddata.getCustomBossEvents() != null) {
2525
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
26-
index 95f8685ad1c817ccb195b3124283e5b809ef7dcd..7775041c067e17da3d442fb8127f1ed2bba4f78c 100644
26+
index 196640c203b3c33c1e967b2f1bf1fa360dc6952b..c5b9770669f9ed51408ea4f10d03f2e737ba9eb9 100644
2727
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
2828
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
29-
@@ -1249,10 +1249,11 @@ public final class CraftServer implements Server {
29+
@@ -1255,10 +1255,11 @@ public final class CraftServer implements Server {
3030
return null;
3131
}
3232

0 commit comments

Comments
 (0)