Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-16 11:30:06 +01:00
bc127ea819
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: eec4aab0 SPIGOT-6657: Add getPlayer to SheepDyeWoolEvent 205213c6 SPIGOT-6656: CauldronLevelChangeEvent is not fired correctly when dripstone fills the cauldron CraftBukkit Changes: b8c522d5 SPIGOT-6657: Add getPlayer to SheepDyeWoolEvent f04a77dc SPIGOT-6656: CauldronLevelChangeEvent is not fired correctly when dripstone fills the cauldron d1dbcebc SPIGOT-6653: Canceling snow bucket placement removes snow from bucket 4f34a67b #891: Fix scheduler task ID overflow and duplication issues Spigot Changes: d03d7f12 BUILDTOOLS-604: Rebuild patches
80 Zeilen
3.4 KiB
Diff
80 Zeilen
3.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Sat, 15 May 2021 22:11:11 -0700
|
|
Subject: [PATCH] ItemStack repair check API
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
|
index 7cf7e838867aed87fec2319cd84be7466b57e09f..24f5f6c7b1ca21515cdeb053f8e1f56004c800d0 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
|
@@ -485,6 +485,14 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
|
return io.papermc.paper.inventory.ItemRarity.values()[getItem(itemStack.getType()).getRarity(CraftItemStack.asNMSCopy(itemStack)).ordinal()];
|
|
}
|
|
|
|
+ @Override
|
|
+ public boolean isValidRepairItemStack(org.bukkit.inventory.ItemStack itemToBeRepaired, org.bukkit.inventory.ItemStack repairMaterial) {
|
|
+ if (!itemToBeRepaired.getType().isItem() || !repairMaterial.getType().isItem()) {
|
|
+ return false;
|
|
+ }
|
|
+ return CraftMagicNumbers.getItem(itemToBeRepaired.getType()).isValidRepairItem(CraftItemStack.asNMSCopy(itemToBeRepaired), CraftItemStack.asNMSCopy(repairMaterial));
|
|
+ }
|
|
+
|
|
@Override
|
|
public int getProtocolVersion() {
|
|
return net.minecraft.SharedConstants.getCurrentVersion().getProtocolVersion();
|
|
diff --git a/src/test/java/io/papermc/paper/util/ItemStackRepairCheckTest.java b/src/test/java/io/papermc/paper/util/ItemStackRepairCheckTest.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..8d9c9b3bd53d407391d4fcb7fc773153d1a7b402
|
|
--- /dev/null
|
|
+++ b/src/test/java/io/papermc/paper/util/ItemStackRepairCheckTest.java
|
|
@@ -0,0 +1,48 @@
|
|
+package io.papermc.paper.util;
|
|
+
|
|
+import org.bukkit.Material;
|
|
+import org.bukkit.inventory.ItemStack;
|
|
+import org.bukkit.support.AbstractTestingBase;
|
|
+import org.junit.Test;
|
|
+
|
|
+import static org.junit.Assert.assertFalse;
|
|
+import static org.junit.Assert.assertThrows;
|
|
+import static org.junit.Assert.assertTrue;
|
|
+
|
|
+public class ItemStackRepairCheckTest extends AbstractTestingBase {
|
|
+
|
|
+ @Test
|
|
+ public void testIsRepariableBy() {
|
|
+ ItemStack diamondPick = new ItemStack(Material.DIAMOND_PICKAXE);
|
|
+
|
|
+ assertTrue("diamond pick isn't repairable by a diamond", diamondPick.isRepairableBy(new ItemStack(Material.DIAMOND)));
|
|
+ }
|
|
+
|
|
+ @Test
|
|
+ public void testCanRepair() {
|
|
+ ItemStack diamond = new ItemStack(Material.DIAMOND);
|
|
+
|
|
+ assertTrue("diamond can't repair a diamond axe", diamond.canRepair(new ItemStack(Material.DIAMOND_AXE)));
|
|
+ }
|
|
+
|
|
+ @Test
|
|
+ public void testIsNotRepairableBy() {
|
|
+ ItemStack notDiamondPick = new ItemStack(Material.ACACIA_SAPLING);
|
|
+
|
|
+ assertFalse("acacia sapling is repairable by a diamond", notDiamondPick.isRepairableBy(new ItemStack(Material.DIAMOND)));
|
|
+ }
|
|
+
|
|
+ @Test
|
|
+ public void testCanNotRepair() {
|
|
+ ItemStack diamond = new ItemStack(Material.DIAMOND);
|
|
+
|
|
+ assertFalse("diamond can repair oak button", diamond.canRepair(new ItemStack(Material.OAK_BUTTON)));
|
|
+ }
|
|
+
|
|
+ @Test
|
|
+ public void testInvalidItem() {
|
|
+ ItemStack badItemStack = new ItemStack(Material.ACACIA_WALL_SIGN);
|
|
+
|
|
+ assertFalse("acacia wall sign is repairable by diamond", badItemStack.isRepairableBy(new ItemStack(Material.DIAMOND)));
|
|
+ }
|
|
+}
|