Fix ChunkTooLargeEvent to fire on main thread

This commit is contained in:
William Blake Galbreath
2019-08-22 13:13:30 -05:00
parent 04cc274bbf
commit 5b4de6e7e8

View File

@@ -1,4 +1,4 @@
From 842043ce45d4491eaa3bc7ced6175637bff7a763 Mon Sep 17 00:00:00 2001 From 9a051a6cf53eef4ebf1163c58067f6bdf49f8722 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com> From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Fri, 12 Jul 2019 02:10:06 -0500 Date: Fri, 12 Jul 2019 02:10:06 -0500
Subject: [PATCH] Implement ChunkTooLargeEvent Subject: [PATCH] Implement ChunkTooLargeEvent
@@ -8,7 +8,7 @@ Subject: [PATCH] Implement ChunkTooLargeEvent
1 file changed, 6 insertions(+) 1 file changed, 6 insertions(+)
diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java
index d2b328945..e0fdf5f90 100644 index d2b328945..103c0d1db 100644
--- a/src/main/java/net/minecraft/server/RegionFileCache.java --- a/src/main/java/net/minecraft/server/RegionFileCache.java
+++ b/src/main/java/net/minecraft/server/RegionFileCache.java +++ b/src/main/java/net/minecraft/server/RegionFileCache.java
@@ -21,6 +21,7 @@ public abstract class RegionFileCache implements AutoCloseable { @@ -21,6 +21,7 @@ public abstract class RegionFileCache implements AutoCloseable {
@@ -39,7 +39,7 @@ index d2b328945..e0fdf5f90 100644
regionfile.setStatus(chunk.x, chunk.z, ChunkRegionLoader.getStatus(nbttagcompound)); // Paper - cache status on disk regionfile.setStatus(chunk.x, chunk.z, ChunkRegionLoader.getStatus(nbttagcompound)); // Paper - cache status on disk
regionfile.setOversized(chunkX, chunkZ, false); regionfile.setOversized(chunkX, chunkZ, false);
} catch (RegionFile.ChunkTooLargeException ignored) { } catch (RegionFile.ChunkTooLargeException ignored) {
+ new net.pl3x.purpur.event.ChunkTooLargeEvent(worldName, chunkX, chunkZ, true, false).callEvent(); // Purpur + MinecraftServer.getServer().scheduleOnMain(() -> new net.pl3x.purpur.event.ChunkTooLargeEvent(worldName, chunkX, chunkZ, true, false).callEvent()); // Purpur
printOversizedLog("ChunkTooLarge! Someone is trying to duplicate.", regionfile.file, chunkX, chunkZ); printOversizedLog("ChunkTooLarge! Someone is trying to duplicate.", regionfile.file, chunkX, chunkZ);
// Clone as we are now modifying it, don't want to corrupt the pending save state // Clone as we are now modifying it, don't want to corrupt the pending save state
nbttagcompound = nbttagcompound.clone(); nbttagcompound = nbttagcompound.clone();
@@ -47,7 +47,7 @@ index d2b328945..e0fdf5f90 100644
} }
regionfile.setStatus(chunk.x, chunk.z, ChunkRegionLoader.getStatus(nbttagcompound)); // Paper - cache status on disk regionfile.setStatus(chunk.x, chunk.z, ChunkRegionLoader.getStatus(nbttagcompound)); // Paper - cache status on disk
} catch (RegionFile.ChunkTooLargeException e) { } catch (RegionFile.ChunkTooLargeException e) {
+ new net.pl3x.purpur.event.ChunkTooLargeEvent(worldName, chunkX, chunkZ, true, true).callEvent(); // Purpur + MinecraftServer.getServer().scheduleOnMain(() -> new net.pl3x.purpur.event.ChunkTooLargeEvent(worldName, chunkX, chunkZ, true, true).callEvent()); // Purpur
printOversizedLog("ChunkTooLarge even after reduction. Trying in overzealous mode.", regionfile.file, chunkX, chunkZ); printOversizedLog("ChunkTooLarge even after reduction. Trying in overzealous mode.", regionfile.file, chunkX, chunkZ);
// Eek, major fail. We have retry logic, so reduce threshholds and fall back // Eek, major fail. We have retry logic, so reduce threshholds and fall back
SIZE_THRESHOLD = OVERZEALOUS_THRESHOLD; SIZE_THRESHOLD = OVERZEALOUS_THRESHOLD;
@@ -55,10 +55,10 @@ index d2b328945..e0fdf5f90 100644
DataInputStream datainputstream = regionfile.a(chunkcoordintpair); DataInputStream datainputstream = regionfile.a(chunkcoordintpair);
// Paper start // Paper start
if (regionfile.isOversized(chunkcoordintpair.x, chunkcoordintpair.z)) { if (regionfile.isOversized(chunkcoordintpair.x, chunkcoordintpair.z)) {
+ new net.pl3x.purpur.event.ChunkTooLargeEvent(worldName, chunkcoordintpair.x, chunkcoordintpair.z, false, false).callEvent(); // Purpur + MinecraftServer.getServer().scheduleOnMain(() -> new net.pl3x.purpur.event.ChunkTooLargeEvent(worldName, chunkcoordintpair.x, chunkcoordintpair.z, false, false).callEvent()); // Purpur
printOversizedLog("Loading Oversized Chunk!", regionfile.file, chunkcoordintpair.x, chunkcoordintpair.z); printOversizedLog("Loading Oversized Chunk!", regionfile.file, chunkcoordintpair.x, chunkcoordintpair.z);
return readOversizedChunk(regionfile, chunkcoordintpair); return readOversizedChunk(regionfile, chunkcoordintpair);
} }
-- --
2.20.1 2.23.0.rc1