b62dfa0bf9
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 Bukkit Changes: 39ce5d3a SPIGOT-4399: ItemMeta.equals broken with AttributeModifiers CraftBukkit Changes:1cf8b5dc
SPIGOT-4400: Populators running on existing chunks116cb9a1
SPIGOT-4399: Add attribute modifier equality test5ee1c18a
SPIGOT-4398: Set ASM7_EXPERIMENTAL flag
126 Zeilen
5.5 KiB
Diff
126 Zeilen
5.5 KiB
Diff
From 5487faf5715f545c2c3199f94e388d03f85cc73b Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Wed, 15 Aug 2018 12:05:12 -0700
|
|
Subject: [PATCH] Optimize BlockPosition helper methods
|
|
|
|
Resolves #1338
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
|
|
index 986b1e13a5..45f7794613 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockPosition.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
|
|
@@ -58,59 +58,96 @@ public class BlockPosition extends BaseBlockPosition {
|
|
}
|
|
|
|
public BlockPosition up() {
|
|
- return this.up(1);
|
|
+ return new BlockPosition(this.getX(), this.getY() + 1, this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
public BlockPosition up(int ix) {
|
|
- return this.shift(EnumDirection.UP, ix);
|
|
+ return ix == 0 ? this : new BlockPosition(this.getX(), this.getY() + ix, this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
public BlockPosition down() {
|
|
- return this.down(1);
|
|
+ return new BlockPosition(this.getX(), this.getY() - 1, this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
public BlockPosition down(int ix) {
|
|
- return this.shift(EnumDirection.DOWN, ix);
|
|
+ return ix == 0 ? this : new BlockPosition(this.getX(), this.getY() - ix, this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
public BlockPosition north() {
|
|
- return this.north(1);
|
|
+ return new BlockPosition(this.getX(), this.getY(), this.getZ() - 1); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
public BlockPosition north(int ix) {
|
|
- return this.shift(EnumDirection.NORTH, ix);
|
|
+ return ix == 0 ? this : new BlockPosition(this.getX(), this.getY(), this.getZ() - ix); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
public BlockPosition south() {
|
|
- return this.south(1);
|
|
+ return new BlockPosition(this.getX(), this.getY(), this.getZ() + 1); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
public BlockPosition south(int ix) {
|
|
- return this.shift(EnumDirection.SOUTH, ix);
|
|
+ return ix == 0 ? this : new BlockPosition(this.getX(), this.getY(), this.getZ() + ix); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
public BlockPosition west() {
|
|
- return this.west(1);
|
|
+ return new BlockPosition(this.getX() - 1, this.getY(), this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
public BlockPosition west(int ix) {
|
|
- return this.shift(EnumDirection.WEST, ix);
|
|
+ return ix == 0 ? this : new BlockPosition(this.getX() - ix, this.getY(), this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
public BlockPosition east() {
|
|
- return this.east(1);
|
|
+ return new BlockPosition(this.getX() + 1, this.getY(), this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
public BlockPosition east(int ix) {
|
|
- return this.shift(EnumDirection.EAST, ix);
|
|
+ return ix == 0 ? this : new BlockPosition(this.getX() + ix, this.getY(), this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
public BlockPosition shift(EnumDirection enumdirection) {
|
|
- return this.shift(enumdirection, 1);
|
|
+ // Paper Start - Optimize BlockPosition
|
|
+ switch(enumdirection) {
|
|
+ case UP:
|
|
+ return new BlockPosition(this.getX(), this.getY() + 1, this.getZ());
|
|
+ case DOWN:
|
|
+ return new BlockPosition(this.getX(), this.getY() - 1, this.getZ());
|
|
+ case NORTH:
|
|
+ return new BlockPosition(this.getX(), this.getY(), this.getZ() - 1);
|
|
+ case SOUTH:
|
|
+ return new BlockPosition(this.getX(), this.getY(), this.getZ() + 1);
|
|
+ case WEST:
|
|
+ return new BlockPosition(this.getX() - 1, this.getY(), this.getZ());
|
|
+ case EAST:
|
|
+ return new BlockPosition(this.getX() + 1, this.getY(), this.getZ());
|
|
+ default:
|
|
+ return new BlockPosition(this.getX() + enumdirection.getAdjacentX(), this.getY() + enumdirection.getAdjacentY(), this.getZ() + enumdirection.getAdjacentZ());
|
|
+ }
|
|
+ // Paper End
|
|
}
|
|
|
|
public BlockPosition shift(EnumDirection enumdirection, int ix) {
|
|
- return ix == 0 ? this : new BlockPosition(this.getX() + enumdirection.getAdjacentX() * ix, this.getY() + enumdirection.getAdjacentY() * ix, this.getZ() + enumdirection.getAdjacentZ() * ix);
|
|
+ // Paper Start - Optimize BlockPosition
|
|
+ if (ix == 0) {
|
|
+ return this;
|
|
+ }
|
|
+ switch(enumdirection) {
|
|
+ case UP:
|
|
+ return new BlockPosition(this.getX(), this.getY() + ix, this.getZ());
|
|
+ case DOWN:
|
|
+ return new BlockPosition(this.getX(), this.getY() - ix, this.getZ());
|
|
+ case NORTH:
|
|
+ return new BlockPosition(this.getX(), this.getY(), this.getZ() - ix);
|
|
+ case SOUTH:
|
|
+ return new BlockPosition(this.getX(), this.getY(), this.getZ() + ix);
|
|
+ case WEST:
|
|
+ return new BlockPosition(this.getX() - ix, this.getY(), this.getZ());
|
|
+ case EAST:
|
|
+ return new BlockPosition(this.getX() + ix, this.getY(), this.getZ());
|
|
+ default:
|
|
+ return new BlockPosition(this.getX() + enumdirection.getAdjacentX() * ix, this.getY() + enumdirection.getAdjacentY() * ix, this.getZ() + enumdirection.getAdjacentZ() * ix);
|
|
+ }
|
|
+ // Paper End
|
|
}
|
|
|
|
public BlockPosition a(EnumBlockRotation enumblockrotation) {
|
|
--
|
|
2.19.0
|
|
|