This commit is contained in:
2025-08-07 22:15:47 +02:00
parent 5ac50be528
commit 02549c568a
2 changed files with 5 additions and 28 deletions

View File

@@ -118,29 +118,16 @@ public final class SuperBow extends JavaPlugin implements Listener
return; return;
} }
boolean hasMending = left.containsEnchantment(Enchantment.MENDING) || right.containsEnchantment(Enchantment.MENDING); boolean hasMending = getEnchants(left).containsKey(Enchantment.MENDING) || getEnchants(right).containsKey(Enchantment.MENDING);
boolean hasInfinity = left.containsEnchantment(Enchantment.INFINITY) || right.containsEnchantment(Enchantment.INFINITY); boolean hasInfinity = getEnchants(left).containsKey(Enchantment.INFINITY) || getEnchants(right).containsKey(Enchantment.INFINITY);
boolean hasBookWithBoth = false; if ((hasMending && hasInfinity))
if (right.getType() == Material.ENCHANTED_BOOK)
{
EnchantmentStorageMeta meta = (EnchantmentStorageMeta)right.getItemMeta();
if (meta != null)
{
if (meta.hasStoredEnchant(Enchantment.MENDING) && meta.hasStoredEnchant(Enchantment.INFINITY))
{
hasBookWithBoth = true;
}
}
}
if ((hasMending && hasInfinity) || hasBookWithBoth)
{ {
ItemStack result = left.clone(); ItemStack result = left.clone();
boolean repair = false; boolean repair = false;
result.addUnsafeEnchantments(getEnchants(right));
if (right.getType() == Material.BOW) if (right.getType() == Material.BOW)
{ {
result.addUnsafeEnchantments(right.getEnchantments());
int maxDamage = result.getType().getMaxDurability(); int maxDamage = result.getType().getMaxDurability();
Damageable leftMeta = (Damageable)left.getItemMeta(); Damageable leftMeta = (Damageable)left.getItemMeta();
Damageable rightMeta = (Damageable)right.getItemMeta(); Damageable rightMeta = (Damageable)right.getItemMeta();
@@ -151,22 +138,12 @@ public final class SuperBow extends JavaPlugin implements Listener
} }
int leftDurability = maxDamage - leftMeta.getDamage(); int leftDurability = maxDamage - leftMeta.getDamage();
int rightDurability = maxDamage - rightMeta.getDamage(); int rightDurability = maxDamage - rightMeta.getDamage();
int durability = Math.min(leftDurability + rightDurability, maxDamage); int durability = Math.min(leftDurability + rightDurability, maxDamage);
int damage = maxDamage - durability; int damage = maxDamage - durability;
repair = resultMeta.getDamage() != damage; repair = resultMeta.getDamage() != damage;
resultMeta.setDamage(damage); resultMeta.setDamage(damage);
result.setItemMeta(resultMeta); result.setItemMeta(resultMeta);
} }
else if (hasBookWithBoth)
{
EnchantmentStorageMeta book = (EnchantmentStorageMeta)right.getItemMeta();
if (book == null)
{
return;
}
result.addUnsafeEnchantments(book.getStoredEnchants());
}
ItemMeta meta = result.getItemMeta(); ItemMeta meta = result.getItemMeta();
if (meta == null) if (meta == null)
{ {

View File

@@ -1,4 +1,4 @@
name: SuperBow name: SuperBow
version: '1.0' version: '1.1'
main: com.kasetoatz.superBow.SuperBow main: com.kasetoatz.superBow.SuperBow
api-version: '1.21' api-version: '1.21'