
org.bukkit.craftbukkit.inventory.CraftMetaLeatherArmor Maven / Gradle / Ivy
package org.bukkit.craftbukkit.inventory;
import com.google.common.collect.ImmutableMap.Builder;
import net.minecraft.server.NBTTagCompound;
import net.minecraft.server.NBTTagInt;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.configuration.serialization.DelegateDeserialization;
import org.bukkit.craftbukkit.inventory.CraftMetaItem.SerializableMeta;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import java.util.Map;
import static org.bukkit.craftbukkit.inventory.CraftItemFactory.DEFAULT_LEATHER_COLOR;
@DelegateDeserialization(SerializableMeta.class)
class CraftMetaLeatherArmor extends CraftMetaItem implements LeatherArmorMeta {
static final ItemMetaKey COLOR = new ItemMetaKey("color");
private Color color = DEFAULT_LEATHER_COLOR;
CraftMetaLeatherArmor(CraftMetaItem meta) {
super(meta);
if (!(meta instanceof CraftMetaLeatherArmor)) {
return;
}
CraftMetaLeatherArmor armorMeta = (CraftMetaLeatherArmor) meta;
this.color = armorMeta.color;
}
CraftMetaLeatherArmor(NBTTagCompound tag) {
super(tag);
if (tag.hasKey(DISPLAY.NBT)) {
NBTTagCompound display = tag.getCompound(DISPLAY.NBT);
if (display.hasKey(COLOR.NBT)) {
color = Color.fromRGB(display.getInt(COLOR.NBT));
}
}
}
CraftMetaLeatherArmor(Map map) {
super(map);
setColor(SerializableMeta.getObject(Color.class, map, COLOR.BUKKIT, true));
}
@Override
void applyToItem(NBTTagCompound itemTag) {
super.applyToItem(itemTag);
if (hasColor()) {
setDisplayTag(itemTag, COLOR.NBT, new NBTTagInt(color.asRGB()));
}
}
@Override
boolean isEmpty() {
return super.isEmpty() && isLeatherArmorEmpty();
}
boolean isLeatherArmorEmpty() {
return !(hasColor());
}
@Override
boolean applicableTo(Material type) {
switch (type) {
case LEATHER_HELMET:
case LEATHER_CHESTPLATE:
case LEATHER_LEGGINGS:
case LEATHER_BOOTS:
return true;
default:
return false;
}
}
@Override
public CraftMetaLeatherArmor clone() {
return (CraftMetaLeatherArmor) super.clone();
}
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color == null ? DEFAULT_LEATHER_COLOR : color;
}
boolean hasColor() {
return !DEFAULT_LEATHER_COLOR.equals(color);
}
@Override
Builder serialize(Builder builder) {
super.serialize(builder);
if (hasColor()) {
builder.put(COLOR.BUKKIT, color);
}
return builder;
}
@Override
boolean equalsCommon(CraftMetaItem meta) {
if (!super.equalsCommon(meta)) {
return false;
}
if (meta instanceof CraftMetaLeatherArmor) {
CraftMetaLeatherArmor that = (CraftMetaLeatherArmor) meta;
return color.equals(that.color);
}
return true;
}
@Override
boolean notUncommon(CraftMetaItem meta) {
return super.notUncommon(meta) && (meta instanceof CraftMetaLeatherArmor || isLeatherArmorEmpty());
}
@Override
int applyHash() {
final int original;
int hash = original = super.applyHash();
if (hasColor()) {
hash ^= color.hashCode();
}
return original != hash ? CraftMetaSkull.class.hashCode() ^ hash : hash;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy