@@ -1,4 +1,4 @@
|
||||
From d626b39cd08b8c58ab090c999ee5e8308b568845 Mon Sep 17 00:00:00 2001
|
||||
From a11f742a5953cb082dea3d72f7b324aefdd7b3f7 Mon Sep 17 00:00:00 2001
|
||||
From: md_5 <md_5@live.com.au>
|
||||
Date: Sat, 23 Mar 2013 17:57:27 +1100
|
||||
Subject: [PATCH] Spigot Changes
|
||||
@@ -144,7 +144,7 @@ index 8339a35..c17ce36 100644
|
||||
|
||||
if (l < 7) {
|
||||
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||
index cc30a04..b9704bd 100644
|
||||
index 3d0c23d..57f39c1 100644
|
||||
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||
@@ -13,8 +13,7 @@ import java.util.Set;
|
||||
@@ -198,7 +198,7 @@ index cc30a04..b9704bd 100644
|
||||
}
|
||||
|
||||
if (nbttagcompound == null) {
|
||||
@@ -134,6 +137,11 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
|
||||
@@ -148,6 +151,11 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
|
||||
Object object = this.c;
|
||||
|
||||
synchronized (this.c) {
|
||||
@@ -210,7 +210,7 @@ index cc30a04..b9704bd 100644
|
||||
if (this.b.contains(chunkcoordintpair)) {
|
||||
for (int i = 0; i < this.a.size(); ++i) {
|
||||
if (((PendingChunkToSave) this.a.get(i)).a.equals(chunkcoordintpair)) {
|
||||
@@ -145,6 +153,7 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
|
||||
@@ -159,6 +167,7 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
|
||||
|
||||
this.a.add(new PendingChunkToSave(chunkcoordintpair, nbttagcompound));
|
||||
this.b.add(chunkcoordintpair);
|
||||
@@ -218,7 +218,7 @@ index cc30a04..b9704bd 100644
|
||||
FileIOThread.a.a(this);
|
||||
}
|
||||
}
|
||||
@@ -154,12 +163,20 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
|
||||
@@ -168,12 +177,20 @@ public class ChunkRegionLoader implements IAsyncChunkSaver, IChunkLoader {
|
||||
Object object = this.c;
|
||||
|
||||
synchronized (this.c) {
|
||||
@@ -239,63 +239,6 @@ index cc30a04..b9704bd 100644
|
||||
}
|
||||
|
||||
if (pendingchunktosave != null) {
|
||||
diff --git a/src/main/java/net/minecraft/server/ChunkSection.java b/src/main/java/net/minecraft/server/ChunkSection.java
|
||||
index 38f3038..03d511f 100644
|
||||
--- a/src/main/java/net/minecraft/server/ChunkSection.java
|
||||
+++ b/src/main/java/net/minecraft/server/ChunkSection.java
|
||||
@@ -219,7 +219,7 @@ public class ChunkSection {
|
||||
}
|
||||
|
||||
public void a(byte[] abyte) {
|
||||
- this.blockIds = abyte;
|
||||
+ this.blockIds = validateByteArray(abyte); // Spigot - validate
|
||||
}
|
||||
|
||||
public void a(NibbleArray nibblearray) {
|
||||
@@ -236,19 +236,38 @@ public class ChunkSection {
|
||||
return;
|
||||
}
|
||||
// CraftBukkit end
|
||||
-
|
||||
- this.extBlockIds = nibblearray;
|
||||
+ this.extBlockIds = validateNibbleArray(nibblearray); // Spigot - validate
|
||||
}
|
||||
|
||||
public void b(NibbleArray nibblearray) {
|
||||
- this.blockData = nibblearray;
|
||||
+ this.blockData = validateNibbleArray(nibblearray); // Spigot - validate
|
||||
}
|
||||
|
||||
public void c(NibbleArray nibblearray) {
|
||||
- this.blockLight = nibblearray;
|
||||
+ this.blockLight = validateNibbleArray(nibblearray); // Spigot - validate
|
||||
}
|
||||
|
||||
public void d(NibbleArray nibblearray) {
|
||||
- this.skyLight = nibblearray;
|
||||
+ this.skyLight = validateNibbleArray(nibblearray); // Spigot - validate
|
||||
+ }
|
||||
+
|
||||
+ // Spigot start - validate/correct nibble array
|
||||
+ private static final NibbleArray validateNibbleArray(NibbleArray na) {
|
||||
+ if ((na != null) && (na.a.length < 2048)) {
|
||||
+ NibbleArray newna = new NibbleArray(4096, 4);
|
||||
+ System.arraycopy(na.a, 0, newna.a, 0, na.a.length);
|
||||
+ na = newna;
|
||||
+ }
|
||||
+ return na;
|
||||
+ }
|
||||
+ // Validate/correct byte array
|
||||
+ private static final byte[] validateByteArray(byte[] ba) {
|
||||
+ if ((ba != null) && (ba.length < 4096)) {
|
||||
+ byte[] newba = new byte[4096];
|
||||
+ System.arraycopy(ba, 0, newba, 0, ba.length);
|
||||
+ ba = newba;
|
||||
+ }
|
||||
+ return ba;
|
||||
}
|
||||
+ // Spigot end
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java
|
||||
index a28d233..e7481dd 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityItem.java
|
||||
|
||||
Reference in New Issue
Block a user