diff --git a/Spigot-Server-Patches/Configurable-Player-Collision.patch b/Spigot-Server-Patches/Configurable-Player-Collision.patch index 12a6124769..fb62f0a320 100644 --- a/Spigot-Server-Patches/Configurable-Player-Collision.patch +++ b/Spigot-Server-Patches/Configurable-Player-Collision.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable Player Collision diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index db5770ef..233e7c64 100644 +index db5770ef14..233e7c64ad 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -0,0 +0,0 @@ public class PaperConfig { @@ -19,7 +19,7 @@ index db5770ef..233e7c64 100644 + } } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 8056dc40..74c84dda 100644 +index 8056dc40df..74c84dda69 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ public abstract class MinecraftServer implements IAsyncTaskHandler, IMojangStati @@ -43,7 +43,7 @@ index 8056dc40..74c84dda 100644 protected void a(File file, WorldData worlddata) { diff --git a/src/main/java/net/minecraft/server/PacketPlayOutScoreboardTeam.java b/src/main/java/net/minecraft/server/PacketPlayOutScoreboardTeam.java -index f7a9b9d8..7befd80c 100644 +index f7a9b9d885..7befd80cf5 100644 --- a/src/main/java/net/minecraft/server/PacketPlayOutScoreboardTeam.java +++ b/src/main/java/net/minecraft/server/PacketPlayOutScoreboardTeam.java @@ -0,0 +0,0 @@ public class PacketPlayOutScoreboardTeam implements Packet<PacketListenerPlayOut @@ -56,7 +56,7 @@ index f7a9b9d8..7befd80c 100644 packetdataserializer.a(this.c); packetdataserializer.a(this.d); diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 2154c051..baf870ac 100644 +index 2154c0516c..baf870ac2a 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -0,0 +0,0 @@ public abstract class PlayerList { diff --git a/Spigot-Server-Patches/Do-not-load-chunks-for-Pathfinding.patch b/Spigot-Server-Patches/Do-not-load-chunks-for-Pathfinding.patch new file mode 100644 index 0000000000..ba7b1c33c3 --- /dev/null +++ b/Spigot-Server-Patches/Do-not-load-chunks-for-Pathfinding.patch @@ -0,0 +1,136 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar <aikar@aikar.co> +Date: Thu, 31 Mar 2016 19:17:58 -0400 +Subject: [PATCH] Do not load chunks for Pathfinding + + +diff --git a/src/main/java/net/minecraft/server/ChunkCache.java b/src/main/java/net/minecraft/server/ChunkCache.java +index ff740bc1a7..78adbf9062 100644 +--- a/src/main/java/net/minecraft/server/ChunkCache.java ++++ b/src/main/java/net/minecraft/server/ChunkCache.java +@@ -0,0 +0,0 @@ public class ChunkCache implements IIBlockAccess { + + for(int l = this.a; l <= j; ++l) { + for(int i1 = this.b; i1 <= k; ++i1) { +- this.c[l - this.a][i1 - this.b] = world.getChunkAt(l, i1); ++ this.c[l - this.a][i1 - this.b] = world.getChunkIfLoaded(l, i1); // Paper + } + } + +diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java +index a8b070ed32..7a4bc0fcc3 100644 +--- a/src/main/java/net/minecraft/server/NavigationAbstract.java ++++ b/src/main/java/net/minecraft/server/NavigationAbstract.java +@@ -0,0 +0,0 @@ public abstract class NavigationAbstract { + protected long n; + protected PathfinderAbstract o; + private BlockPosition q; +- private Pathfinder r; ++ private Pathfinder r; public Pathfinder getPathfinder() { return r; } // Paper - OBFHELPER + ++ private void setWorld() { if (getPathfinder() != null && getPathfinder().getPathfinder() != null) getPathfinder().getPathfinder().world = getEntity().world; } // Paper + public NavigationAbstract(EntityInsentient entityinsentient, World world) { + this.a = entityinsentient; + this.b = world; + this.p = entityinsentient.getAttributeInstance(GenericAttributes.FOLLOW_RANGE); + this.r = this.a(); ++ setWorld(); // Paper + } + + public BlockPosition i() { +@@ -0,0 +0,0 @@ public abstract class NavigationAbstract { + } + + public void d() { ++ setWorld(); // Paper + ++this.e; + if (this.m) { + this.l(); +diff --git a/src/main/java/net/minecraft/server/Pathfinder.java b/src/main/java/net/minecraft/server/Pathfinder.java +index 04c71ac0ef..6e583356ce 100644 +--- a/src/main/java/net/minecraft/server/Pathfinder.java ++++ b/src/main/java/net/minecraft/server/Pathfinder.java +@@ -0,0 +0,0 @@ public class Pathfinder { + private final Path a = new Path(); + private final Set<PathPoint> b = Sets.newHashSet(); + private final PathPoint[] c = new PathPoint[32]; +- private PathfinderAbstract d; ++ private PathfinderAbstract d; public PathfinderAbstract getPathfinder() { return d; } // Paper - OBFHELPER + + public Pathfinder(PathfinderAbstract pathfinderabstract) { + this.d = pathfinderabstract; +diff --git a/src/main/java/net/minecraft/server/PathfinderAbstract.java b/src/main/java/net/minecraft/server/PathfinderAbstract.java +index ba7fe359fe..6716280146 100644 +--- a/src/main/java/net/minecraft/server/PathfinderAbstract.java ++++ b/src/main/java/net/minecraft/server/PathfinderAbstract.java +@@ -0,0 +0,0 @@ package net.minecraft.server; + public abstract class PathfinderAbstract { + protected IBlockAccess a; + protected EntityInsentient b; ++ public World world; // Paper + protected final IntHashMap<PathPoint> c = new IntHashMap<PathPoint>(); + protected int d; + protected int e; +@@ -0,0 +0,0 @@ public abstract class PathfinderAbstract { + + public void a(IBlockAccess iblockaccess, EntityInsentient entityinsentient) { + this.a = iblockaccess; ++ if (iblockaccess instanceof World) world = (World) iblockaccess; // Paper + this.b = entityinsentient; + this.c.c(); + this.d = MathHelper.d(entityinsentient.width + 1.0F); +diff --git a/src/main/java/net/minecraft/server/PathfinderNormal.java b/src/main/java/net/minecraft/server/PathfinderNormal.java +index 64e0b08170..93f3d2e363 100644 +--- a/src/main/java/net/minecraft/server/PathfinderNormal.java ++++ b/src/main/java/net/minecraft/server/PathfinderNormal.java +@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract { + BlockPosition blockposition2 = new BlockPosition(this.b); + PathType pathtype1 = this.a(this.b, blockposition2.getX(), i, blockposition2.getZ()); + if (this.b.a(pathtype1) < 0.0F) { +- HashSet hashset = Sets.newHashSet(); ++ HashSet<BlockPosition> hashset = Sets.newHashSet(); // Paper - decompile fix + hashset.add(new BlockPosition(this.b.getBoundingBox().a, (double)i, this.b.getBoundingBox().c)); + hashset.add(new BlockPosition(this.b.getBoundingBox().a, (double)i, this.b.getBoundingBox().f)); + hashset.add(new BlockPosition(this.b.getBoundingBox().d, (double)i, this.b.getBoundingBox().c)); +@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract { + } + + public PathType a(IBlockAccess iblockaccess, int i, int jx, int k, EntityInsentient entityinsentient, int l, int i1, int j1, boolean flag, boolean flag1) { +- EnumSet enumset = EnumSet.noneOf(PathType.class); ++ EnumSet<PathType> enumset = EnumSet.noneOf(PathType.class); // Paper - decompile fix + PathType pathtype = PathType.BLOCKED; + double d0 = (double)entityinsentient.width / 2.0D; + BlockPosition blockposition = new BlockPosition(entityinsentient); +@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract { + public PathType a(IBlockAccess iblockaccess, int i, int jx, int k) { + PathType pathtype = this.b(iblockaccess, i, jx, k); + if (pathtype == PathType.OPEN && jx >= 1) { +- Block block = iblockaccess.getType(new BlockPosition(i, jx - 1, k)).getBlock(); ++ Block block = world.getBlockIfLoaded(new BlockPosition(i, jx - 1, k)); // Paper ++ if (block == null) return PathType.BLOCKED; // Paper + PathType pathtype1 = this.b(iblockaccess, i, jx - 1, k); + pathtype = pathtype1 != PathType.WALKABLE && pathtype1 != PathType.OPEN && pathtype1 != PathType.WATER && pathtype1 != PathType.LAVA ? PathType.WALKABLE : PathType.OPEN; + if (pathtype1 == PathType.DAMAGE_FIRE || block == Blocks.MAGMA_BLOCK) { +@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract { + for(int l = -1; l <= 1; ++l) { + for(int i1 = -1; i1 <= 1; ++i1) { + if (l != 0 || i1 != 0) { +- Block block = iblockaccess.getType(blockposition$b.f(l + i, jx, i1 + k)).getBlock(); +- if (block == Blocks.CACTUS) { ++ Block block = world.getBlockIfLoaded(blockposition$b.f(l + i, jx, i1 + k)); // Paper ++ if (block == null) pathtype = PathType.BLOCKED; // Paper ++ else if (block == Blocks.CACTUS) { // Paper + pathtype = PathType.DANGER_CACTUS; + } else if (block == Blocks.FIRE) { + pathtype = PathType.DANGER_FIRE; +@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract { + + protected PathType b(IBlockAccess iblockaccess, int i, int jx, int k) { + BlockPosition blockposition = new BlockPosition(i, jx, k); +- IBlockData iblockdata = iblockaccess.getType(blockposition); ++ IBlockData iblockdata = world.getTypeIfLoaded(blockposition); // Paper ++ if (iblockdata == null) return PathType.BLOCKED; // Paper + Block block = iblockdata.getBlock(); + Material material = iblockdata.getMaterial(); + if (iblockdata.isAir()) { +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Do-not-load-chunks-for-light-checks.patch b/Spigot-Server-Patches/Do-not-load-chunks-for-light-checks.patch index d788636074..eb8c5c40d3 100644 --- a/Spigot-Server-Patches/Do-not-load-chunks-for-light-checks.patch +++ b/Spigot-Server-Patches/Do-not-load-chunks-for-light-checks.patch @@ -6,122 +6,6 @@ Subject: [PATCH] Do not load chunks for light checks Should only happen for blocks on the edge that uses neighbors light level (certain blocks). In that case, there will be 3-4 other neighbors to get a light level from. -diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java -index a8b070ed32..7a4bc0fcc3 100644 ---- a/src/main/java/net/minecraft/server/NavigationAbstract.java -+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java -@@ -0,0 +0,0 @@ public abstract class NavigationAbstract { - protected long n; - protected PathfinderAbstract o; - private BlockPosition q; -- private Pathfinder r; -+ private Pathfinder r; public Pathfinder getPathfinder() { return r; } // Paper - OBFHELPER - -+ private void setWorld() { if (getPathfinder() != null && getPathfinder().getPathfinder() != null) getPathfinder().getPathfinder().world = getEntity().world; } // Paper - public NavigationAbstract(EntityInsentient entityinsentient, World world) { - this.a = entityinsentient; - this.b = world; - this.p = entityinsentient.getAttributeInstance(GenericAttributes.FOLLOW_RANGE); - this.r = this.a(); -+ setWorld(); // Paper - } - - public BlockPosition i() { -@@ -0,0 +0,0 @@ public abstract class NavigationAbstract { - } - - public void d() { -+ setWorld(); // Paper - ++this.e; - if (this.m) { - this.l(); -diff --git a/src/main/java/net/minecraft/server/Pathfinder.java b/src/main/java/net/minecraft/server/Pathfinder.java -index 04c71ac0ef..6e583356ce 100644 ---- a/src/main/java/net/minecraft/server/Pathfinder.java -+++ b/src/main/java/net/minecraft/server/Pathfinder.java -@@ -0,0 +0,0 @@ public class Pathfinder { - private final Path a = new Path(); - private final Set<PathPoint> b = Sets.newHashSet(); - private final PathPoint[] c = new PathPoint[32]; -- private PathfinderAbstract d; -+ private PathfinderAbstract d; public PathfinderAbstract getPathfinder() { return d; } // Paper - OBFHELPER - - public Pathfinder(PathfinderAbstract pathfinderabstract) { - this.d = pathfinderabstract; -diff --git a/src/main/java/net/minecraft/server/PathfinderAbstract.java b/src/main/java/net/minecraft/server/PathfinderAbstract.java -index ba7fe359fe..6716280146 100644 ---- a/src/main/java/net/minecraft/server/PathfinderAbstract.java -+++ b/src/main/java/net/minecraft/server/PathfinderAbstract.java -@@ -0,0 +0,0 @@ package net.minecraft.server; - public abstract class PathfinderAbstract { - protected IBlockAccess a; - protected EntityInsentient b; -+ public World world; // Paper - protected final IntHashMap<PathPoint> c = new IntHashMap<PathPoint>(); - protected int d; - protected int e; -@@ -0,0 +0,0 @@ public abstract class PathfinderAbstract { - - public void a(IBlockAccess iblockaccess, EntityInsentient entityinsentient) { - this.a = iblockaccess; -+ if (iblockaccess instanceof World) world = (World) iblockaccess; // Paper - this.b = entityinsentient; - this.c.c(); - this.d = MathHelper.d(entityinsentient.width + 1.0F); -diff --git a/src/main/java/net/minecraft/server/PathfinderNormal.java b/src/main/java/net/minecraft/server/PathfinderNormal.java -index 64e0b08170..93f3d2e363 100644 ---- a/src/main/java/net/minecraft/server/PathfinderNormal.java -+++ b/src/main/java/net/minecraft/server/PathfinderNormal.java -@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract { - BlockPosition blockposition2 = new BlockPosition(this.b); - PathType pathtype1 = this.a(this.b, blockposition2.getX(), i, blockposition2.getZ()); - if (this.b.a(pathtype1) < 0.0F) { -- HashSet hashset = Sets.newHashSet(); -+ HashSet<BlockPosition> hashset = Sets.newHashSet(); // Paper - decompile fix - hashset.add(new BlockPosition(this.b.getBoundingBox().a, (double)i, this.b.getBoundingBox().c)); - hashset.add(new BlockPosition(this.b.getBoundingBox().a, (double)i, this.b.getBoundingBox().f)); - hashset.add(new BlockPosition(this.b.getBoundingBox().d, (double)i, this.b.getBoundingBox().c)); -@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract { - } - - public PathType a(IBlockAccess iblockaccess, int i, int jx, int k, EntityInsentient entityinsentient, int l, int i1, int j1, boolean flag, boolean flag1) { -- EnumSet enumset = EnumSet.noneOf(PathType.class); -+ EnumSet<PathType> enumset = EnumSet.noneOf(PathType.class); // Paper - decompile fix - PathType pathtype = PathType.BLOCKED; - double d0 = (double)entityinsentient.width / 2.0D; - BlockPosition blockposition = new BlockPosition(entityinsentient); -@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract { - public PathType a(IBlockAccess iblockaccess, int i, int jx, int k) { - PathType pathtype = this.b(iblockaccess, i, jx, k); - if (pathtype == PathType.OPEN && jx >= 1) { -- Block block = iblockaccess.getType(new BlockPosition(i, jx - 1, k)).getBlock(); -+ Block block = world.getBlockIfLoaded(new BlockPosition(i, jx - 1, k)); // Paper -+ if (block == null) return PathType.BLOCKED; // Paper - PathType pathtype1 = this.b(iblockaccess, i, jx - 1, k); - pathtype = pathtype1 != PathType.WALKABLE && pathtype1 != PathType.OPEN && pathtype1 != PathType.WATER && pathtype1 != PathType.LAVA ? PathType.WALKABLE : PathType.OPEN; - if (pathtype1 == PathType.DAMAGE_FIRE || block == Blocks.MAGMA_BLOCK) { -@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract { - for(int l = -1; l <= 1; ++l) { - for(int i1 = -1; i1 <= 1; ++i1) { - if (l != 0 || i1 != 0) { -- Block block = iblockaccess.getType(blockposition$b.f(l + i, jx, i1 + k)).getBlock(); -- if (block == Blocks.CACTUS) { -+ Block block = world.getBlockIfLoaded(blockposition$b.f(l + i, jx, i1 + k)); // Paper -+ if (block == null) pathtype = PathType.BLOCKED; // Paper -+ else if (block == Blocks.CACTUS) { // Paper - pathtype = PathType.DANGER_CACTUS; - } else if (block == Blocks.FIRE) { - pathtype = PathType.DANGER_FIRE; -@@ -0,0 +0,0 @@ public class PathfinderNormal extends PathfinderAbstract { - - protected PathType b(IBlockAccess iblockaccess, int i, int jx, int k) { - BlockPosition blockposition = new BlockPosition(i, jx, k); -- IBlockData iblockdata = iblockaccess.getType(blockposition); -+ IBlockData iblockdata = world.getTypeIfLoaded(blockposition); // Paper -+ if (iblockdata == null) return PathType.BLOCKED; // Paper - Block block = iblockdata.getBlock(); - Material material = iblockdata.getMaterial(); - if (iblockdata.isAir()) { diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index 207f53a9c3..b8fcfb6092 100644 --- a/src/main/java/net/minecraft/server/World.java diff --git a/Spigot-Server-Patches/Do-not-load-chunks-for-pathfinding.patch b/Spigot-Server-Patches/Do-not-load-chunks-for-pathfinding.patch deleted file mode 100644 index 5c16cbe028..0000000000 --- a/Spigot-Server-Patches/Do-not-load-chunks-for-pathfinding.patch +++ /dev/null @@ -1,20 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Aikar <aikar@aikar.co> -Date: Tue, 19 Jan 2016 00:13:19 -0500 -Subject: [PATCH] Do not load chunks for pathfinding - - -diff --git a/src/main/java/net/minecraft/server/ChunkCache.java b/src/main/java/net/minecraft/server/ChunkCache.java -index ff740bc1a7..78adbf9062 100644 ---- a/src/main/java/net/minecraft/server/ChunkCache.java -+++ b/src/main/java/net/minecraft/server/ChunkCache.java -@@ -0,0 +0,0 @@ public class ChunkCache implements IIBlockAccess { - - for(int l = this.a; l <= j; ++l) { - for(int i1 = this.b; i1 <= k; ++i1) { -- this.c[l - this.a][i1 - this.b] = world.getChunkAt(l, i1); -+ this.c[l - this.a][i1 - this.b] = world.getChunkIfLoaded(l, i1); // Paper - } - } - --- \ No newline at end of file diff --git a/Spigot-Server-Patches/Fix-reducedDebugInfo-not-initialized-on-client.patch b/Spigot-Server-Patches/Fix-reducedDebugInfo-not-initialized-on-client.patch index 7f0d7f3a26..d12daf4759 100644 --- a/Spigot-Server-Patches/Fix-reducedDebugInfo-not-initialized-on-client.patch +++ b/Spigot-Server-Patches/Fix-reducedDebugInfo-not-initialized-on-client.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix reducedDebugInfo not initialized on client diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index 9f2c7d3f45..8121f8e40a 100644 +index 7dfb2bee49..2154c0516c 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -0,0 +0,0 @@ public abstract class PlayerList {