geforkt von Mirrors/Paper
2f782a6652
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes:17543ecf
SPIGOT-5035: Error Using Virtual Merchant GUI0fc6922b
SPIGOT-5028: Villager#setVillagerExperience() doesn't workbdbdbe44
SPIGOT-5024: Fox error - Unknown target reason
53 Zeilen
1.9 KiB
Diff
53 Zeilen
1.9 KiB
Diff
From 8d21454a2da311f15d053e1d87030a8d621eef5c Mon Sep 17 00:00:00 2001
|
|
From: Antony Riley <antony@cyberiantiger.org>
|
|
Date: Tue, 29 Mar 2016 06:56:23 +0300
|
|
Subject: [PATCH] Reduce IO ops opening a new region file.
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java
|
|
index b062a31c49..4e6288e8bb 100644
|
|
--- a/src/main/java/net/minecraft/server/RegionFile.java
|
|
+++ b/src/main/java/net/minecraft/server/RegionFile.java
|
|
@@ -26,7 +26,7 @@ public class RegionFile implements AutoCloseable {
|
|
private final File file;
|
|
// Spigot end
|
|
private static final byte[] a = new byte[4096];
|
|
- private final RandomAccessFile b;
|
|
+ private final RandomAccessFile b; private RandomAccessFile getDataFile() { return this.b; } // Paper - OBFHELPER
|
|
private final int[] c = new int[1024];
|
|
private final int[] d = new int[1024];
|
|
private final List<Boolean> e;
|
|
@@ -59,10 +59,19 @@ public class RegionFile implements AutoCloseable {
|
|
this.e.set(1, false);
|
|
this.b.seek(0L);
|
|
|
|
+ // Paper Start
|
|
+ java.nio.ByteBuffer header = java.nio.ByteBuffer.allocate(8192);
|
|
+ while (header.hasRemaining()) {
|
|
+ if (this.getDataFile().getChannel().read(header) == -1) throw new java.io.EOFException();
|
|
+ }
|
|
+ header.clear();
|
|
+ java.nio.IntBuffer headerAsInts = header.asIntBuffer();
|
|
+ // Paper End
|
|
+
|
|
int k;
|
|
|
|
for (j = 0; j < 1024; ++j) {
|
|
- k = this.b.readInt();
|
|
+ k = headerAsInts.get(); // Paper
|
|
this.c[j] = k;
|
|
// Spigot start
|
|
int length = k & 255;
|
|
@@ -88,7 +97,7 @@ public class RegionFile implements AutoCloseable {
|
|
}
|
|
|
|
for (j = 0; j < 1024; ++j) {
|
|
- k = this.b.readInt();
|
|
+ k = headerAsInts.get(); // Paper
|
|
this.d[j] = k;
|
|
}
|
|
|
|
--
|
|
2.21.0
|
|
|