From dca34b61c70567727f7237b4f7e00f5030dad3af Mon Sep 17 00:00:00 2001 From: Uko Koknevics Date: Sun, 3 Nov 2024 22:07:33 +0200 Subject: BREAK: Fix a bug in recipe-derived EMC calculation. This likely changes EMC values wildly! --- src/main/java/lv/enes/mc/eris_alchemy/Emc.java | 14 ++++++++++++-- .../eris_alchemy/fake_recipes/fake_recipes.json5 | 5 +++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/lv/enes/mc/eris_alchemy/Emc.java b/src/main/java/lv/enes/mc/eris_alchemy/Emc.java index cb782e5..f0b21db 100644 --- a/src/main/java/lv/enes/mc/eris_alchemy/Emc.java +++ b/src/main/java/lv/enes/mc/eris_alchemy/Emc.java @@ -54,6 +54,8 @@ public final class Emc { return FORMATTER.format(value); } + /** Returns the EMC for one item not the entire stack. + * @see #getTotal(ItemStack) */ public static OptionalDouble get(ItemStack stack) { if (stack.isEmpty()) { return OptionalDouble.empty(); @@ -74,6 +76,14 @@ public final class Emc { .findFirst(); } + /** getTotal = get * count */ + public static OptionalDouble getTotal(ItemStack stack) { + return get(stack).stream() + .map(x -> x * stack.getCount()) + .filter(x -> x > 0) + .findFirst(); + } + public static OptionalDouble get(ResourceLocation itemId) { return VALUES.getOrDefault(itemId, OptionalDouble.empty()); } @@ -133,7 +143,7 @@ public final class Emc { private static OptionalDouble calcEmcForIngredient(Ingredient ingredient) { return Arrays.stream(ingredient.getItems()) - .map(Emc::get) + .map(Emc::getTotal) .flatMapToDouble(OptionalDouble::stream) .average(); } @@ -155,7 +165,7 @@ public final class Emc { var remainderEmcOpt = recipe.remainder() .stream() - .map(Emc::get) + .map(Emc::getTotal) .collect(new OptionalDoubleSummer()); if (remainderEmcOpt.isEmpty()) { diff --git a/src/main/resources/data/eris_alchemy/eris_alchemy/fake_recipes/fake_recipes.json5 b/src/main/resources/data/eris_alchemy/eris_alchemy/fake_recipes/fake_recipes.json5 index 4511005..0422360 100644 --- a/src/main/resources/data/eris_alchemy/eris_alchemy/fake_recipes/fake_recipes.json5 +++ b/src/main/resources/data/eris_alchemy/eris_alchemy/fake_recipes/fake_recipes.json5 @@ -98,11 +98,12 @@ "count": 16 } }, { - // Carving a pumpkin with shears + // Carving a pumpkin with shears, + // but one seed gets lost bcs otherwise this makes carved pumpkins be worth 0 lol "output": "carved_pumpkin", "remainder": { "item": "pumpkin_seeds", - "count": 4 + "count": 3 }, "input": "pumpkin" }, { -- cgit v1.2.3