package net.glowstone.block.entity; import net.glowstone.block.GlowBlock; import net.glowstone.block.GlowBlockState; import net.glowstone.block.state.GlowFlowerPot; import net.glowstone.constants.GlowBlockEntity; import net.glowstone.constants.ItemIds; import net.glowstone.entity.GlowPlayer; import net.glowstone.util.nbt.CompoundTag; import org.bukkit.Material; import org.bukkit.material.MaterialData; public class TEFlowerPot extends TileEntity { private MaterialData contents; public TEFlowerPot(GlowBlock block) { super(block); setSaveId("FlowerPot"); } public MaterialData getContents() { return contents; } public void setContents(MaterialData contents) { this.contents = contents; } @Override public void loadNbt(CompoundTag tag) { super.loadNbt(tag); int contentsData = tag.isInt("Data") ? tag.getInt("Data") : 0; if (tag.isString("Item") && !tag.getString("Item").isEmpty()) { // NBT data uses material ID names (post-1.8). contents = ItemIds.getItem(tag.getString("Item")).getNewData((byte) contentsData); } else if (tag.isInt("Item")) { // NBT data uses material IDs (pre-1.8). contents = Material.getMaterial(tag.getInt("Item")).getNewData((byte) contentsData); } } @Override public void saveNbt(CompoundTag tag) { super.saveNbt(tag); if (contents != null) { tag.putString("Item", ItemIds.getName(contents.getItemType())); tag.putInt("Data", contents.getData()); } else { // Mimics how Minecraft does it. tag.putString("Item", ""); tag.putInt("Data", 0); } } @Override public GlowBlockState getState() { return new GlowFlowerPot(block); } @Override public void update(GlowPlayer player) { super.update(player); CompoundTag nbt = new CompoundTag(); saveNbt(nbt); player.sendBlockEntityChange(getBlock().getLocation(), GlowBlockEntity.FLOWER_POT, nbt); } }