summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authormd_5 <git@md-5.net>2016-06-01 17:08:55 +1000
committermd_5 <git@md-5.net>2016-06-03 20:41:43 +1000
commita28041daa73e766e0c772e36d2052aa10703d925 (patch)
treeb2343a2c9089201b539222243d335e5d92303988 /src
parentcee5bbf00cfd56d31913683ca6e219d27ab03b91 (diff)
downloadcraftbukkit-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')
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java2
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftFlowerPot.java40
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java10
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;