diff options
author | md_5 <git@md-5.net> | 2016-06-01 17:08:55 +1000 |
---|---|---|
committer | md_5 <git@md-5.net> | 2016-06-03 20:41:43 +1000 |
commit | a28041daa73e766e0c772e36d2052aa10703d925 (patch) | |
tree | b2343a2c9089201b539222243d335e5d92303988 /src | |
parent | cee5bbf00cfd56d31913683ca6e219d27ab03b91 (diff) | |
download | craftbukkit-a28041daa73e766e0c772e36d2052aa10703d925.tar craftbukkit-a28041daa73e766e0c772e36d2052aa10703d925.tar.gz craftbukkit-a28041daa73e766e0c772e36d2052aa10703d925.tar.lz craftbukkit-a28041daa73e766e0c772e36d2052aa10703d925.tar.xz craftbukkit-a28041daa73e766e0c772e36d2052aa10703d925.zip |
SPIGOT-1292: BlockState based FlowerPot API.
Diffstat (limited to 'src')
3 files changed, 52 insertions, 0 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java index 991afb14..cdeff9bc 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -296,6 +296,8 @@ public class CraftBlock implements Block { case WALL_BANNER: case STANDING_BANNER: return new CraftBanner(this); + case FLOWER_POT: + return new CraftFlowerPot(this); default: return new CraftBlockState(this); } diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftFlowerPot.java b/src/main/java/org/bukkit/craftbukkit/block/CraftFlowerPot.java new file mode 100644 index 00000000..e16f5efe --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftFlowerPot.java @@ -0,0 +1,40 @@ +package org.bukkit.craftbukkit.block; + +import net.minecraft.server.TileEntityFlowerPot; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.FlowerPot; +import org.bukkit.craftbukkit.CraftWorld; +import org.bukkit.craftbukkit.util.CraftMagicNumbers; +import org.bukkit.material.MaterialData; + +public class CraftFlowerPot extends CraftBlockState implements FlowerPot { + + private final TileEntityFlowerPot pot; + + public CraftFlowerPot(Block block) { + super(block); + + pot = (TileEntityFlowerPot) ((CraftWorld) block.getWorld()).getTileEntityAt(getX(), getY(), getZ()); + } + + public CraftFlowerPot(Material material, TileEntityFlowerPot pot) { + super(material); + + this.pot = pot; + } + + @Override + public MaterialData getContents() { + return (pot.d() == null) ? null : CraftMagicNumbers.getMaterial(pot.d()).getNewData((byte) pot.e()); // PAIL: rename + } + + @Override + public void setContents(MaterialData item) { + if (item == null) { + pot.a(null, 0); + } else { + pot.a(CraftMagicNumbers.getItem(item.getItemType()), item.getData()); // PAIL: rename + } + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java index 609a1211..f0f891da 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java @@ -16,6 +16,7 @@ import net.minecraft.server.TileEntityCommand; import net.minecraft.server.TileEntityDispenser; import net.minecraft.server.TileEntityDropper; import net.minecraft.server.TileEntityEndGateway; +import net.minecraft.server.TileEntityFlowerPot; import net.minecraft.server.TileEntityFurnace; import net.minecraft.server.TileEntityHopper; import net.minecraft.server.TileEntityMobSpawner; @@ -36,6 +37,7 @@ 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.CraftFlowerPot; import org.bukkit.craftbukkit.block.CraftFurnace; import org.bukkit.craftbukkit.block.CraftHopper; import org.bukkit.craftbukkit.block.CraftJukebox; @@ -279,6 +281,11 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta te = new TileEntityBanner(); } return new CraftBanner(material, (TileEntityBanner) te); + case FLOWER_POT_ITEM: + if (te == null) { + te = new TileEntityFlowerPot(); + } + return new CraftFlowerPot(material, (TileEntityFlowerPot) te); default: throw new IllegalStateException("Missing blockState for " + material); } @@ -346,6 +353,9 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta case STANDING_BANNER: valid = te instanceof TileEntityBanner; break; + case FLOWER_POT_ITEM: + valid = te instanceof TileEntityFlowerPot; + break; default: valid = false; break; |