2019-08-12 08:30:59 +02:00
|
|
|
package fr.themode.minestom.item;
|
|
|
|
|
2019-08-29 02:15:52 +02:00
|
|
|
import fr.themode.minestom.data.Data;
|
|
|
|
import fr.themode.minestom.data.DataContainer;
|
|
|
|
|
|
|
|
public class ItemStack implements DataContainer {
|
2019-08-12 08:30:59 +02:00
|
|
|
|
|
|
|
public static final ItemStack AIR_ITEM = new ItemStack(0, (byte) 1);
|
|
|
|
|
2019-08-22 14:52:32 +02:00
|
|
|
private Material material;
|
2019-08-13 17:52:09 +02:00
|
|
|
private byte amount;
|
2019-09-06 16:05:36 +02:00
|
|
|
private short damage;
|
2019-08-12 08:30:59 +02:00
|
|
|
|
2019-08-22 14:52:32 +02:00
|
|
|
private String displayName;
|
|
|
|
private boolean unbreakable;
|
|
|
|
|
2019-08-29 02:15:52 +02:00
|
|
|
private Data data;
|
|
|
|
|
2019-09-06 16:05:36 +02:00
|
|
|
public ItemStack(Material material, byte amount, short damage) {
|
2019-08-22 14:52:32 +02:00
|
|
|
this.material = material;
|
2019-08-13 17:52:09 +02:00
|
|
|
this.amount = amount;
|
2019-09-06 16:05:36 +02:00
|
|
|
this.damage = damage;
|
2019-08-13 17:52:09 +02:00
|
|
|
}
|
|
|
|
|
2019-08-22 14:52:32 +02:00
|
|
|
public ItemStack(int id, byte amount) {
|
2019-09-06 16:05:36 +02:00
|
|
|
this(Material.fromId(id), amount, (short) 0);
|
2019-08-22 14:52:32 +02:00
|
|
|
}
|
|
|
|
|
2019-08-13 17:52:09 +02:00
|
|
|
public boolean isAir() {
|
2019-08-22 14:52:32 +02:00
|
|
|
return material == Material.AIR;
|
2019-08-13 17:52:09 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isSimilar(ItemStack itemStack) {
|
2019-09-06 16:05:36 +02:00
|
|
|
return itemStack.getMaterial() == material &&
|
|
|
|
itemStack.getDisplayName() == displayName &&
|
|
|
|
itemStack.isUnbreakable() == unbreakable &&
|
|
|
|
itemStack.getDamage() == damage;
|
2019-08-13 17:52:09 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public byte getAmount() {
|
|
|
|
return amount;
|
2019-08-12 08:30:59 +02:00
|
|
|
}
|
|
|
|
|
2019-09-06 16:05:36 +02:00
|
|
|
public short getDamage() {
|
|
|
|
return damage;
|
|
|
|
}
|
|
|
|
|
2019-08-22 14:52:32 +02:00
|
|
|
public Material getMaterial() {
|
|
|
|
return material;
|
2019-08-12 08:30:59 +02:00
|
|
|
}
|
|
|
|
|
2019-08-13 17:52:09 +02:00
|
|
|
public void setAmount(byte amount) {
|
|
|
|
this.amount = amount;
|
|
|
|
}
|
|
|
|
|
2019-09-06 16:05:36 +02:00
|
|
|
public void setDamage(short damage) {
|
|
|
|
this.damage = damage;
|
|
|
|
}
|
|
|
|
|
2019-08-22 14:52:32 +02:00
|
|
|
public String getDisplayName() {
|
|
|
|
return displayName;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setDisplayName(String displayName) {
|
|
|
|
this.displayName = displayName;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isUnbreakable() {
|
|
|
|
return unbreakable;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUnbreakable(boolean unbreakable) {
|
|
|
|
this.unbreakable = unbreakable;
|
|
|
|
}
|
|
|
|
|
2019-08-13 17:52:09 +02:00
|
|
|
public ItemStack clone() {
|
2019-09-06 16:05:36 +02:00
|
|
|
ItemStack itemStack = new ItemStack(material, amount, damage);
|
2019-08-22 14:52:32 +02:00
|
|
|
itemStack.setDisplayName(displayName);
|
|
|
|
itemStack.setUnbreakable(unbreakable);
|
2019-08-29 02:15:52 +02:00
|
|
|
itemStack.setData(getData());
|
2019-08-22 14:52:32 +02:00
|
|
|
return itemStack;
|
2019-08-12 08:30:59 +02:00
|
|
|
}
|
2019-08-29 02:15:52 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public Data getData() {
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void setData(Data data) {
|
|
|
|
this.data = data;
|
|
|
|
}
|
2019-08-12 08:30:59 +02:00
|
|
|
}
|