package net.glowstone.inventory; import net.glowstone.util.nbt.CompoundTag; import org.apache.commons.lang3.Validate; import org.bukkit.Color; import org.bukkit.Material; import org.bukkit.inventory.meta.LeatherArmorMeta; import java.util.Map; public class GlowMetaLeatherArmor extends GlowMetaItem implements LeatherArmorMeta { private Color color = GlowItemFactory.instance().getDefaultLeatherColor(); public GlowMetaLeatherArmor(GlowMetaItem meta) { super(meta); if (meta == null || !(meta instanceof GlowMetaLeatherArmor)) { return; } GlowMetaLeatherArmor armor = (GlowMetaLeatherArmor) meta; color = armor.color; } @Override public Color getColor() { return color; } @Override public void setColor(Color color) { Validate.notNull(color, "Armor color cannot be null"); this.color = color; } @Override public boolean isApplicable(Material material) { switch (material) { case LEATHER_HELMET: case LEATHER_CHESTPLATE: case LEATHER_LEGGINGS: case LEATHER_BOOTS: return true; default: return false; } } @Override public Map<String, Object> serialize() { Map<String, Object> result = super.serialize(); result.put("meta-type", "LEATHER_ARMOR"); if (hasColor()) { result.put("color", color.serialize()); } return result; } @Override void writeNbt(CompoundTag tag) { super.writeNbt(tag); if (hasColor()) { CompoundTag display = new CompoundTag(); display.putInt("color", color.asRGB()); tag.putCompound("display", display); } } @Override void readNbt(CompoundTag tag) { super.readNbt(tag); if (tag.isCompound("display")) { CompoundTag display = tag.getCompound("display"); if (display.isInt("color")) { this.color = Color.fromRGB(display.getInt("color")); } } } @Override public LeatherArmorMeta clone() { return new GlowMetaLeatherArmor(this); } private boolean hasColor() { return !color.equals(GlowItemFactory.instance().getDefaultLeatherColor()); } }