diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/listener/PrepareAnvilListener.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/listener/PrepareAnvilListener.kt index 2aff6ec..e938922 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/listener/PrepareAnvilListener.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/listener/PrepareAnvilListener.kt @@ -142,15 +142,16 @@ class PrepareAnvilListener : Listener { // Rename item and add renaming cost resultItem.itemMeta?.let { - val displayName = - if (useColor) it.displayName - else ChatColor.stripColor(it.displayName) + val hasDisplayName = it.hasDisplayName() + val displayName = if (!hasDisplayName) null + else if (useColor) it.displayName + else ChatColor.stripColor(it.displayName) if (!displayName.contentEquals(inventoryName)) { it.setDisplayName(inventoryName) resultItem.itemMeta = it - sumCost+= ConfigOptions.itemRenameCost + sumCost += ConfigOptions.itemRenameCost } return sumCost diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/util/AnvilXpUtil.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/util/AnvilXpUtil.kt index 03f2cb5..3893724 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/util/AnvilXpUtil.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/util/AnvilXpUtil.kt @@ -45,35 +45,42 @@ object AnvilXpUtil { anvilCost } + val maximumRepairCost = + if (ConfigOptions.doRemoveCostLimit || ignoreRules) { + Int.MAX_VALUE + } else { + ConfigOptions.maxAnvilCost + 1 + } + + // Try first just in case another plugin, or the test need this + inventory.maximumRepairCost = maximumRepairCost + inventory.repairCost = finalAnvilCost + // TODO for 2.x.x use anvil view & set directly there + /* Because Minecraft likes to have the final say in the repair cost displayed * we need to wait for the event to end before overriding it, this ensures that * we have the final say in the process. */ DependencyManager.scheduler.scheduleOnEntity( - CustomAnvil.instance, player, - Runnable { - inventory.maximumRepairCost = - if (ConfigOptions.doRemoveCostLimit || ignoreRules) { - Int.MAX_VALUE - } else { - ConfigOptions.maxAnvilCost + 1 - } + CustomAnvil.instance, player + ) { + // retry after a tick + inventory.maximumRepairCost = maximumRepairCost + inventory.repairCost = finalAnvilCost + // TODO for 2.x.x use anvil view & set directly there - inventory.repairCost = finalAnvilCost - view.setProperty(REPAIR_COST, finalAnvilCost) - player.openInventory.setProperty(REPAIR_COST, finalAnvilCost) + if (player !is Player) return@scheduleOnEntity - if (player is Player) { - if (player.gameMode != GameMode.CREATIVE) { - val bypassToExpensive = (ConfigOptions.doReplaceTooExpensive) && - (finalAnvilCost >= 40) && - finalAnvilCost < inventory.maximumRepairCost + if (player.gameMode != GameMode.CREATIVE) { + val bypassToExpensive = (ConfigOptions.doReplaceTooExpensive) && + (finalAnvilCost >= 40) && + finalAnvilCost < inventory.maximumRepairCost - DependencyManager.packetManager.setInstantBuild(player, bypassToExpensive) - } + DependencyManager.packetManager.setInstantBuild(player, bypassToExpensive) + } - player.updateInventory() - } - }) + player.updateInventory() + + } } /** diff --git a/src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTests.java b/src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTests.java index 16a01e3..d1a3fcd 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTests.java +++ b/src/test/java/xyz/alexcrea/cuanvil/anvil/AnvilFuseTests.java @@ -64,8 +64,8 @@ public class AnvilFuseTests extends SharedCustomAnvilTest { AnvilFuseTestData data = new AnvilFuseTestData( sharpness4, sharpness4, - sharpness5Result - // TODO add expected price + sharpness5Result, + 5 ); AnvilFuseTestUtil.executeAnvilTest(anvil, player, data); @@ -84,8 +84,8 @@ public class AnvilFuseTests extends SharedCustomAnvilTest { AnvilFuseTestData data = new AnvilFuseTestData( sharpness4, sharpness5, - sharpness5Result - // TODO add expected price + sharpness5Result, + 5 ); AnvilFuseTestUtil.executeAnvilTest(anvil, player, data); @@ -117,8 +117,8 @@ public class AnvilFuseTests extends SharedCustomAnvilTest { AnvilFuseTestData data = new AnvilFuseTestData( base, null, - expected, expected, null - // TODO add expected price + expected, expected, null, + 1, 1, null ); AnvilFuseTestUtil.executeAnvilTest(anvil, player, data); diff --git a/src/test/java/xyz/alexcrea/cuanvil/api/ConflictApiTests.java b/src/test/java/xyz/alexcrea/cuanvil/api/ConflictApiTests.java index bc758b6..095554b 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/api/ConflictApiTests.java +++ b/src/test/java/xyz/alexcrea/cuanvil/api/ConflictApiTests.java @@ -64,8 +64,7 @@ public class ConflictApiTests extends ConfigResetCustomAnvilTest { AnvilFuseTestData legalResultData = new AnvilFuseTestData( sharpness1, arthropods1, illegalResult, - // TODO add expected price - null + 2 ); CAEnchantment sharpness = EnchantmentApi.getByKey(Enchantment.SHARPNESS.getKey()); diff --git a/src/test/java/xyz/alexcrea/cuanvil/api/CustomAnvilRecipeApiTests.java b/src/test/java/xyz/alexcrea/cuanvil/api/CustomAnvilRecipeApiTests.java index 5b53f0e..680f396 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/api/CustomAnvilRecipeApiTests.java +++ b/src/test/java/xyz/alexcrea/cuanvil/api/CustomAnvilRecipeApiTests.java @@ -52,8 +52,7 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest { AnvilFuseTestData legalResultData = new AnvilFuseTestData( stick, stick, null, stick, null, - // TODO add expected price - null, + 2, null, null ); @@ -109,16 +108,14 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest { AnvilFuseTestData legalResultData1 = new AnvilFuseTestData( stick, stick, null, stick2, null, - // TODO add expected price - null, + 2, null, null ); AnvilFuseTestData legalResultData2 = new AnvilFuseTestData( stick5, stick, null, stick10, null, - // TODO add expected price - null, + 10, // 2 * 5 null, null ); diff --git a/src/test/java/xyz/alexcrea/cuanvil/api/UnitRepairApiTests.java b/src/test/java/xyz/alexcrea/cuanvil/api/UnitRepairApiTests.java index 71a27d1..0696690 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/api/UnitRepairApiTests.java +++ b/src/test/java/xyz/alexcrea/cuanvil/api/UnitRepairApiTests.java @@ -55,8 +55,7 @@ public class UnitRepairApiTests extends ConfigResetCustomAnvilTest { AnvilFuseTestData legalResultData = new AnvilFuseTestData( damagedPickaxe, diamond2, resultPickaxe, - // TODO add expected price - null + 2 ); AnvilFuseTestUtil.executeAnvilTest(anvil, player, legalResultData); @@ -105,8 +104,7 @@ public class UnitRepairApiTests extends ConfigResetCustomAnvilTest { AnvilFuseTestData legalResultData = new AnvilFuseTestData( damagedPickaxe, stick2, resultPickaxe, - // TODO add expected price - null + 2 ); AnvilFuseTestUtil.executeAnvilTest(anvil, player, nullResultData); diff --git a/src/test/java/xyz/alexcrea/cuanvil/util/AnvilFuseTestUtil.java b/src/test/java/xyz/alexcrea/cuanvil/util/AnvilFuseTestUtil.java index 6f77e52..2bb5bc2 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/util/AnvilFuseTestUtil.java +++ b/src/test/java/xyz/alexcrea/cuanvil/util/AnvilFuseTestUtil.java @@ -136,6 +136,7 @@ public class AnvilFuseTestUtil { ItemStack result = anvil.getItem(2); assertEqual(expectedResult, result); + assertPriceEqual(expectedPrice, anvil.getRepairCost()); } @@ -158,7 +159,7 @@ public class AnvilFuseTestUtil { public static void assertPriceEqual(Integer expectedPrice, int price){ if(expectedPrice == null) return; - Assertions.assertEquals(price, expectedPrice); + Assertions.assertEquals(expectedPrice, price); } }