Updated Upstream (CraftBukkit/Spigot)

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:
7033f180 Hoist out synchronisation from ChunkRegionLoader

Spigot Changes:
500ff5d4 Rebuild patches

Additional Paper changes:
Fixed Versioned World Folders to not synchronize on ChunkRegionLoader
Optimized Save Queue even more to use a Long2ObjectOpenHashmap for save map
Add World#getXIfLoaded to IWorldReader to expose it to more places
This commit is contained in:
Aikar
2018-09-10 22:38:42 -04:00
parent b86056bae2
commit 6711724fae
11 changed files with 120 additions and 78 deletions

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Add World Util Methods
Methods that can be used for other patches to help improve logic.
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 68f845986..dcd122d8b 100644
index 68f8459861..dcd122d8b5 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess {
@@ -17,8 +17,44 @@ index 68f845986..dcd122d8b 100644
public int a(BlockPosition blockposition, int i) {
return this.a(blockposition, i, this.world.o().g());
}
diff --git a/src/main/java/net/minecraft/server/IWorldReader.java b/src/main/java/net/minecraft/server/IWorldReader.java
index ac85986a1a..06c5a54254 100644
--- a/src/main/java/net/minecraft/server/IWorldReader.java
+++ b/src/main/java/net/minecraft/server/IWorldReader.java
@@ -0,0 +0,0 @@ public interface IWorldReader extends IBlockAccess {
}
int getLightLevel(BlockPosition var1, int var2);
+ // Paper start
+ default @Nullable
+ IBlockData getTypeIfLoaded(BlockPosition var1) {
+ return isLoaded(var1) ? getType(var1) : null;
+ }
+
+ default @Nullable
+ Block getBlockIfLoaded(BlockPosition var1) {
+ return isLoaded(var1) ? getType(var1).getBlock() : null;
+ }
+
+ default @Nullable
+ Material getMaterialIfLoaded(BlockPosition var1) {
+ return isLoaded(var1) ? getType(var1).getMaterial() : null;
+ }
+ // Paper end
boolean isChunkLoaded(int var1, int var2, boolean var3);
@@ -0,0 +0,0 @@ public interface IWorldReader extends IBlockAccess {
WorldBorder worldborder = this.getWorldBorder();
boolean flag1 = worldborder.b() < (double)i && (double)j < worldborder.d() && worldborder.c() < (double)i1 && (double)j1 < worldborder.e();
VoxelShapeBitSet voxelshapebitset = new VoxelShapeBitSet(j - i, l - k, j1 - i1);
- Predicate predicate = (voxelshape3) -> {
+ Predicate<VoxelShape> predicate = (voxelshape3) -> { // Paper - decompile fix
return !voxelshape3.b() && VoxelShapes.c(voxelshape, voxelshape3, OperatorBoolean.AND);
};
Stream stream = StreamSupport.stream(BlockPosition.MutableBlockPosition.b(i, k, i1, j - 1, l - 1, j1 - 1).spliterator(), false).map((blockposition$mutableblockposition) -> {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 561bcd07b..94872593b 100644
index 561bcd07b3..94872593b1 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -0,0 +0,0 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc