c97ce029e9
PaperMC believes that 1.16.2 is now ready for general release as we fixed the main issue plagueing the 1.16.x release, the MapLike data conversion issues. Until now, it was not safe for a server to convert a world to 1.16.2 without data conversion issues around villages and potentially other things. If you did, those MapLike errors meant something went wrong. This is now resolved. Big thanks to all those that helped, notably @BillyGalbreath and @Proximyst who did large parts of the update process with me. Please as always, backup your worlds and test before updating to 1.16.2! If you update to 1.16.2, there is no going back to an older build than this. --------------------------------- Co-authored-by: William Blake Galbreath <Blake.Galbreath@GMail.com> Co-authored-by: Mariell Hoversholm <proximyst@proximyst.com> Co-authored-by: krolik-exe <69214078+krolik-exe@users.noreply.github.com> Co-authored-by: BillyGalbreath <BillyGalbreath@users.noreply.github.com> Co-authored-by: stonar96 <minecraft.stonar96@gmail.com> Co-authored-by: Shane Freeder <theboyetronic@gmail.com> Co-authored-by: Jason <jasonpenilla2@me.com> Co-authored-by: kashike <kashike@vq.lc> Co-authored-by: Aurora <21148213+aurorasmiles@users.noreply.github.com> Co-authored-by: KennyTV <kennytv@t-online.de> Co-authored-by: commandblockguy <commandblockguy1@gmail.com> Co-authored-by: DigitalRegent <misterwener@gmail.com> Co-authored-by: ishland <ishlandmc@yeah.net>
46 Zeilen
2.0 KiB
Diff
46 Zeilen
2.0 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Sat, 11 Apr 2020 21:23:42 -0400
|
|
Subject: [PATCH] Delay unsafe actions until after entity ticking is done
|
|
|
|
This will help prevent many cases of unregistering entities during entity ticking
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
|
index 860101012d81f62092fed402100f00e162d6dc9e..9d13745382d34693a0ebdcfe1c3392fb0b4f15b5 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
|
@@ -62,6 +62,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
public final List<EntityPlayer> players = Lists.newArrayList(); // Paper - private -> public
|
|
public final ChunkProviderServer chunkProvider; // Paper - public
|
|
boolean tickingEntities;
|
|
+ // Paper start
|
|
+ List<java.lang.Runnable> afterEntityTickingTasks = Lists.newArrayList();
|
|
+ public void doIfNotEntityTicking(java.lang.Runnable run) {
|
|
+ if (tickingEntities) {
|
|
+ afterEntityTickingTasks.add(run);
|
|
+ } else {
|
|
+ run.run();
|
|
+ }
|
|
+ }
|
|
+ // Paper end
|
|
private final MinecraftServer server;
|
|
public final WorldDataServer worldDataServer; // CraftBukkit - type
|
|
public boolean savingDisabled;
|
|
@@ -529,6 +539,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
|
timings.entityTick.stopTiming(); // Spigot
|
|
|
|
this.tickingEntities = false;
|
|
+ // Paper start
|
|
+ for (java.lang.Runnable run : this.afterEntityTickingTasks) {
|
|
+ try {
|
|
+ run.run();
|
|
+ } catch (Exception e) {
|
|
+ LOGGER.error("Error in After Entity Ticking Task", e);
|
|
+ }
|
|
+ }
|
|
+ this.afterEntityTickingTasks.clear();
|
|
+ // Paper end
|
|
this.getMinecraftServer().midTickLoadChunks(); // Paper
|
|
|
|
Entity entity2;
|