mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
65 lines
3.6 KiB
Diff
65 lines
3.6 KiB
Diff
From 1394bec8ee78bd00371ee774e4b9f8f1596b73cd Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
Date: Fri, 12 Jul 2019 02:10:06 -0500
|
|
Subject: [PATCH] Implement ChunkTooLargeEvent
|
|
|
|
---
|
|
src/main/java/net/minecraft/server/RegionFileCache.java | 6 ++++++
|
|
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
|
|
index d2b3289450..e0fdf5f90f 100644
|
|
--- a/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 {
|
|
private final File actualWorld;
|
|
private boolean useAltWorld;
|
|
// Paper end
|
|
+ private final String worldName; // Purpur
|
|
|
|
|
|
protected RegionFileCache(File file) {
|
|
@@ -35,6 +36,7 @@ public abstract class RegionFileCache implements AutoCloseable {
|
|
if (name.equals("DIM-1") || name.equals("DIM1")) {
|
|
container = container.getParentFile();
|
|
}
|
|
+ worldName = container.getName(); // Purpur
|
|
this.templateWorld = new File(container, name);
|
|
File region = new File(file, "region");
|
|
if (!region.exists()) {
|
|
@@ -43,6 +45,7 @@ public abstract class RegionFileCache implements AutoCloseable {
|
|
} else {
|
|
this.useAltWorld = false;
|
|
this.templateWorld = file;
|
|
+ worldName = file.getParentFile().getParentFile().getName(); // Purpur
|
|
}
|
|
// Paper start
|
|
}
|
|
@@ -119,6 +122,7 @@ public abstract class RegionFileCache implements AutoCloseable {
|
|
regionfile.setStatus(chunk.x, chunk.z, ChunkRegionLoader.getStatus(nbttagcompound)); // Paper - cache status on disk
|
|
regionfile.setOversized(chunkX, chunkZ, false);
|
|
} catch (RegionFile.ChunkTooLargeException ignored) {
|
|
+ new net.pl3x.purpur.event.ChunkTooLargeEvent(worldName, chunkX, chunkZ, true, false).callEvent(); // Purpur
|
|
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
|
|
nbttagcompound = nbttagcompound.clone();
|
|
@@ -136,6 +140,7 @@ public abstract class RegionFileCache implements AutoCloseable {
|
|
}
|
|
regionfile.setStatus(chunk.x, chunk.z, ChunkRegionLoader.getStatus(nbttagcompound)); // Paper - cache status on disk
|
|
} catch (RegionFile.ChunkTooLargeException e) {
|
|
+ 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);
|
|
// Eek, major fail. We have retry logic, so reduce threshholds and fall back
|
|
SIZE_THRESHOLD = OVERZEALOUS_THRESHOLD;
|
|
@@ -242,6 +247,7 @@ public abstract class RegionFileCache implements AutoCloseable {
|
|
DataInputStream datainputstream = regionfile.a(chunkcoordintpair);
|
|
// Paper start
|
|
if (regionfile.isOversized(chunkcoordintpair.x, chunkcoordintpair.z)) {
|
|
+ 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);
|
|
return readOversizedChunk(regionfile, chunkcoordintpair);
|
|
}
|
|
--
|
|
2.20.1
|
|
|