From da444904c207e8030a50c084f864b37e3d5a763a Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 16 Mar 2016 20:50:55 -0400 Subject: [PATCH] Implement EndGateway state --- .../bukkit/craftbukkit/block/CraftBlock.java | 2 + .../craftbukkit/block/CraftEndGateway.java | 40 +++++++++++++++++++ .../inventory/CraftMetaBlockState.java | 10 +++++ 3 files changed, 52 insertions(+) create mode 100644 src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java index dc25897531..03d8afb96d 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -272,6 +272,8 @@ public class CraftBlock implements Block { return new CraftDispenser(this); case DROPPER: return new CraftDropper(this); + case END_GATEWAY: + return new CraftEndGateway(this); case HOPPER: return new CraftHopper(this); case MOB_SPAWNER: diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java b/src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java new file mode 100644 index 0000000000..ed0e609d6f --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftEndGateway.java @@ -0,0 +1,40 @@ +package org.bukkit.craftbukkit.block; + +import net.minecraft.server.TileEntityEndGateway; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.EndGateway; +import org.bukkit.craftbukkit.CraftWorld; + +public class CraftEndGateway extends CraftBlockState implements EndGateway { + + private TileEntityEndGateway gateway; + + public CraftEndGateway(Block block) { + super(block); + + CraftWorld world = (CraftWorld) block.getWorld(); + gateway = (TileEntityEndGateway) world.getTileEntityAt(getX(), getY(), getZ()); + } + + public CraftEndGateway(final Material material, TileEntityEndGateway te) { + super(material); + this.gateway = te; + } + + @Override + public boolean update(boolean force, boolean applyPhysics) { + boolean result = super.update(force, applyPhysics); + + if (result) { + gateway.update(); + } + + return result; + } + + @Override + public TileEntityEndGateway getTileEntity() { + return gateway; + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java index 1ee36a9425..6737fad544 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java @@ -15,6 +15,7 @@ import net.minecraft.server.TileEntityChest; import net.minecraft.server.TileEntityCommand; import net.minecraft.server.TileEntityDispenser; import net.minecraft.server.TileEntityDropper; +import net.minecraft.server.TileEntityEndGateway; import net.minecraft.server.TileEntityFurnace; import net.minecraft.server.TileEntityHopper; import net.minecraft.server.TileEntityMobSpawner; @@ -34,6 +35,7 @@ import org.bukkit.craftbukkit.block.CraftCommandBlock; import org.bukkit.craftbukkit.block.CraftCreatureSpawner; import org.bukkit.craftbukkit.block.CraftDispenser; import org.bukkit.craftbukkit.block.CraftDropper; +import org.bukkit.craftbukkit.block.CraftEndGateway; import org.bukkit.craftbukkit.block.CraftFurnace; import org.bukkit.craftbukkit.block.CraftHopper; import org.bukkit.craftbukkit.block.CraftJukebox; @@ -222,6 +224,11 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta te = new TileEntityDispenser(); } return new CraftDropper(material, (TileEntityDropper) te); + case END_GATEWAY: + if (te == null) { + te = new TileEntityEndGateway(); + } + return new CraftEndGateway(material, (TileEntityEndGateway) te); case HOPPER: if (te == null) { te = new TileEntityHopper(); @@ -304,6 +311,9 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta case DROPPER: valid = te instanceof TileEntityDropper; break; + case END_GATEWAY: + valid = te instanceof TileEntityEndGateway; + break; case HOPPER: valid = te instanceof TileEntityHopper; break;