SPIGOT-2936: Simplify WorldBorder diff

This commit is contained in:
md_5 2016-12-19 23:05:39 +11:00
parent 4602331b1d
commit c8ff65136f
2 changed files with 7 additions and 33 deletions

View File

@ -18,22 +18,17 @@
public SpawnerCreature() {}
@@ -36,15 +42,18 @@
for (int i1 = -8; i1 <= 8; ++i1) {
for (k = -8; k <= 8; ++k) {
@@ -38,13 +44,16 @@
boolean flag4 = i1 == -8 || i1 == 8 || k == -8 || k == 8;
- ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(i1 + l, k + j);
+ // CraftBukkit start - use LongHash and LongHashSet
+ // ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(i1 + l, k + j);
ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(i1 + l, k + j);
- if (!this.b.contains(chunkcoordintpair)) {
+ long chunkCoords = LongHash.toLong(i1 + l, k + j);
+ // CraftBukkit start - use LongHash and LongHashSet
+ long chunkCoords = LongHash.toLong(chunkcoordintpair.x, chunkcoordintpair.z);
+ if (!this.b.contains(chunkCoords)) {
++i;
- if (!flag4 && worldserver.getWorldBorder().isInBounds(chunkcoordintpair)) {
- PlayerChunk playerchunk = worldserver.getPlayerChunkMap().getChunk(chunkcoordintpair.x, chunkcoordintpair.z);
+ if (!flag4 && worldserver.getWorldBorder().isInBounds(i1 + l, k + j)) { // CraftBukkit
+ PlayerChunk playerchunk = worldserver.getPlayerChunkMap().getChunk(i1 + l, k + j); // CraftBukkit
if (!flag4 && worldserver.getWorldBorder().isInBounds(chunkcoordintpair)) {
PlayerChunk playerchunk = worldserver.getPlayerChunkMap().getChunk(chunkcoordintpair.x, chunkcoordintpair.z);
if (playerchunk != null && playerchunk.e()) {
- this.b.add(chunkcoordintpair);

View File

@ -8,28 +8,7 @@
public WorldBorder() {
this.e = this.d;
@@ -32,8 +33,19 @@
return (double) (blockposition.getX() + 1) > this.b() && (double) blockposition.getX() < this.d() && (double) (blockposition.getZ() + 1) > this.c() && (double) blockposition.getZ() < this.e();
}
+ // CraftBukkit start - split method
public boolean isInBounds(ChunkCoordIntPair chunkcoordintpair) {
- return (double) chunkcoordintpair.e() > this.b() && (double) chunkcoordintpair.c() < this.d() && (double) chunkcoordintpair.f() > this.c() && (double) chunkcoordintpair.d() < this.e();
+ return isInBounds(chunkcoordintpair.x, chunkcoordintpair.z);
+ }
+
+ // Inlined the getters from ChunkCoordIntPair
+ public boolean isInBounds(long chunkcoords) {
+ return isInBounds(org.bukkit.craftbukkit.util.LongHash.msw(chunkcoords), org.bukkit.craftbukkit.util.LongHash.lsw(chunkcoords));
+ }
+
+ // Inlined the getters from ChunkCoordIntPair
+ public boolean isInBounds(int x, int z) {
+ return (double) ((x << 4) + 15) > this.b() && (double) (x << 4) < this.d() && (double) ((z << 4) + 15) > this.c() && (double) (x << 4) < this.e();
}
public boolean a(AxisAlignedBB axisalignedbb) {
@@ -177,6 +189,7 @@
@@ -177,6 +178,7 @@
}
public void a(IWorldBorderListener iworldborderlistener) {