ItemStack repair check API

This commit is contained in:
Jake Potrebic 2021-05-15 22:11:11 -07:00
parent d6b69e74a9
commit 121534e841
2 changed files with 49 additions and 0 deletions

View file

@ -548,6 +548,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
public int getProtocolVersion() { public int getProtocolVersion() {
return net.minecraft.SharedConstants.getCurrentVersion().getProtocolVersion(); return net.minecraft.SharedConstants.getCurrentVersion().getProtocolVersion();
} }
@Override
public boolean isValidRepairItemStack(org.bukkit.inventory.ItemStack itemToBeRepaired, org.bukkit.inventory.ItemStack repairMaterial) {
if (!itemToBeRepaired.getType().isItem() || !repairMaterial.getType().isItem()) {
return false;
}
return CraftItemStack.unwrap(itemToBeRepaired).isValidRepairItem(CraftItemStack.unwrap(repairMaterial));
}
// Paper end // Paper end
/** /**

View file

@ -0,0 +1,41 @@
package io.papermc.paper.util;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.support.environment.VanillaFeature;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
@VanillaFeature
public class ItemStackRepairCheckTest {
@Test
public void testIsRepariableBy() {
ItemStack diamondPick = new ItemStack(Material.DIAMOND_PICKAXE);
assertTrue(diamondPick.isRepairableBy(new ItemStack(Material.DIAMOND)), "diamond pick isn't repairable by a diamond");
}
@Test
public void testCanRepair() {
ItemStack diamond = new ItemStack(Material.DIAMOND);
assertTrue(diamond.canRepair(new ItemStack(Material.DIAMOND_AXE)), "diamond can't repair a diamond axe");
}
@Test
public void testIsNotRepairableBy() {
ItemStack notDiamondPick = new ItemStack(Material.ACACIA_SAPLING);
assertFalse(notDiamondPick.isRepairableBy(new ItemStack(Material.DIAMOND)), "acacia sapling is repairable by a diamond");
}
@Test
public void testCanNotRepair() {
ItemStack diamond = new ItemStack(Material.DIAMOND);
assertFalse(diamond.canRepair(new ItemStack(Material.OAK_BUTTON)), "diamond can repair oak button");
}
}