Add and fix expected price for tests

todo add test for handling work penalty
This commit is contained in:
alexcrea 2025-03-10 22:59:31 +01:00
parent 79f05d0f82
commit 335bca0335
No known key found for this signature in database
GPG key ID: 43FD265DB0DBF91F
7 changed files with 47 additions and 44 deletions

View file

@ -142,15 +142,16 @@ class PrepareAnvilListener : Listener {
// Rename item and add renaming cost // Rename item and add renaming cost
resultItem.itemMeta?.let { resultItem.itemMeta?.let {
val displayName = val hasDisplayName = it.hasDisplayName()
if (useColor) it.displayName val displayName = if (!hasDisplayName) null
else if (useColor) it.displayName
else ChatColor.stripColor(it.displayName) else ChatColor.stripColor(it.displayName)
if (!displayName.contentEquals(inventoryName)) { if (!displayName.contentEquals(inventoryName)) {
it.setDisplayName(inventoryName) it.setDisplayName(inventoryName)
resultItem.itemMeta = it resultItem.itemMeta = it
sumCost+= ConfigOptions.itemRenameCost sumCost += ConfigOptions.itemRenameCost
} }
return sumCost return sumCost

View file

@ -45,24 +45,31 @@ object AnvilXpUtil {
anvilCost anvilCost
} }
/* Because Minecraft likes to have the final say in the repair cost displayed val maximumRepairCost =
* 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) { if (ConfigOptions.doRemoveCostLimit || ignoreRules) {
Int.MAX_VALUE Int.MAX_VALUE
} else { } else {
ConfigOptions.maxAnvilCost + 1 ConfigOptions.maxAnvilCost + 1
} }
// Try first just in case another plugin, or the test need this
inventory.maximumRepairCost = maximumRepairCost
inventory.repairCost = finalAnvilCost inventory.repairCost = finalAnvilCost
view.setProperty(REPAIR_COST, finalAnvilCost) // TODO for 2.x.x use anvil view & set directly there
player.openInventory.setProperty(REPAIR_COST, finalAnvilCost)
/* 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
) {
// retry after a tick
inventory.maximumRepairCost = maximumRepairCost
inventory.repairCost = finalAnvilCost
// TODO for 2.x.x use anvil view & set directly there
if (player !is Player) return@scheduleOnEntity
if (player is Player) {
if (player.gameMode != GameMode.CREATIVE) { if (player.gameMode != GameMode.CREATIVE) {
val bypassToExpensive = (ConfigOptions.doReplaceTooExpensive) && val bypassToExpensive = (ConfigOptions.doReplaceTooExpensive) &&
(finalAnvilCost >= 40) && (finalAnvilCost >= 40) &&
@ -72,8 +79,8 @@ object AnvilXpUtil {
} }
player.updateInventory() player.updateInventory()
} }
})
} }
/** /**

View file

@ -64,8 +64,8 @@ public class AnvilFuseTests extends SharedCustomAnvilTest {
AnvilFuseTestData data = new AnvilFuseTestData( AnvilFuseTestData data = new AnvilFuseTestData(
sharpness4, sharpness4, sharpness4, sharpness4,
sharpness5Result sharpness5Result,
// TODO add expected price 5
); );
AnvilFuseTestUtil.executeAnvilTest(anvil, player, data); AnvilFuseTestUtil.executeAnvilTest(anvil, player, data);
@ -84,8 +84,8 @@ public class AnvilFuseTests extends SharedCustomAnvilTest {
AnvilFuseTestData data = new AnvilFuseTestData( AnvilFuseTestData data = new AnvilFuseTestData(
sharpness4, sharpness5, sharpness4, sharpness5,
sharpness5Result sharpness5Result,
// TODO add expected price 5
); );
AnvilFuseTestUtil.executeAnvilTest(anvil, player, data); AnvilFuseTestUtil.executeAnvilTest(anvil, player, data);
@ -117,8 +117,8 @@ public class AnvilFuseTests extends SharedCustomAnvilTest {
AnvilFuseTestData data = new AnvilFuseTestData( AnvilFuseTestData data = new AnvilFuseTestData(
base, null, base, null,
expected, expected, null expected, expected, null,
// TODO add expected price 1, 1, null
); );
AnvilFuseTestUtil.executeAnvilTest(anvil, player, data); AnvilFuseTestUtil.executeAnvilTest(anvil, player, data);

View file

@ -64,8 +64,7 @@ public class ConflictApiTests extends ConfigResetCustomAnvilTest {
AnvilFuseTestData legalResultData = new AnvilFuseTestData( AnvilFuseTestData legalResultData = new AnvilFuseTestData(
sharpness1, arthropods1, sharpness1, arthropods1,
illegalResult, illegalResult,
// TODO add expected price 2
null
); );
CAEnchantment sharpness = EnchantmentApi.getByKey(Enchantment.SHARPNESS.getKey()); CAEnchantment sharpness = EnchantmentApi.getByKey(Enchantment.SHARPNESS.getKey());

View file

@ -52,8 +52,7 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest {
AnvilFuseTestData legalResultData = new AnvilFuseTestData( AnvilFuseTestData legalResultData = new AnvilFuseTestData(
stick, stick, stick, stick,
null, stick, null, null, stick, null,
// TODO add expected price 2,
null,
null, null null, null
); );
@ -109,16 +108,14 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest {
AnvilFuseTestData legalResultData1 = new AnvilFuseTestData( AnvilFuseTestData legalResultData1 = new AnvilFuseTestData(
stick, stick, stick, stick,
null, stick2, null, null, stick2, null,
// TODO add expected price 2,
null,
null, null null, null
); );
AnvilFuseTestData legalResultData2 = new AnvilFuseTestData( AnvilFuseTestData legalResultData2 = new AnvilFuseTestData(
stick5, stick, stick5, stick,
null, stick10, null, null, stick10, null,
// TODO add expected price 10, // 2 * 5
null,
null, null null, null
); );

View file

@ -55,8 +55,7 @@ public class UnitRepairApiTests extends ConfigResetCustomAnvilTest {
AnvilFuseTestData legalResultData = new AnvilFuseTestData( AnvilFuseTestData legalResultData = new AnvilFuseTestData(
damagedPickaxe, diamond2, damagedPickaxe, diamond2,
resultPickaxe, resultPickaxe,
// TODO add expected price 2
null
); );
AnvilFuseTestUtil.executeAnvilTest(anvil, player, legalResultData); AnvilFuseTestUtil.executeAnvilTest(anvil, player, legalResultData);
@ -105,8 +104,7 @@ public class UnitRepairApiTests extends ConfigResetCustomAnvilTest {
AnvilFuseTestData legalResultData = new AnvilFuseTestData( AnvilFuseTestData legalResultData = new AnvilFuseTestData(
damagedPickaxe, stick2, damagedPickaxe, stick2,
resultPickaxe, resultPickaxe,
// TODO add expected price 2
null
); );
AnvilFuseTestUtil.executeAnvilTest(anvil, player, nullResultData); AnvilFuseTestUtil.executeAnvilTest(anvil, player, nullResultData);

View file

@ -136,6 +136,7 @@ public class AnvilFuseTestUtil {
ItemStack result = anvil.getItem(2); ItemStack result = anvil.getItem(2);
assertEqual(expectedResult, result); assertEqual(expectedResult, result);
assertPriceEqual(expectedPrice, anvil.getRepairCost()); assertPriceEqual(expectedPrice, anvil.getRepairCost());
} }
@ -158,7 +159,7 @@ public class AnvilFuseTestUtil {
public static void assertPriceEqual(Integer expectedPrice, int price){ public static void assertPriceEqual(Integer expectedPrice, int price){
if(expectedPrice == null) return; if(expectedPrice == null) return;
Assertions.assertEquals(price, expectedPrice); Assertions.assertEquals(expectedPrice, price);
} }
} }