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 ChatColor.stripColor(it.displayName) else if (useColor) 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,35 +45,42 @@ object AnvilXpUtil {
anvilCost 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 /* 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 need to wait for the event to end before overriding it, this ensures that
* we have the final say in the process. */ * we have the final say in the process. */
DependencyManager.scheduler.scheduleOnEntity( DependencyManager.scheduler.scheduleOnEntity(
CustomAnvil.instance, player, CustomAnvil.instance, player
Runnable { ) {
inventory.maximumRepairCost = // retry after a tick
if (ConfigOptions.doRemoveCostLimit || ignoreRules) { inventory.maximumRepairCost = maximumRepairCost
Int.MAX_VALUE inventory.repairCost = finalAnvilCost
} else { // TODO for 2.x.x use anvil view & set directly there
ConfigOptions.maxAnvilCost + 1
}
inventory.repairCost = finalAnvilCost if (player !is Player) return@scheduleOnEntity
view.setProperty(REPAIR_COST, finalAnvilCost)
player.openInventory.setProperty(REPAIR_COST, finalAnvilCost)
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) && finalAnvilCost < inventory.maximumRepairCost
finalAnvilCost < inventory.maximumRepairCost
DependencyManager.packetManager.setInstantBuild(player, bypassToExpensive) DependencyManager.packetManager.setInstantBuild(player, bypassToExpensive)
} }
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);
} }
} }