linear xp cost pre anvil unit test

This commit is contained in:
alexcrea 2025-07-05 04:03:11 +02:00
parent 7f19783beb
commit b6f5c7b7a1
Signed by: alexcrea
GPG key ID: E346CD16413450E3

View file

@ -134,6 +134,92 @@ public class CustomAnvilRecipeApiTests extends ConfigResetCustomAnvilTest {
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData2); AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData2);
} }
@Test
public void testLinearXpCost() {
String recipeName = "stick_recipe";
ItemStack stick = new ItemStackMock(Material.STICK);
ItemStack stick2 = new ItemStackMock(Material.STICK, 2);
ItemStack stick5 = new ItemStackMock(Material.STICK, 5);
ItemStack stick10 = new ItemStackMock(Material.STICK, 10);
AnvilFuseTestData nullResultData = new AnvilFuseTestData(
stick, stick,
null
);
AnvilFuseTestData legalResultData1 = new AnvilFuseTestData(
stick, stick,
null, stick2, null,
1,
null, null
);
AnvilFuseTestData legalResultData2 = new AnvilFuseTestData(
stick5, stick,
null, stick10, null,
4,
null, null
);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData);
AnvilRecipeBuilder builder = new AnvilRecipeBuilder(recipeName);
builder.setExactCount(false)
.setLeftItem(stick)
.setResultItem(stick2)
.setLevelCostPerCraft(0)
.setLinearXpCostPerCraft(10);
assertTrue(builder.registerIfAbsent());
// Now working test
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData1);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData2);
}
@Test
public void testLinearXpCostRemoveExact() {
String recipeName = "stick_recipe";
ItemStack stick = new ItemStackMock(Material.STICK);
ItemStack stick2 = new ItemStackMock(Material.STICK, 2);
ItemStack stick5 = new ItemStackMock(Material.STICK, 5);
ItemStack stick10 = new ItemStackMock(Material.STICK, 10);
AnvilFuseTestData nullResultData = new AnvilFuseTestData(
stick, stick,
null
);
AnvilFuseTestData legalResultData1 = new AnvilFuseTestData(
stick, stick,
null, stick2, null,
2,
null, null
);
AnvilFuseTestData legalResultData2 = new AnvilFuseTestData(
stick5, stick,
null, stick10, null,
5,
null, null
);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, nullResultData);
AnvilRecipeBuilder builder = new AnvilRecipeBuilder(recipeName);
builder.setExactCount(false)
.setLeftItem(stick)
.setResultItem(stick2)
.setLinearXpCostPerCraft(10)
.setRemoveExactLinearXp(true);
assertTrue(builder.registerIfAbsent());
// Now working test
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData1);
AnvilFuseTestUtil.executeAnvilFuseTest(anvil, player, legalResultData2);
}
@Nullable @Nullable
public static AnvilCustomRecipe getByName(String name){ public static AnvilCustomRecipe getByName(String name){
for (AnvilCustomRecipe registeredRecipe : CustomAnvilRecipeApi.getRegisteredRecipes()) { for (AnvilCustomRecipe registeredRecipe : CustomAnvilRecipeApi.getRegisteredRecipes()) {