4104545b11
"It was from a different time before books were as jank as they are now. As time has gone on they've only proven to be worse and worse."
108 lines
4.3 KiB
Diff
108 lines
4.3 KiB
Diff
From 0000000000000000000000000000000000000000 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/core/BlockPos.java b/src/main/java/net/minecraft/core/BlockPos.java
|
|
index cfc2a5145e47de86a5a738d86abf333ff3db7796..c4e622143073edbb4891ac9bd4fe30f32aede8f6 100644
|
|
--- a/src/main/java/net/minecraft/core/BlockPos.java
|
|
+++ b/src/main/java/net/minecraft/core/BlockPos.java
|
|
@@ -130,67 +130,84 @@ public class BlockPos extends Vec3i {
|
|
|
|
@Override
|
|
public BlockPos above() {
|
|
- return this.relative(Direction.UP);
|
|
+ return new BlockPos(this.getX(), this.getY() + 1, this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
@Override
|
|
public BlockPos above(int distance) {
|
|
- return this.relative(Direction.UP, distance);
|
|
+ return distance == 0 ? this : new BlockPos(this.getX(), this.getY() + distance, this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
@Override
|
|
public BlockPos below() {
|
|
- return this.relative(Direction.DOWN);
|
|
+ return new BlockPos(this.getX(), this.getY() - 1, this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
@Override
|
|
public BlockPos below(int i) {
|
|
- return this.relative(Direction.DOWN, i);
|
|
+ return i == 0 ? this : new BlockPos(this.getX(), this.getY() - i, this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
@Override
|
|
public BlockPos north() {
|
|
- return this.relative(Direction.NORTH);
|
|
+ return new BlockPos(this.getX(), this.getY(), this.getZ() - 1); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
@Override
|
|
public BlockPos north(int distance) {
|
|
- return this.relative(Direction.NORTH, distance);
|
|
+ return distance == 0 ? this : new BlockPos(this.getX(), this.getY(), this.getZ() - distance); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
@Override
|
|
public BlockPos south() {
|
|
- return this.relative(Direction.SOUTH);
|
|
+ return new BlockPos(this.getX(), this.getY(), this.getZ() + 1); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
@Override
|
|
public BlockPos south(int distance) {
|
|
- return this.relative(Direction.SOUTH, distance);
|
|
+ return distance == 0 ? this : new BlockPos(this.getX(), this.getY(), this.getZ() + distance); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
@Override
|
|
public BlockPos west() {
|
|
- return this.relative(Direction.WEST);
|
|
+ return new BlockPos(this.getX() - 1, this.getY(), this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
@Override
|
|
public BlockPos west(int distance) {
|
|
- return this.relative(Direction.WEST, distance);
|
|
+ return distance == 0 ? this : new BlockPos(this.getX() - distance, this.getY(), this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
@Override
|
|
public BlockPos east() {
|
|
- return this.relative(Direction.EAST);
|
|
+ return new BlockPos(this.getX() + 1, this.getY(), this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
@Override
|
|
public BlockPos east(int distance) {
|
|
- return this.relative(Direction.EAST, distance);
|
|
+ return distance == 0 ? this : new BlockPos(this.getX() + distance, this.getY(), this.getZ()); // Paper - Optimize BlockPosition
|
|
}
|
|
|
|
@Override
|
|
public BlockPos relative(Direction direction) {
|
|
+ // Paper Start - Optimize BlockPosition
|
|
+ switch(direction) {
|
|
+ case UP:
|
|
+ return new BlockPos(this.getX(), this.getY() + 1, this.getZ());
|
|
+ case DOWN:
|
|
+ return new BlockPos(this.getX(), this.getY() - 1, this.getZ());
|
|
+ case NORTH:
|
|
+ return new BlockPos(this.getX(), this.getY(), this.getZ() - 1);
|
|
+ case SOUTH:
|
|
+ return new BlockPos(this.getX(), this.getY(), this.getZ() + 1);
|
|
+ case WEST:
|
|
+ return new BlockPos(this.getX() - 1, this.getY(), this.getZ());
|
|
+ case EAST:
|
|
+ return new BlockPos(this.getX() + 1, this.getY(), this.getZ());
|
|
+ default:
|
|
return new BlockPos(this.getX() + direction.getStepX(), this.getY() + direction.getStepY(), this.getZ() + direction.getStepZ());
|
|
+ }
|
|
+ // Paper End
|
|
}
|
|
|
|
@Override
|