Implement correct hashCode() and equals() in EnchantmentLevel

This commit is contained in:
snowleo 2011-11-27 08:26:52 +01:00
parent 9c56b147ee
commit b8f9a4b96f

View File

@ -7,9 +7,9 @@ import org.bukkit.enchantments.Enchantment;
public class EnchantmentLevel implements Entry<Enchantment, Integer> public class EnchantmentLevel implements Entry<Enchantment, Integer>
{ {
private Enchantment enchantment; private Enchantment enchantment;
private int level; private int level;
public EnchantmentLevel(Enchantment enchantment, int level) public EnchantmentLevel(final Enchantment enchantment, final int level)
{ {
this.enchantment = enchantment; this.enchantment = enchantment;
this.level = level; this.level = level;
@ -20,7 +20,7 @@ public class EnchantmentLevel implements Entry<Enchantment, Integer>
return enchantment; return enchantment;
} }
public void setEnchantment(Enchantment enchantment) public void setEnchantment(final Enchantment enchantment)
{ {
this.enchantment = enchantment; this.enchantment = enchantment;
} }
@ -30,7 +30,7 @@ public class EnchantmentLevel implements Entry<Enchantment, Integer>
return level; return level;
} }
public void setLevel(int level) public void setLevel(final int level)
{ {
this.level = level; this.level = level;
} }
@ -48,10 +48,33 @@ public class EnchantmentLevel implements Entry<Enchantment, Integer>
} }
@Override @Override
public Integer setValue(Integer v) public Integer setValue(final Integer v)
{ {
int t = level; int t = level;
level = v; level = v;
return t; return t;
} }
@Override
public int hashCode()
{
return enchantment.hashCode() ^ level;
}
@Override
public boolean equals(final Object obj)
{
if (obj instanceof Entry)
{
final Entry entry = (Entry)obj;
if (entry.getKey() instanceof Enchantment
&& entry.getValue() instanceof Integer)
{
final Enchantment enchantment = (Enchantment)entry.getKey();
final Integer level = (Integer)entry.getValue();
return this.enchantment.equals(enchantment) && this.level == level.intValue();
}
}
return false;
}
} }