From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Sat, 15 May 2021 22:10:50 -0700 Subject: [PATCH] ItemStack repair check API diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java index 989a7e624dca442f1c989bb766e4c16a75e87333..218adc63a0c0037f764942af184b30ebabff697d 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java @@ -187,5 +187,15 @@ public interface UnsafeValues { * @return the server's protocol version */ int getProtocolVersion(); + + /** + * Checks if an itemstack can be repaired with another itemstack. + * Returns false if either argument's type is not an item ({@link Material#isItem()}). + * + * @param itemToBeRepaired the itemstack to be repaired + * @param repairMaterial the repair material + * @return true if valid repair, false if not + */ + public boolean isValidRepairItemStack(@org.jetbrains.annotations.NotNull ItemStack itemToBeRepaired, @org.jetbrains.annotations.NotNull ItemStack repairMaterial); // Paper end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java index 06207f1527e8afe8bb786410c9659bb92792ea6f..c33a866a03cc8e6235dd8bff6259dcb1e1bbb11f 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -1006,5 +1006,27 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat public io.papermc.paper.inventory.ItemRarity getRarity() { return io.papermc.paper.inventory.ItemRarity.valueOf(this.getItemMeta().getRarity().name()); } + + /** + * Checks if an itemstack can repair this itemstack. + * Returns false if {@code this} or {@code repairMaterial}'s type is not an item ({@link Material#isItem()}). + * + * @param repairMaterial the repair material + * @return true if it is repairable by, false if not + */ + public boolean isRepairableBy(@NotNull ItemStack repairMaterial) { + return Bukkit.getUnsafe().isValidRepairItemStack(this, repairMaterial); + } + + /** + * Checks if this itemstack can repair another. + * Returns false if {@code this} or {@code toBeRepaired}'s type is not an item ({@link Material#isItem()}). + * + * @param toBeRepaired the itemstack to be repaired + * @return true if it can repair, false if not + */ + public boolean canRepair(@NotNull ItemStack toBeRepaired) { + return Bukkit.getUnsafe().isValidRepairItemStack(toBeRepaired, this); + } // Paper end }