summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew <stteg@hotmail.com>2016-03-16 21:30:40 -0400
committermd_5 <git@md-5.net>2016-03-18 14:30:03 +1100
commit205982588ff34bdd4885472d3eba4a26860fca7c (patch)
treedac6c4df1e94940ac722c56730caa9ac2230d6ba
parentda444904c207e8030a50c084f864b37e3d5a763a (diff)
downloadcraftbukkit-205982588ff34bdd4885472d3eba4a26860fca7c.tar
craftbukkit-205982588ff34bdd4885472d3eba4a26860fca7c.tar.gz
craftbukkit-205982588ff34bdd4885472d3eba4a26860fca7c.tar.lz
craftbukkit-205982588ff34bdd4885472d3eba4a26860fca7c.tar.xz
craftbukkit-205982588ff34bdd4885472d3eba4a26860fca7c.zip
Implement EndGateway#getExitLocation and EndGateway#setExitLocation(Location)
-rw-r--r--nms-patches/TileEntityEndGateway.patch10
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java25
2 files changed, 32 insertions, 3 deletions
diff --git a/nms-patches/TileEntityEndGateway.patch b/nms-patches/TileEntityEndGateway.patch
index 9dea5190..df6f0226 100644
--- a/nms-patches/TileEntityEndGateway.patch
+++ b/nms-patches/TileEntityEndGateway.patch
@@ -1,6 +1,6 @@
--- a/net/minecraft/server/TileEntityEndGateway.java
+++ b/net/minecraft/server/TileEntityEndGateway.java
-@@ -5,6 +5,10 @@
+@@ -5,13 +5,17 @@
import java.util.Random;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -11,6 +11,14 @@
public class TileEntityEndGateway extends TileEntity implements ITickable {
+ private static final Logger a = LogManager.getLogger();
+ private long f = 0L;
+ private int g = 0;
+- private BlockPosition h;
++ public BlockPosition h; // PAIL private to public
+ private boolean i;
+
+ public TileEntityEndGateway() {}
@@ -103,6 +107,26 @@
if (this.h != null) {
BlockPosition blockposition = this.i ? this.h : this.j();
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java b/src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java
index ed0e609d..0828b36e 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java
@@ -1,6 +1,8 @@
package org.bukkit.craftbukkit.block;
+import net.minecraft.server.BlockPosition;
import net.minecraft.server.TileEntityEndGateway;
+import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.EndGateway;
@@ -8,19 +10,38 @@ import org.bukkit.craftbukkit.CraftWorld;
public class CraftEndGateway extends CraftBlockState implements EndGateway {
- private TileEntityEndGateway gateway;
+ private final CraftWorld world;
+ private final TileEntityEndGateway gateway;
public CraftEndGateway(Block block) {
super(block);
- CraftWorld world = (CraftWorld) block.getWorld();
+ world = (CraftWorld) block.getWorld();
gateway = (TileEntityEndGateway) world.getTileEntityAt(getX(), getY(), getZ());
}
public CraftEndGateway(final Material material, TileEntityEndGateway te) {
super(material);
+ world = null;
this.gateway = te;
}
+
+ @Override
+ public Location getExitLocation() {
+ BlockPosition pos = gateway.h; // PAIL: Rename exitLocation
+ return pos == null ? null : new Location(world, pos.getX(), pos.getY(), pos.getZ());
+ }
+
+ @Override
+ public void setExitLocation(Location location) {
+ if (location == null) {
+ gateway.h = null;
+ } else if (location.getWorld() != world) {
+ throw new IllegalArgumentException("Cannot set exit location to different world");
+ } else {
+ gateway.h = new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ());
+ }
+ }
@Override
public boolean update(boolean force, boolean applyPhysics) {