[1.12] Remove patches adding chunkExists() function, switch to vanilla code (#4054)

This commit is contained in:
Ben Staddon 2017-09-06 21:52:43 +01:00 committed by LexManos
parent 523b4f85c2
commit 71d81cbd8d
3 changed files with 15 additions and 55 deletions

View file

@ -1,27 +1,14 @@
--- ../src-base/minecraft/net/minecraft/world/chunk/storage/AnvilChunkLoader.java --- ../src-base/minecraft/net/minecraft/world/chunk/storage/AnvilChunkLoader.java
+++ ../src-work/minecraft/net/minecraft/world/chunk/storage/AnvilChunkLoader.java +++ ../src-work/minecraft/net/minecraft/world/chunk/storage/AnvilChunkLoader.java
@@ -49,9 +49,43 @@ @@ -49,9 +49,30 @@
this.field_193416_e = p_i46673_2_; this.field_193416_e = p_i46673_2_;
} }
+ @Deprecated // TODO: remove (1.13)
+ public boolean chunkExists(World world, int x, int z) + public boolean chunkExists(World world, int x, int z)
+ { + {
+ ChunkPos chunkcoordintpair = new ChunkPos(x, z); + return func_191063_a(x, z);
+
+ if (this.field_193415_c.contains(chunkcoordintpair))
+ {
+ for(ChunkPos pendingChunkCoord : this.field_75828_a.keySet())
+ {
+ if (pendingChunkCoord.equals(chunkcoordintpair))
+ {
+ return true;
+ }
+ }
+ }
+
+ return RegionFileCache.func_76550_a(this.field_75825_d, x, z).chunkExists(x & 31, z & 31);
+ } + }
+
+ +
@Nullable @Nullable
public Chunk func_75815_a(World p_75815_1_, int p_75815_2_, int p_75815_3_) throws IOException public Chunk func_75815_a(World p_75815_1_, int p_75815_2_, int p_75815_3_) throws IOException
@ -44,7 +31,7 @@
ChunkPos chunkpos = new ChunkPos(p_75815_2_, p_75815_3_); ChunkPos chunkpos = new ChunkPos(p_75815_2_, p_75815_3_);
NBTTagCompound nbttagcompound = this.field_75828_a.get(chunkpos); NBTTagCompound nbttagcompound = this.field_75828_a.get(chunkpos);
@@ -67,7 +101,7 @@ @@ -67,7 +88,7 @@
nbttagcompound = this.field_193416_e.func_188257_a(FixTypes.CHUNK, CompressedStreamTools.func_74794_a(datainputstream)); nbttagcompound = this.field_193416_e.func_188257_a(FixTypes.CHUNK, CompressedStreamTools.func_74794_a(datainputstream));
} }
@ -53,7 +40,7 @@
} }
public boolean func_191063_a(int p_191063_1_, int p_191063_2_) public boolean func_191063_a(int p_191063_1_, int p_191063_2_)
@@ -80,6 +114,12 @@ @@ -80,6 +101,12 @@
@Nullable @Nullable
protected Chunk func_75822_a(World p_75822_1_, int p_75822_2_, int p_75822_3_, NBTTagCompound p_75822_4_) protected Chunk func_75822_a(World p_75822_1_, int p_75822_2_, int p_75822_3_, NBTTagCompound p_75822_4_)
{ {
@ -66,7 +53,7 @@
if (!p_75822_4_.func_150297_b("Level", 10)) if (!p_75822_4_.func_150297_b("Level", 10))
{ {
field_151505_a.error("Chunk file at {},{} is missing level data, skipping", Integer.valueOf(p_75822_2_), Integer.valueOf(p_75822_3_)); field_151505_a.error("Chunk file at {},{} is missing level data, skipping", Integer.valueOf(p_75822_2_), Integer.valueOf(p_75822_3_));
@@ -103,10 +143,29 @@ @@ -103,10 +130,29 @@
field_151505_a.error("Chunk file at {},{} is in the wrong location; relocating. (Expected {}, {}, got {}, {})", Integer.valueOf(p_75822_2_), Integer.valueOf(p_75822_3_), Integer.valueOf(p_75822_2_), Integer.valueOf(p_75822_3_), Integer.valueOf(chunk.field_76635_g), Integer.valueOf(chunk.field_76647_h)); field_151505_a.error("Chunk file at {},{} is in the wrong location; relocating. (Expected {}, {}, got {}, {})", Integer.valueOf(p_75822_2_), Integer.valueOf(p_75822_3_), Integer.valueOf(p_75822_2_), Integer.valueOf(p_75822_3_), Integer.valueOf(chunk.field_76635_g), Integer.valueOf(chunk.field_76647_h));
nbttagcompound.func_74768_a("xPos", p_75822_2_); nbttagcompound.func_74768_a("xPos", p_75822_2_);
nbttagcompound.func_74768_a("zPos", p_75822_3_); nbttagcompound.func_74768_a("zPos", p_75822_3_);
@ -97,7 +84,7 @@
} }
} }
} }
@@ -121,7 +180,9 @@ @@ -121,7 +167,9 @@
NBTTagCompound nbttagcompound1 = new NBTTagCompound(); NBTTagCompound nbttagcompound1 = new NBTTagCompound();
nbttagcompound.func_74782_a("Level", nbttagcompound1); nbttagcompound.func_74782_a("Level", nbttagcompound1);
nbttagcompound.func_74768_a("DataVersion", 1241); nbttagcompound.func_74768_a("DataVersion", 1241);
@ -107,7 +94,7 @@
this.func_75824_a(p_75816_2_.func_76632_l(), nbttagcompound); this.func_75824_a(p_75816_2_.func_76632_l(), nbttagcompound);
} }
catch (Exception exception) catch (Exception exception)
@@ -305,11 +366,19 @@ @@ -305,11 +353,19 @@
{ {
NBTTagCompound nbttagcompound2 = new NBTTagCompound(); NBTTagCompound nbttagcompound2 = new NBTTagCompound();
@ -127,7 +114,7 @@
} }
} }
@@ -318,8 +387,16 @@ @@ -318,8 +374,16 @@
for (TileEntity tileentity : p_75820_1_.func_177434_r().values()) for (TileEntity tileentity : p_75820_1_.func_177434_r().values())
{ {
@ -144,7 +131,7 @@
} }
p_75820_3_.func_74782_a("TileEntities", nbttaglist2); p_75820_3_.func_74782_a("TileEntities", nbttaglist2);
@@ -388,6 +465,12 @@ @@ -388,6 +452,12 @@
chunk.func_76616_a(p_75823_2_.func_74770_j("Biomes")); chunk.func_76616_a(p_75823_2_.func_74770_j("Biomes"));
} }
@ -157,7 +144,7 @@
NBTTagList nbttaglist1 = p_75823_2_.func_150295_c("Entities", 10); NBTTagList nbttaglist1 = p_75823_2_.func_150295_c("Entities", 10);
for (int j1 = 0; j1 < nbttaglist1.func_74745_c(); ++j1) for (int j1 = 0; j1 < nbttaglist1.func_74745_c(); ++j1)
@@ -431,8 +514,6 @@ @@ -431,8 +501,6 @@
p_75823_1_.func_180497_b(new BlockPos(nbttagcompound3.func_74762_e("x"), nbttagcompound3.func_74762_e("y"), nbttagcompound3.func_74762_e("z")), block, nbttagcompound3.func_74762_e("t"), nbttagcompound3.func_74762_e("p")); p_75823_1_.func_180497_b(new BlockPos(nbttagcompound3.func_74762_e("x"), nbttagcompound3.func_74762_e("y"), nbttagcompound3.func_74762_e("z")), block, nbttagcompound3.func_74762_e("t"), nbttagcompound3.func_74762_e("p"));
} }
} }

View file

@ -1,40 +1,13 @@
--- ../src-base/minecraft/net/minecraft/world/chunk/storage/RegionFile.java --- ../src-base/minecraft/net/minecraft/world/chunk/storage/RegionFile.java
+++ ../src-work/minecraft/net/minecraft/world/chunk/storage/RegionFile.java +++ ../src-work/minecraft/net/minecraft/world/chunk/storage/RegionFile.java
@@ -95,6 +95,39 @@ @@ -95,6 +95,12 @@
} }
} }
+ // This is a copy (sort of) of the method below it, make sure they stay in sync + @Deprecated // TODO: remove (1.13)
+ public synchronized boolean chunkExists(int x, int z) + public synchronized boolean chunkExists(int x, int z)
+ { + {
+ if (this.func_76705_d(x, z)) return false; + return func_76709_c(x, z);
+
+ try
+ {
+ int offset = this.func_76707_e(x, z);
+
+ if (offset == 0) return false;
+
+ int sectorNumber = offset >> 8;
+ int numSectors = offset & 255;
+
+ if (sectorNumber + numSectors > this.field_76714_f.size()) return false;
+
+ this.field_76719_c.seek((long)(sectorNumber * 4096));
+ int length = this.field_76719_c.readInt();
+
+ if (length > 4096 * numSectors || length <= 0) return false;
+
+ byte version = this.field_76719_c.readByte();
+
+ if (version == 1 || version == 2) return true;
+ }
+ catch (IOException ioexception)
+ {
+ return false;
+ }
+
+ return false;
+ } + }
+ +
@Nullable @Nullable

View file

@ -46,7 +46,7 @@
+ net.minecraft.world.chunk.storage.AnvilChunkLoader loader = (net.minecraft.world.chunk.storage.AnvilChunkLoader) this.field_73247_e; + net.minecraft.world.chunk.storage.AnvilChunkLoader loader = (net.minecraft.world.chunk.storage.AnvilChunkLoader) this.field_73247_e;
+ if (runnable == null) + if (runnable == null)
+ chunk = net.minecraftforge.common.chunkio.ChunkIOExecutor.syncChunkLoad(this.field_73251_h, loader, this, p_186028_1_, p_186028_2_); + chunk = net.minecraftforge.common.chunkio.ChunkIOExecutor.syncChunkLoad(this.field_73251_h, loader, this, p_186028_1_, p_186028_2_);
+ else if (loader.chunkExists(this.field_73251_h, p_186028_1_, p_186028_2_)) + else if (loader.func_191063_a(p_186028_1_, p_186028_2_))
+ { + {
+ // We can only use the async queue for already generated chunks + // We can only use the async queue for already generated chunks
+ net.minecraftforge.common.chunkio.ChunkIOExecutor.queueChunkLoad(this.field_73251_h, loader, this, p_186028_1_, p_186028_2_, runnable); + net.minecraftforge.common.chunkio.ChunkIOExecutor.queueChunkLoad(this.field_73251_h, loader, this, p_186028_1_, p_186028_2_, runnable);