package net.glowstone.block.state; import net.glowstone.block.GlowBlock; import net.glowstone.block.GlowBlockState; import net.glowstone.block.entity.TEFlowerPot; import net.glowstone.block.entity.TileEntity; import org.bukkit.block.FlowerPot; import org.bukkit.material.MaterialData; public class GlowFlowerPot extends GlowBlockState implements FlowerPot { private MaterialData contents; public GlowFlowerPot(GlowBlock block) { super(block); // Pre-1.7 uses block data and post-1.7 uses NBT data for flower pot contents. if (getTileEntity() != null) { contents = ((TEFlowerPot) getTileEntity()).getContents(); } else if (hasFlowerPotData()) { contents = ((org.bukkit.material.FlowerPot) getData()).getContents(); } } private TileEntity getTileEntity() { return getBlock().getTileEntity(); } private boolean hasFlowerPotData() { return getData() instanceof org.bukkit.material.FlowerPot; } @Override public MaterialData getContents() { return contents; } @Override public void setContents(MaterialData contents) { this.contents = contents; } @Override public boolean update(boolean force, boolean applyPhysics) { // Pre-1.7 uses block data. if (getTileEntity() == null && hasFlowerPotData()) { ((org.bukkit.material.FlowerPot) getData()).setContents(contents); } boolean result = super.update(force, applyPhysics); // Post-1.7 uses NBT data. if (result && getTileEntity() != null) { TEFlowerPot pot = ((TEFlowerPot) getTileEntity()); pot.setContents(contents); pot.updateInRange(); } return result; } }