Improve the invalid block handling
Dieser Commit ist enthalten in:
Ursprung
a497e45503
Commit
dd096a5255
@ -1,5 +1,5 @@
|
|||||||
--- ../work/decompile-8eb82bde//net/minecraft/server/ChunkRegionLoader.java 2014-11-29 17:31:14.897318138 +0000
|
--- ../work/decompile-8eb82bde//net/minecraft/server/ChunkRegionLoader.java 2014-11-29 20:00:36.009119253 +0000
|
||||||
+++ src/main/java/net/minecraft/server/ChunkRegionLoader.java 2014-11-29 17:31:08.453318281 +0000
|
+++ src/main/java/net/minecraft/server/ChunkRegionLoader.java 2014-11-29 20:00:18.677119638 +0000
|
||||||
@@ -23,8 +23,40 @@
|
@@ -23,8 +23,40 @@
|
||||||
public ChunkRegionLoader(File file) {
|
public ChunkRegionLoader(File file) {
|
||||||
this.e = file;
|
this.e = file;
|
||||||
@ -8,7 +8,7 @@
|
|||||||
+ // CraftBukkit start
|
+ // CraftBukkit start
|
||||||
+ public boolean chunkExists(World world, int i, int j) {
|
+ public boolean chunkExists(World world, int i, int j) {
|
||||||
+ ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(i, j);
|
+ ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(i, j);
|
||||||
|
+
|
||||||
+ synchronized (this.d) {
|
+ synchronized (this.d) {
|
||||||
+ if (this.c.contains(chunkcoordintpair)) {
|
+ if (this.c.contains(chunkcoordintpair)) {
|
||||||
+ for (int k = 0; k < this.b.size(); ++k) {
|
+ for (int k = 0; k < this.b.size(); ++k) {
|
||||||
@ -18,7 +18,7 @@
|
|||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
|
||||||
+ return RegionFileCache.a(this.e, i, j).chunkExists(i & 31, j & 31);
|
+ return RegionFileCache.a(this.e, i, j).chunkExists(i & 31, j & 31);
|
||||||
+ }
|
+ }
|
||||||
+ // CraftBukkit end
|
+ // CraftBukkit end
|
||||||
@ -107,7 +107,7 @@
|
|||||||
DataOutputStream dataoutputstream = RegionFileCache.d(this.e, pendingchunktosave.a.x, pendingchunktosave.a.z);
|
DataOutputStream dataoutputstream = RegionFileCache.d(this.e, pendingchunktosave.a.x, pendingchunktosave.a.z);
|
||||||
|
|
||||||
NBTCompressedStreamTools.a(pendingchunktosave.b, (DataOutput) dataoutputstream);
|
NBTCompressedStreamTools.a(pendingchunktosave.b, (DataOutput) dataoutputstream);
|
||||||
@@ -302,8 +358,23 @@
|
@@ -302,8 +358,32 @@
|
||||||
int j1 = l >> 8 & 15;
|
int j1 = l >> 8 & 15;
|
||||||
int k1 = l >> 4 & 15;
|
int k1 = l >> 4 & 15;
|
||||||
int l1 = nibblearray1 != null ? nibblearray1.a(i1, j1, k1) : 0;
|
int l1 = nibblearray1 != null ? nibblearray1.a(i1, j1, k1) : 0;
|
||||||
@ -124,7 +124,16 @@
|
|||||||
+ if (Block.d.a(packed) == null) {
|
+ if (Block.d.a(packed) == null) {
|
||||||
+ Block block = Block.getById(ex << 8 | id);
|
+ Block block = Block.getById(ex << 8 | id);
|
||||||
+ if (block != null) {
|
+ if (block != null) {
|
||||||
|
+ try {
|
||||||
+ data = block.toLegacyData(block.fromLegacyData(data));
|
+ data = block.toLegacyData(block.fromLegacyData(data));
|
||||||
|
+ } catch (Exception ignored) {
|
||||||
|
+ for (data = 0; data <= 15; data++) {
|
||||||
|
+ packed = ex << 12 | id << 4 | data;
|
||||||
|
+ if (Block.d.a(packed) != null) {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
+ packed = ex << 12 | id << 4 | data;
|
+ packed = ex << 12 | id << 4 | data;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
@ -133,7 +142,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
chunksection.a(achar);
|
chunksection.a(achar);
|
||||||
@@ -320,7 +391,13 @@
|
@@ -320,7 +400,13 @@
|
||||||
if (nbttagcompound.hasKeyOfType("Biomes", 7)) {
|
if (nbttagcompound.hasKeyOfType("Biomes", 7)) {
|
||||||
chunk.a(nbttagcompound.getByteArray("Biomes"));
|
chunk.a(nbttagcompound.getByteArray("Biomes"));
|
||||||
}
|
}
|
||||||
@ -147,7 +156,7 @@
|
|||||||
NBTTagList nbttaglist1 = nbttagcompound.getList("Entities", 10);
|
NBTTagList nbttaglist1 = nbttagcompound.getList("Entities", 10);
|
||||||
|
|
||||||
if (nbttaglist1 != null) {
|
if (nbttaglist1 != null) {
|
||||||
@@ -379,6 +456,6 @@
|
@@ -379,6 +465,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren