Fix some runtime issues
Dieser Commit ist enthalten in:
Ursprung
e9439e7655
Commit
a189bdc0fc
@ -1,4 +1,4 @@
|
|||||||
From fffc5a98890008800dbabb96745e8aa27aee49c9 Mon Sep 17 00:00:00 2001
|
From 5649d05624dac0cd18bc362f5769c01606b59019 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Thu, 3 Mar 2016 04:00:11 -0600
|
Date: Thu, 3 Mar 2016 04:00:11 -0600
|
||||||
Subject: [PATCH] Timings v2
|
Subject: [PATCH] Timings v2
|
||||||
@ -792,7 +792,7 @@ index 4de927416b..4c1c914132 100644
|
|||||||
this.methodProfiler.exit();
|
this.methodProfiler.exit();
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
index 755c0406e1..ee65b01f43 100644
|
index 755c0406e1..5816c7bcc7 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
@@ -1,6 +1,8 @@
|
@@ -1,6 +1,8 @@
|
||||||
@ -804,7 +804,7 @@ index 755c0406e1..ee65b01f43 100644
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.mojang.datafixers.DataFixer;
|
import com.mojang.datafixers.DataFixer;
|
||||||
@@ -244,6 +246,24 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -244,6 +246,27 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
playerchunk = new PlayerChunk(new ChunkCoordIntPair(i), j, this.lightEngine, this.q, this);
|
playerchunk = new PlayerChunk(new ChunkCoordIntPair(i), j, this.lightEngine, this.q, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -820,8 +820,11 @@ index 755c0406e1..ee65b01f43 100644
|
|||||||
+ PlayerChunk neighborPlayer = getUpdatingChunk(ChunkCoordIntPair.pair(currentChunkPair.x + x, currentChunkPair.z + z));
|
+ PlayerChunk neighborPlayer = getUpdatingChunk(ChunkCoordIntPair.pair(currentChunkPair.x + x, currentChunkPair.z + z));
|
||||||
+ if (neighborPlayer != null) {
|
+ if (neighborPlayer != null) {
|
||||||
+ Chunk neighbor = neighborPlayer.getChunk();
|
+ Chunk neighbor = neighborPlayer.getChunk();
|
||||||
|
+ Chunk player = playerchunk.getChunk();
|
||||||
|
+ if (neighbor != null && player != null) {
|
||||||
+ neighbor.setNeighborLoaded(-x, -z);
|
+ neighbor.setNeighborLoaded(-x, -z);
|
||||||
+ playerchunk.getChunk().setNeighborLoaded(x, z);
|
+ player.setNeighborLoaded(x, z);
|
||||||
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
@ -829,7 +832,7 @@ index 755c0406e1..ee65b01f43 100644
|
|||||||
this.updatingChunks.put(i, playerchunk);
|
this.updatingChunks.put(i, playerchunk);
|
||||||
this.updatingChunksModified = true;
|
this.updatingChunksModified = true;
|
||||||
}
|
}
|
||||||
@@ -332,6 +352,23 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -332,6 +355,23 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
ChunkUnloadEvent event = new ChunkUnloadEvent(chunk.bukkitChunk, chunk.isNeedsSaving());
|
ChunkUnloadEvent event = new ChunkUnloadEvent(chunk.bukkitChunk, chunk.isNeedsSaving());
|
||||||
this.world.getServer().getPluginManager().callEvent(event);
|
this.world.getServer().getPluginManager().callEvent(event);
|
||||||
this.saveChunk(ichunkaccess, event.isSaveChunk());
|
this.saveChunk(ichunkaccess, event.isSaveChunk());
|
||||||
@ -853,7 +856,7 @@ index 755c0406e1..ee65b01f43 100644
|
|||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
chunk.c(false);
|
chunk.c(false);
|
||||||
@@ -402,7 +439,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -402,7 +442,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
});
|
});
|
||||||
|
|
||||||
return completablefuture.thenComposeAsync((either) -> {
|
return completablefuture.thenComposeAsync((either) -> {
|
||||||
@ -862,7 +865,7 @@ index 755c0406e1..ee65b01f43 100644
|
|||||||
try {
|
try {
|
||||||
CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>> completablefuture1 = chunkstatus.a(this.world, this.chunkGenerator, this.definedStructureManager, this.lightEngine, (ichunkaccess) -> {
|
CompletableFuture<Either<IChunkAccess, PlayerChunk.Failure>> completablefuture1 = chunkstatus.a(this.world, this.chunkGenerator, this.definedStructureManager, this.lightEngine, (ichunkaccess) -> {
|
||||||
return this.b(playerchunk);
|
return this.b(playerchunk);
|
||||||
@@ -879,6 +916,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -879,6 +919,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
|
|
||||||
PlayerChunkMap.EntityTracker playerchunkmap_entitytracker;
|
PlayerChunkMap.EntityTracker playerchunkmap_entitytracker;
|
||||||
ObjectIterator objectiterator;
|
ObjectIterator objectiterator;
|
||||||
@ -870,7 +873,7 @@ index 755c0406e1..ee65b01f43 100644
|
|||||||
|
|
||||||
for (objectiterator = this.trackedEntities.values().iterator(); objectiterator.hasNext(); playerchunkmap_entitytracker.trackerEntry.a()) {
|
for (objectiterator = this.trackedEntities.values().iterator(); objectiterator.hasNext(); playerchunkmap_entitytracker.trackerEntry.a()) {
|
||||||
playerchunkmap_entitytracker = (PlayerChunkMap.EntityTracker) objectiterator.next();
|
playerchunkmap_entitytracker = (PlayerChunkMap.EntityTracker) objectiterator.next();
|
||||||
@@ -896,9 +934,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -896,13 +937,16 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
playerchunkmap_entitytracker.e = sectionposition1;
|
playerchunkmap_entitytracker.e = sectionposition1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -882,6 +885,11 @@ index 755c0406e1..ee65b01f43 100644
|
|||||||
while (objectiterator.hasNext()) {
|
while (objectiterator.hasNext()) {
|
||||||
playerchunkmap_entitytracker = (PlayerChunkMap.EntityTracker) objectiterator.next();
|
playerchunkmap_entitytracker = (PlayerChunkMap.EntityTracker) objectiterator.next();
|
||||||
playerchunkmap_entitytracker.track(list);
|
playerchunkmap_entitytracker.track(list);
|
||||||
|
}
|
||||||
|
+ world.timings.tracker2.stopTiming(); // Paper
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||||
index 78a090ac75..e07f4a9680 100644
|
index 78a090ac75..e07f4a9680 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 349002e874920f5e828deeee07cfbcdd4b8d36a2 Mon Sep 17 00:00:00 2001
|
From c20c4977df4d9a8009cb08f54fcfc710883fa8c4 Mon Sep 17 00:00:00 2001
|
||||||
From: Jedediah Smith <jedediah@silencegreys.com>
|
From: Jedediah Smith <jedediah@silencegreys.com>
|
||||||
Date: Wed, 2 Mar 2016 23:13:07 -0600
|
Date: Wed, 2 Mar 2016 23:13:07 -0600
|
||||||
Subject: [PATCH] Send absolute position the first time an entity is seen
|
Subject: [PATCH] Send absolute position the first time an entity is seen
|
||||||
@ -77,10 +77,10 @@ index 315c3d9165..aaf3a54b08 100644
|
|||||||
|
|
||||||
this.c();
|
this.c();
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
index ee65b01f43..0a64432384 100644
|
index 5816c7bcc7..4bbf9244f2 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
@@ -1031,10 +1031,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -1035,10 +1035,14 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
private final Entity tracker;
|
private final Entity tracker;
|
||||||
private final int trackingDistance;
|
private final int trackingDistance;
|
||||||
private SectionPosition e;
|
private SectionPosition e;
|
||||||
@ -97,7 +97,7 @@ index ee65b01f43..0a64432384 100644
|
|||||||
this.tracker = entity;
|
this.tracker = entity;
|
||||||
this.trackingDistance = i;
|
this.trackingDistance = i;
|
||||||
this.e = SectionPosition.a(entity);
|
this.e = SectionPosition.a(entity);
|
||||||
@@ -1116,7 +1120,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -1120,7 +1124,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
entityplayer.removeQueue.remove(Integer.valueOf(this.tracker.getId()));
|
entityplayer.removeQueue.remove(Integer.valueOf(this.tracker.getId()));
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From ab1921692e96b83434f730b535edeac94438578a Mon Sep 17 00:00:00 2001
|
From 55a0321f3f6c273aac277c629058f59702cda47e Mon Sep 17 00:00:00 2001
|
||||||
From: Joseph Hirschfeld <joe@ibj.io>
|
From: Joseph Hirschfeld <joe@ibj.io>
|
||||||
Date: Thu, 3 Mar 2016 03:15:41 -0600
|
Date: Thu, 3 Mar 2016 03:15:41 -0600
|
||||||
Subject: [PATCH] Add exception reporting event
|
Subject: [PATCH] Add exception reporting event
|
||||||
@ -121,10 +121,10 @@ index 1dd793d2fb..61ea2818b1 100644
|
|||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
index 0a64432384..5ecf446e11 100644
|
index 4bbf9244f2..5dc8e62021 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
@@ -596,6 +596,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -599,6 +599,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
this.world.checkSession();
|
this.world.checkSession();
|
||||||
} catch (ExceptionWorldConflict exceptionworldconflict) {
|
} catch (ExceptionWorldConflict exceptionworldconflict) {
|
||||||
PlayerChunkMap.LOGGER.error("Couldn't save chunk; already in use by another instance of Minecraft?", exceptionworldconflict);
|
PlayerChunkMap.LOGGER.error("Couldn't save chunk; already in use by another instance of Minecraft?", exceptionworldconflict);
|
||||||
@ -132,7 +132,7 @@ index 0a64432384..5ecf446e11 100644
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -622,6 +623,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -625,6 +626,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
this.write(chunkcoordintpair, nbttagcompound);
|
this.write(chunkcoordintpair, nbttagcompound);
|
||||||
} catch (Exception exception) {
|
} catch (Exception exception) {
|
||||||
PlayerChunkMap.LOGGER.error("Failed to save chunk {},{}", chunkcoordintpair.x, chunkcoordintpair.z, exception);
|
PlayerChunkMap.LOGGER.error("Failed to save chunk {},{}", chunkcoordintpair.x, chunkcoordintpair.z, exception);
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
From 3b9e8f3661c32ede626e0cfe0c935584e7050e6e Mon Sep 17 00:00:00 2001
|
From a10267a106c969bb7c1a0e6e0f2c017ed9703baa Mon Sep 17 00:00:00 2001
|
||||||
From: Brokkonaut <hannos17@gmx.de>
|
From: Brokkonaut <hannos17@gmx.de>
|
||||||
Date: Tue, 7 Feb 2017 16:55:35 -0600
|
Date: Tue, 7 Feb 2017 16:55:35 -0600
|
||||||
Subject: [PATCH] Make targetSize more aggressive in the chunk unload queue
|
Subject: [PATCH] Make targetSize more aggressive in the chunk unload queue
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
index 5ecf446e11..26dafe0d29 100644
|
index 5dc8e62021..4be53f89bb 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
@@ -311,7 +311,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -314,7 +314,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
// Spigot start
|
// Spigot start
|
||||||
org.spigotmc.SlackActivityAccountant activityAccountant = this.world.getMinecraftServer().slackActivityAccountant;
|
org.spigotmc.SlackActivityAccountant activityAccountant = this.world.getMinecraftServer().slackActivityAccountant;
|
||||||
activityAccountant.startActivity(0.5);
|
activityAccountant.startActivity(0.5);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From c75853cc4f8ae4188516daa9f9848e7761826f5e Mon Sep 17 00:00:00 2001
|
From 2b0dd101a780ba65566dadf37c91bef781ab7ea8 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Sun, 14 Jan 2018 17:36:02 -0500
|
Date: Sun, 14 Jan 2018 17:36:02 -0500
|
||||||
Subject: [PATCH] PlayerNaturallySpawnCreaturesEvent
|
Subject: [PATCH] PlayerNaturallySpawnCreaturesEvent
|
||||||
@ -9,10 +9,10 @@ from triggering monster spawns on a server.
|
|||||||
Also a highly more effecient way to blanket block spawns in a world
|
Also a highly more effecient way to blanket block spawns in a world
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
index 26dafe0d29..99beb30093 100644
|
index 4be53f89bb..34f97ce222 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
@@ -710,11 +710,16 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -713,11 +713,16 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
int chunkRange = world.spigotConfig.mobSpawnRange;
|
int chunkRange = world.spigotConfig.mobSpawnRange;
|
||||||
chunkRange = (chunkRange > world.spigotConfig.viewDistance) ? (byte) world.spigotConfig.viewDistance : chunkRange;
|
chunkRange = (chunkRange > world.spigotConfig.viewDistance) ? (byte) world.spigotConfig.viewDistance : chunkRange;
|
||||||
chunkRange = (chunkRange > 8) ? 8 : chunkRange;
|
chunkRange = (chunkRange > 8) ? 8 : chunkRange;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From bc37d872d3da190754fdab1a191a303396ee50cc Mon Sep 17 00:00:00 2001
|
From 13aa59139e439b184472d721ea0adc84fc68b3dd Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Sun, 22 Jul 2018 21:21:41 -0400
|
Date: Sun, 22 Jul 2018 21:21:41 -0400
|
||||||
Subject: [PATCH] Don't save Proto Chunks
|
Subject: [PATCH] Don't save Proto Chunks
|
||||||
@ -8,10 +8,10 @@ the loadChunk method refuses to acknoledge they exists, and will restart
|
|||||||
a new chunk generation process to begin with, so saving them serves no benefit.
|
a new chunk generation process to begin with, so saving them serves no benefit.
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
index 99beb30093..bfcd57aa5f 100644
|
index 34f97ce222..804824bfe2 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
@@ -589,6 +589,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
@@ -592,6 +592,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveChunk(IChunkAccess ichunkaccess, boolean save) {
|
public void saveChunk(IChunkAccess ichunkaccess, boolean save) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 46fb6cb816d0b057c8137c3e6795a4fb281fd52d Mon Sep 17 00:00:00 2001
|
From 474d222e2b8dde31dc97fb3a077f44a82b5f2b20 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Fri, 15 Feb 2019 01:08:19 -0500
|
Date: Fri, 15 Feb 2019 01:08:19 -0500
|
||||||
Subject: [PATCH] Allow Saving of Oversized Chunks
|
Subject: [PATCH] Allow Saving of Oversized Chunks
|
||||||
@ -64,7 +64,7 @@ index b7c94fe238..80eea5dfbd 100644
|
|||||||
|
|
||||||
public NBTTagList() {}
|
public NBTTagList() {}
|
||||||
diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java
|
diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java
|
||||||
index e68f901943..995a893774 100644
|
index e68f901943..ed2ccebb23 100644
|
||||||
--- a/src/main/java/net/minecraft/server/RegionFile.java
|
--- a/src/main/java/net/minecraft/server/RegionFile.java
|
||||||
+++ b/src/main/java/net/minecraft/server/RegionFile.java
|
+++ b/src/main/java/net/minecraft/server/RegionFile.java
|
||||||
@@ -23,7 +23,7 @@ public class RegionFile implements AutoCloseable {
|
@@ -23,7 +23,7 @@ public class RegionFile implements AutoCloseable {
|
||||||
@ -76,7 +76,15 @@ index e68f901943..995a893774 100644
|
|||||||
// Spigot end
|
// Spigot end
|
||||||
private static final byte[] a = new byte[4096];
|
private static final byte[] a = new byte[4096];
|
||||||
private final RandomAccessFile b; private RandomAccessFile getDataFile() { return this.b; } // Paper - OBFHELPER
|
private final RandomAccessFile b; private RandomAccessFile getDataFile() { return this.b; } // Paper - OBFHELPER
|
||||||
@@ -66,6 +66,7 @@ public class RegionFile implements AutoCloseable {
|
@@ -33,6 +33,7 @@ public class RegionFile implements AutoCloseable {
|
||||||
|
|
||||||
|
public RegionFile(File file) throws IOException {
|
||||||
|
this.b = new RandomAccessFile(file, "rw");
|
||||||
|
+ this.file = file; // Spigot // Paper - We need this earlier
|
||||||
|
if (this.b.length() < 8192L) { // Paper - headers should be 8192
|
||||||
|
this.b.write(RegionFile.a);
|
||||||
|
this.b.write(RegionFile.a);
|
||||||
|
@@ -66,6 +67,7 @@ public class RegionFile implements AutoCloseable {
|
||||||
}
|
}
|
||||||
header.clear();
|
header.clear();
|
||||||
java.nio.IntBuffer headerAsInts = header.asIntBuffer();
|
java.nio.IntBuffer headerAsInts = header.asIntBuffer();
|
||||||
@ -84,7 +92,7 @@ index e68f901943..995a893774 100644
|
|||||||
// Paper End
|
// Paper End
|
||||||
|
|
||||||
int k;
|
int k;
|
||||||
@@ -83,7 +84,7 @@ public class RegionFile implements AutoCloseable {
|
@@ -83,7 +85,7 @@ public class RegionFile implements AutoCloseable {
|
||||||
this.b.seek(j * 4 + 4); // Go back to where we were
|
this.b.seek(j * 4 + 4); // Go back to where we were
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -93,7 +101,12 @@ index e68f901943..995a893774 100644
|
|||||||
for (int l = 0; l < (length); ++l) {
|
for (int l = 0; l < (length); ++l) {
|
||||||
// Spigot end
|
// Spigot end
|
||||||
this.e.set((k >> 8) + l, false);
|
this.e.set((k >> 8) + l, false);
|
||||||
@@ -106,7 +107,7 @@ public class RegionFile implements AutoCloseable {
|
@@ -102,11 +104,11 @@ public class RegionFile implements AutoCloseable {
|
||||||
|
if (offsets[j] != 0) this.timestamps[j] = k; // Paper - don't set timestamp if it got 0'd above due to corruption
|
||||||
|
}
|
||||||
|
|
||||||
|
- this.file = file; // Spigot
|
||||||
|
+ // Paper - we need this earlier
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@ -102,7 +115,7 @@ index e68f901943..995a893774 100644
|
|||||||
try {
|
try {
|
||||||
int i = this.getOffset(chunkcoordintpair);
|
int i = this.getOffset(chunkcoordintpair);
|
||||||
|
|
||||||
@@ -182,8 +183,8 @@ public class RegionFile implements AutoCloseable {
|
@@ -182,8 +184,8 @@ public class RegionFile implements AutoCloseable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,7 +126,7 @@ index e68f901943..995a893774 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected synchronized void a(ChunkCoordIntPair chunkcoordintpair, byte[] abyte, int i) {
|
protected synchronized void a(ChunkCoordIntPair chunkcoordintpair, byte[] abyte, int i) {
|
||||||
@@ -201,8 +202,9 @@ public class RegionFile implements AutoCloseable {
|
@@ -201,8 +203,9 @@ public class RegionFile implements AutoCloseable {
|
||||||
|
|
||||||
if (i1 >= 256) {
|
if (i1 >= 256) {
|
||||||
// Spigot start
|
// Spigot start
|
||||||
@ -124,7 +137,7 @@ index e68f901943..995a893774 100644
|
|||||||
// Spigot end
|
// Spigot end
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -352,6 +354,109 @@ public class RegionFile implements AutoCloseable {
|
@@ -352,6 +355,109 @@ public class RegionFile implements AutoCloseable {
|
||||||
logger.error("Error backing up corrupt file" + file.getAbsolutePath(), e);
|
logger.error("Error backing up corrupt file" + file.getAbsolutePath(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -234,7 +247,7 @@ index e68f901943..995a893774 100644
|
|||||||
// Paper end
|
// Paper end
|
||||||
|
|
||||||
class ChunkBuffer extends ByteArrayOutputStream {
|
class ChunkBuffer extends ByteArrayOutputStream {
|
||||||
@@ -363,8 +468,35 @@ public class RegionFile implements AutoCloseable {
|
@@ -363,8 +469,35 @@ public class RegionFile implements AutoCloseable {
|
||||||
this.b = chunkcoordintpair;
|
this.b = chunkcoordintpair;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From ff681dbbc6c8b45b2a2589ce3df2bca78f2a2950 Mon Sep 17 00:00:00 2001
|
From 2be054a15c5fa8799a83dcdc6ae22305b6ea8421 Mon Sep 17 00:00:00 2001
|
||||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||||
Date: Mon, 1 Apr 2019 18:57:32 -0700
|
Date: Mon, 1 Apr 2019 18:57:32 -0700
|
||||||
Subject: [PATCH] Make region files more reliable to write to
|
Subject: [PATCH] Make region files more reliable to write to
|
||||||
@ -37,7 +37,7 @@ affect save performance if the startup flag is used (especially on
|
|||||||
HDDs).
|
HDDs).
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java
|
diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java
|
||||||
index 995a893774..66d87d64b5 100644
|
index ed2ccebb23..2e14d84657 100644
|
||||||
--- a/src/main/java/net/minecraft/server/RegionFile.java
|
--- a/src/main/java/net/minecraft/server/RegionFile.java
|
||||||
+++ b/src/main/java/net/minecraft/server/RegionFile.java
|
+++ b/src/main/java/net/minecraft/server/RegionFile.java
|
||||||
@@ -29,7 +29,7 @@ public class RegionFile implements AutoCloseable {
|
@@ -29,7 +29,7 @@ public class RegionFile implements AutoCloseable {
|
||||||
@ -49,7 +49,7 @@ index 995a893774..66d87d64b5 100644
|
|||||||
|
|
||||||
public RegionFile(File file) throws IOException {
|
public RegionFile(File file) throws IOException {
|
||||||
this.b = new RandomAccessFile(file, "rw");
|
this.b = new RandomAccessFile(file, "rw");
|
||||||
@@ -190,8 +190,8 @@ public class RegionFile implements AutoCloseable {
|
@@ -191,8 +191,8 @@ public class RegionFile implements AutoCloseable {
|
||||||
protected synchronized void a(ChunkCoordIntPair chunkcoordintpair, byte[] abyte, int i) {
|
protected synchronized void a(ChunkCoordIntPair chunkcoordintpair, byte[] abyte, int i) {
|
||||||
try {
|
try {
|
||||||
int j = this.getOffset(chunkcoordintpair);
|
int j = this.getOffset(chunkcoordintpair);
|
||||||
@ -60,7 +60,7 @@ index 995a893774..66d87d64b5 100644
|
|||||||
// Spigot start
|
// Spigot start
|
||||||
if (l == 255) {
|
if (l == 255) {
|
||||||
this.b.seek(k * 4096);
|
this.b.seek(k * 4096);
|
||||||
@@ -199,6 +199,7 @@ public class RegionFile implements AutoCloseable {
|
@@ -200,6 +200,7 @@ public class RegionFile implements AutoCloseable {
|
||||||
}
|
}
|
||||||
// Spigot end
|
// Spigot end
|
||||||
int i1 = (i + 5) / 4096 + 1;
|
int i1 = (i + 5) / 4096 + 1;
|
||||||
@ -68,7 +68,7 @@ index 995a893774..66d87d64b5 100644
|
|||||||
|
|
||||||
if (i1 >= 256) {
|
if (i1 >= 256) {
|
||||||
// Spigot start
|
// Spigot start
|
||||||
@@ -208,14 +209,12 @@ public class RegionFile implements AutoCloseable {
|
@@ -209,14 +210,12 @@ public class RegionFile implements AutoCloseable {
|
||||||
// Spigot end
|
// Spigot end
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ index 995a893774..66d87d64b5 100644
|
|||||||
|
|
||||||
j1 = this.e.indexOf(true);
|
j1 = this.e.indexOf(true);
|
||||||
int k1 = 0;
|
int k1 = 0;
|
||||||
@@ -242,13 +241,13 @@ public class RegionFile implements AutoCloseable {
|
@@ -243,13 +242,13 @@ public class RegionFile implements AutoCloseable {
|
||||||
|
|
||||||
if (k1 >= i1) {
|
if (k1 >= i1) {
|
||||||
k = j1;
|
k = j1;
|
||||||
@ -101,7 +101,7 @@ index 995a893774..66d87d64b5 100644
|
|||||||
} else {
|
} else {
|
||||||
this.b.seek(this.b.length());
|
this.b.seek(this.b.length());
|
||||||
k = this.e.size();
|
k = this.e.size();
|
||||||
@@ -258,9 +257,14 @@ public class RegionFile implements AutoCloseable {
|
@@ -259,9 +258,14 @@ public class RegionFile implements AutoCloseable {
|
||||||
this.e.add(false);
|
this.e.add(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ index 995a893774..66d87d64b5 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.b(chunkcoordintpair, (int) (SystemUtils.getTimeMillis() / 1000L));
|
this.b(chunkcoordintpair, (int) (SystemUtils.getTimeMillis() / 1000L));
|
||||||
@@ -270,10 +274,10 @@ public class RegionFile implements AutoCloseable {
|
@@ -271,10 +275,10 @@ public class RegionFile implements AutoCloseable {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,7 +131,7 @@ index 995a893774..66d87d64b5 100644
|
|||||||
this.b.write(abyte, 0, j);
|
this.b.write(abyte, 0, j);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -285,12 +289,13 @@ public class RegionFile implements AutoCloseable {
|
@@ -286,12 +290,13 @@ public class RegionFile implements AutoCloseable {
|
||||||
return this.getOffset(chunkcoordintpair) != 0;
|
return this.getOffset(chunkcoordintpair) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,7 +146,7 @@ index 995a893774..66d87d64b5 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int f(ChunkCoordIntPair chunkcoordintpair) {
|
private int f(ChunkCoordIntPair chunkcoordintpair) {
|
||||||
@@ -302,7 +307,7 @@ public class RegionFile implements AutoCloseable {
|
@@ -303,7 +308,7 @@ public class RegionFile implements AutoCloseable {
|
||||||
|
|
||||||
this.d[j] = i;
|
this.d[j] = i;
|
||||||
this.b.seek((long) (4096 + j * 4));
|
this.b.seek((long) (4096 + j * 4));
|
||||||
@ -155,7 +155,7 @@ index 995a893774..66d87d64b5 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
@@ -310,6 +315,40 @@ public class RegionFile implements AutoCloseable {
|
@@ -311,6 +316,40 @@ public class RegionFile implements AutoCloseable {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Paper start
|
// Paper start
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren