mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-09 06:50:32 +08:00
Make a copy for worldloadevent to avoid como's - fixes #1453
If you try to load a world inresponse to another world loading, a concurrent modification exception will throw. This avoids that by making a defensive copy of the list for the server init stage. you might want to do this if you want to guarantee your world loads immediately after the vanilla worlds before another plugin has a chance to load worlds during POST_WORLD plugin stage.
This commit is contained in:
parent
5ef5f3b67b
commit
0d54dc2025
@ -1,4 +1,4 @@
|
|||||||
From a986a6ac3b035444524be7214677b83c7094fc5d Mon Sep 17 00:00:00 2001
|
From c0d6698eb4af5eb4e477740679c2ebcf0b5cd5e0 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Mon, 17 Sep 2018 23:37:31 -0400
|
Date: Mon, 17 Sep 2018 23:37:31 -0400
|
||||||
Subject: [PATCH] Optimize Server World Map
|
Subject: [PATCH] Optimize Server World Map
|
||||||
@ -217,7 +217,7 @@ index 0000000000..af9e4455c6
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index fb62320310..2912e9ec68 100644
|
index fb62320310..98d182fdb8 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -87,7 +87,7 @@ public abstract class MinecraftServer implements IAsyncTaskHandler, IMojangStati
|
@@ -87,7 +87,7 @@ public abstract class MinecraftServer implements IAsyncTaskHandler, IMojangStati
|
||||||
@ -229,6 +229,15 @@ index fb62320310..2912e9ec68 100644
|
|||||||
private PlayerList s;
|
private PlayerList s;
|
||||||
private boolean isRunning = true;
|
private boolean isRunning = true;
|
||||||
private boolean isRestarting = false; // Paper - flag to signify we're attempting to restart
|
private boolean isRestarting = false; // Paper - flag to signify we're attempting to restart
|
||||||
|
@@ -550,7 +550,7 @@ public abstract class MinecraftServer implements IAsyncTaskHandler, IMojangStati
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- for (WorldServer world : this.getWorlds()) {
|
||||||
|
+ for (WorldServer world : com.google.common.collect.Lists.newArrayList(this.getWorlds())) { // Paper - avoid como if 1 world triggers another world
|
||||||
|
this.server.getPluginManager().callEvent(new org.bukkit.event.world.WorldLoadEvent(world.getWorld()));
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
--
|
--
|
||||||
2.19.0
|
2.19.0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user