diff options
author | Matthew <stteg@hotmail.com> | 2016-03-16 21:30:40 -0400 |
---|---|---|
committer | md_5 <git@md-5.net> | 2016-03-18 14:30:03 +1100 |
commit | 205982588ff34bdd4885472d3eba4a26860fca7c (patch) | |
tree | dac6c4df1e94940ac722c56730caa9ac2230d6ba | |
parent | da444904c207e8030a50c084f864b37e3d5a763a (diff) | |
download | craftbukkit-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.patch | 10 | ||||
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java | 25 |
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) { |