mirror of
https://github.com/Minestom/Minestom.git
synced 2025-01-21 07:31:47 +01:00
Fixed ItemStack#isSimilar
This commit is contained in:
parent
6543f17d4c
commit
49723fbe7d
@ -33,16 +33,18 @@ public class ItemStack implements DataContainer {
|
|||||||
private List<ItemAttribute> attributes;
|
private List<ItemAttribute> attributes;
|
||||||
private Set<PotionType> potionTypes;
|
private Set<PotionType> potionTypes;
|
||||||
|
|
||||||
{
|
|
||||||
if (defaultStackingRule == null)
|
|
||||||
defaultStackingRule = DEFAULT_STACKING_RULE;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int hideFlag;
|
private int hideFlag;
|
||||||
|
|
||||||
private StackingRule stackingRule;
|
private StackingRule stackingRule;
|
||||||
private Data data;
|
private Data data;
|
||||||
|
|
||||||
|
{
|
||||||
|
if (defaultStackingRule == null)
|
||||||
|
defaultStackingRule = DEFAULT_STACKING_RULE;
|
||||||
|
if (this.stackingRule == null)
|
||||||
|
this.stackingRule = defaultStackingRule;
|
||||||
|
}
|
||||||
|
|
||||||
public ItemStack(short materialId, byte amount, short damage) {
|
public ItemStack(short materialId, byte amount, short damage) {
|
||||||
this.materialId = materialId;
|
this.materialId = materialId;
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
@ -53,8 +55,6 @@ public class ItemStack implements DataContainer {
|
|||||||
this.storedEnchantmentMap = new HashMap<>();
|
this.storedEnchantmentMap = new HashMap<>();
|
||||||
this.attributes = new ArrayList<>();
|
this.attributes = new ArrayList<>();
|
||||||
this.potionTypes = new HashSet<>();
|
this.potionTypes = new HashSet<>();
|
||||||
|
|
||||||
this.stackingRule = defaultStackingRule;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack(short materialId, byte amount) {
|
public ItemStack(short materialId, byte amount) {
|
||||||
@ -70,20 +70,30 @@ public class ItemStack implements DataContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do not take amount in consideration
|
* Do not take amount and stacking rule in consideration
|
||||||
*
|
*
|
||||||
* @param itemStack The ItemStack to compare to
|
* @param itemStack The ItemStack to compare to
|
||||||
* @return true if both items are similar (without comparing amount)
|
* @return true if both items are similar (without comparing amount)
|
||||||
*/
|
*/
|
||||||
public boolean isSimilar(ItemStack itemStack) {
|
public synchronized boolean isSimilar(ItemStack itemStack) {
|
||||||
|
final String itemDisplayName = itemStack.getDisplayName();
|
||||||
|
final boolean displayNameCheck = (displayName == null && itemDisplayName == null) ||
|
||||||
|
(displayName != null && itemDisplayName != null && displayName.equals(itemDisplayName));
|
||||||
|
|
||||||
|
final Data itemData = itemStack.getData();
|
||||||
|
final boolean dataCheck = (data == null && itemData == null) ||
|
||||||
|
(data != null && itemData != null && data.equals(itemData));
|
||||||
|
|
||||||
return itemStack.getMaterialId() == materialId &&
|
return itemStack.getMaterialId() == materialId &&
|
||||||
itemStack.getDisplayName() == displayName &&
|
displayNameCheck &&
|
||||||
itemStack.isUnbreakable() == unbreakable &&
|
itemStack.isUnbreakable() == unbreakable &&
|
||||||
itemStack.getDamage() == damage &&
|
itemStack.getDamage() == damage &&
|
||||||
itemStack.enchantmentMap.equals(enchantmentMap) &&
|
itemStack.enchantmentMap.equals(enchantmentMap) &&
|
||||||
|
itemStack.storedEnchantmentMap.equals(storedEnchantmentMap) &&
|
||||||
|
itemStack.attributes.equals(attributes) &&
|
||||||
|
itemStack.potionTypes.equals(potionTypes) &&
|
||||||
itemStack.hideFlag == hideFlag &&
|
itemStack.hideFlag == hideFlag &&
|
||||||
itemStack.getStackingRule() == stackingRule &&
|
dataCheck;
|
||||||
itemStack.getData() == data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte getAmount() {
|
public byte getAmount() {
|
||||||
@ -248,7 +258,7 @@ public class ItemStack implements DataContainer {
|
|||||||
!attributes.isEmpty() || !potionTypes.isEmpty();
|
!attributes.isEmpty() || !potionTypes.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack clone() {
|
public synchronized ItemStack clone() {
|
||||||
ItemStack itemStack = new ItemStack(materialId, amount, damage);
|
ItemStack itemStack = new ItemStack(materialId, amount, damage);
|
||||||
itemStack.setDisplayName(displayName);
|
itemStack.setDisplayName(displayName);
|
||||||
itemStack.setUnbreakable(unbreakable);
|
itemStack.setUnbreakable(unbreakable);
|
||||||
|
Loading…
Reference in New Issue
Block a user