From c3d482c78f41b549fe3eafd7f42bdf875ca9ade8 Mon Sep 17 00:00:00 2001 From: Aram Date: Thu, 8 May 2025 17:47:43 +0200 Subject: [PATCH] Recipe Book is workingggg!!!!!!!!! --- .../common/mixin/RecipeBookSettingsMixin.java | 1 + .../mod/common/mixin/RecipeBookTypeMixin.java | 1 + .../mixin/client/ClientRecipeBookMixin.java | 9 ++++- .../client/RecipeBookCategoriesMixin.java | 4 +- .../mod/common/CobblemonRecipeCategories.kt | 5 ++- .../block/brewingstand/BrewingStandMenu.kt | 37 ++++++++++++++++--- .../brewingstand/BrewingStandBookCategory.kt | 5 +-- .../brewingstand/BrewingStandRecipe.kt | 2 +- .../brewing_stand/test_brewing_stand.json | 4 ++ 9 files changed, 53 insertions(+), 15 deletions(-) create mode 100644 common/src/main/resources/data/cobblemon/recipe/brewing_stand/test_brewing_stand.json diff --git a/common/src/main/java/com/cobblemon/mod/common/mixin/RecipeBookSettingsMixin.java b/common/src/main/java/com/cobblemon/mod/common/mixin/RecipeBookSettingsMixin.java index 88a8e7b44e..63c494048f 100644 --- a/common/src/main/java/com/cobblemon/mod/common/mixin/RecipeBookSettingsMixin.java +++ b/common/src/main/java/com/cobblemon/mod/common/mixin/RecipeBookSettingsMixin.java @@ -28,6 +28,7 @@ public class RecipeBookSettingsMixin { @Inject(method = "", at = @At("TAIL")) private void cobblemon$init(CallbackInfo ci) { states.put(RecipeBookType.valueOf("COOKING_POT"), new RecipeBookSettings.TypeSettings(true, true)); + states.put(RecipeBookType.valueOf("BREWING_STAND"), new RecipeBookSettings.TypeSettings(true, true)); } } diff --git a/common/src/main/java/com/cobblemon/mod/common/mixin/RecipeBookTypeMixin.java b/common/src/main/java/com/cobblemon/mod/common/mixin/RecipeBookTypeMixin.java index 57a5ec20be..e3d803619f 100644 --- a/common/src/main/java/com/cobblemon/mod/common/mixin/RecipeBookTypeMixin.java +++ b/common/src/main/java/com/cobblemon/mod/common/mixin/RecipeBookTypeMixin.java @@ -41,6 +41,7 @@ public class RecipeBookTypeMixin { private static void cobblemon$addRecipeBookType(CallbackInfo ci) { ArrayList types = new ArrayList<>(List.of($VALUES)); types.add(cobblemon$createBookType("COOKING_POT", $VALUES.length)); + types.add(cobblemon$createBookType("BREWING_STAND", $VALUES.length + 1)); $VALUES = types.toArray(RecipeBookType[]::new); } } diff --git a/common/src/main/java/com/cobblemon/mod/common/mixin/client/ClientRecipeBookMixin.java b/common/src/main/java/com/cobblemon/mod/common/mixin/client/ClientRecipeBookMixin.java index 792aaacb7e..ce14699f21 100644 --- a/common/src/main/java/com/cobblemon/mod/common/mixin/client/ClientRecipeBookMixin.java +++ b/common/src/main/java/com/cobblemon/mod/common/mixin/client/ClientRecipeBookMixin.java @@ -12,6 +12,7 @@ import com.cobblemon.mod.common.CobblemonRecipeCategories; import com.cobblemon.mod.common.item.crafting.CookingPotBookCategory; import com.cobblemon.mod.common.item.crafting.CookingPotRecipe; import com.cobblemon.mod.common.item.crafting.CookingPotShapelessRecipe; +import com.cobblemon.mod.common.item.crafting.brewingstand.BrewingStandBookCategory; import com.cobblemon.mod.common.item.crafting.brewingstand.BrewingStandRecipe; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -62,7 +63,13 @@ public abstract class ClientRecipeBookMixin { } cir.setReturnValue(var7); } else if (recipe2 instanceof BrewingStandRecipe) { - cir.setReturnValue(CobblemonRecipeCategories.BREWING_STAND.toVanillaCategory()); + BrewingStandBookCategory category = ((BrewingStandRecipe) recipe2).getCategory(); + RecipeBookCategories var7; + switch (category) { + case BrewingStandBookCategory.FOODS -> var7 = CobblemonRecipeCategories.BREWING_STAND_FOOD.toVanillaCategory(); + default -> throw new MatchException(null, null); + } + cir.setReturnValue(var7); } } diff --git a/common/src/main/java/com/cobblemon/mod/common/mixin/client/RecipeBookCategoriesMixin.java b/common/src/main/java/com/cobblemon/mod/common/mixin/client/RecipeBookCategoriesMixin.java index 5c7907a1f6..a0f22a64db 100644 --- a/common/src/main/java/com/cobblemon/mod/common/mixin/client/RecipeBookCategoriesMixin.java +++ b/common/src/main/java/com/cobblemon/mod/common/mixin/client/RecipeBookCategoriesMixin.java @@ -55,6 +55,7 @@ public class RecipeBookCategoriesMixin { types.add(cobblemon$createCategory("COOKING_POT_BAITS", $VALUES.length + 3, new ItemStack(CobblemonItems.PERSIM_BERRY))); types.add(cobblemon$createCategory("COOKING_POT_MISC", $VALUES.length + 4, new ItemStack(CobblemonItems.MIRROR_HERB))); types.add(cobblemon$createCategory("BREWING_STAND", $VALUES.length + 5, new ItemStack(Items.BREWING_STAND))); + types.add(cobblemon$createCategory("BREWING_STAND_FOOD", $VALUES.length + 6, new ItemStack(CobblemonItems.HP_UP))); $VALUES = types.toArray(RecipeBookCategories[]::new); } @@ -71,7 +72,8 @@ public class RecipeBookCategoriesMixin { return; } else if (recipeBookType == RecipeBookType.valueOf("BREWING_STAND")) { List var10000 = ImmutableList.of( - CobblemonRecipeCategories.BREWING_STAND.toVanillaCategory()); + CobblemonRecipeCategories.BREWING_STAND.toVanillaCategory(), + CobblemonRecipeCategories.BREWING_STAND_FOOD.toVanillaCategory()); cir.setReturnValue(var10000); return; } diff --git a/common/src/main/kotlin/com/cobblemon/mod/common/CobblemonRecipeCategories.kt b/common/src/main/kotlin/com/cobblemon/mod/common/CobblemonRecipeCategories.kt index 6c302a96f3..258eca248d 100644 --- a/common/src/main/kotlin/com/cobblemon/mod/common/CobblemonRecipeCategories.kt +++ b/common/src/main/kotlin/com/cobblemon/mod/common/CobblemonRecipeCategories.kt @@ -17,7 +17,8 @@ enum class CobblemonRecipeCategories { COOKING_POT_MEDICINES("COOKING_POT_MEDICINES"), COOKING_POT_BAITS("COOKING_POT_BAITS"), COOKING_POT_MISC("COOKING_POT_MISC"), - BREWING_STAND("BREWING_STAND"); + BREWING_STAND("BREWING_STAND"), + BREWING_STAND_FOOD("BREWING_STAND_FOOD"),; companion object { val customAggregateCategories: Map> = mapOf( @@ -25,7 +26,7 @@ enum class CobblemonRecipeCategories { COOKING_POT_FOODS.toVanillaCategory(), COOKING_POT_MISC.toVanillaCategory(), COOKING_POT_MEDICINES.toVanillaCategory(), COOKING_POT_BAITS.toVanillaCategory() ), BREWING_STAND.toVanillaCategory() to listOf( - BREWING_STAND.toVanillaCategory() + BREWING_STAND_FOOD.toVanillaCategory() ) ) } diff --git a/common/src/main/kotlin/com/cobblemon/mod/common/block/brewingstand/BrewingStandMenu.kt b/common/src/main/kotlin/com/cobblemon/mod/common/block/brewingstand/BrewingStandMenu.kt index aab5aead54..0c903e3464 100644 --- a/common/src/main/kotlin/com/cobblemon/mod/common/block/brewingstand/BrewingStandMenu.kt +++ b/common/src/main/kotlin/com/cobblemon/mod/common/block/brewingstand/BrewingStandMenu.kt @@ -131,15 +131,21 @@ class BrewingStandMenu( fun getFuel(): Int = brewingStandData[1] fun getBrewingTicks(): Int = brewingStandData[0] override fun fillCraftSlotsStackedContents(itemHelper: StackedContents) { - TODO("Not yet implemented") + for (i in 0 until brewingStand.containerSize) { + val itemStack = brewingStand.getItem(i) + if (itemStack.isEmpty) continue + itemHelper.accountSimpleStack(itemStack) + } } override fun clearCraftingContent() { - TODO("Not yet implemented") + for (i in 0 until brewingStand.containerSize) { + brewingStand.setItem(i, ItemStack.EMPTY) + } } override fun recipeMatches(recipe: RecipeHolder): Boolean { - TODO("Not yet implemented") + return false } override fun getResultSlotIndex(): Int { @@ -163,7 +169,12 @@ class BrewingStandMenu( } override fun shouldMoveToInventory(slotIndex: Int): Boolean { - TODO("Not yet implemented") + return when (slotIndex) { + 0, 1, 2 -> false + 3 -> true + 4 -> false + else -> true + } } override fun slotChanged( @@ -171,7 +182,11 @@ class BrewingStandMenu( dataSlotIndex: Int, stack: ItemStack ) { - TODO("Not yet implemented") + if (dataSlotIndex == 3) { + resultContainer.setItem(0, stack) + } else if (dataSlotIndex == 4) { + ingredientSlot.set(stack) + } } override fun dataChanged( @@ -179,7 +194,17 @@ class BrewingStandMenu( dataSlotIndex: Int, value: Int ) { - TODO("Not yet implemented") + if (dataSlotIndex == 0) { + val brewTime = value + if (brewTime == 0) { + resultContainer.setItem(0, ItemStack.EMPTY) + } + } else if (dataSlotIndex == 1) { + val fuel = value + if (fuel == 0) { + resultContainer.setItem(0, ItemStack.EMPTY) + } + } } class PotionSlot(container: Container, slot: Int, x: Int, y: Int) : Slot(container, slot, x, y) { diff --git a/common/src/main/kotlin/com/cobblemon/mod/common/item/crafting/brewingstand/BrewingStandBookCategory.kt b/common/src/main/kotlin/com/cobblemon/mod/common/item/crafting/brewingstand/BrewingStandBookCategory.kt index 4bb85aa0de..bba43b50b6 100644 --- a/common/src/main/kotlin/com/cobblemon/mod/common/item/crafting/brewingstand/BrewingStandBookCategory.kt +++ b/common/src/main/kotlin/com/cobblemon/mod/common/item/crafting/brewingstand/BrewingStandBookCategory.kt @@ -21,10 +21,7 @@ enum class BrewingStandBookCategory( private val categoryName: String, private val categoryId: Int ) : StringRepresentable { - FOODS("foods", 0), - MEDICINES("medicines", 1), - BAITS("baits", 2), - MISC("misc", 3); + FOODS("foods", 0); override fun getSerializedName() = categoryName private fun getCategoryId() = categoryId diff --git a/common/src/main/kotlin/com/cobblemon/mod/common/item/crafting/brewingstand/BrewingStandRecipe.kt b/common/src/main/kotlin/com/cobblemon/mod/common/item/crafting/brewingstand/BrewingStandRecipe.kt index 909532e611..2ca4f89f30 100644 --- a/common/src/main/kotlin/com/cobblemon/mod/common/item/crafting/brewingstand/BrewingStandRecipe.kt +++ b/common/src/main/kotlin/com/cobblemon/mod/common/item/crafting/brewingstand/BrewingStandRecipe.kt @@ -43,7 +43,7 @@ class BrewingStandRecipe( companion object { val CODEC: MapCodec = RecordCodecBuilder.mapCodec { instance -> instance.group( - BrewingStandBookCategory.Companion.CODEC.fieldOf("category").orElse(BrewingStandBookCategory.MISC) + BrewingStandBookCategory.Companion.CODEC.fieldOf("category").orElse(BrewingStandBookCategory.FOODS) .forGetter { recipe -> recipe.category } ).apply(instance, ::BrewingStandRecipe) } diff --git a/common/src/main/resources/data/cobblemon/recipe/brewing_stand/test_brewing_stand.json b/common/src/main/resources/data/cobblemon/recipe/brewing_stand/test_brewing_stand.json new file mode 100644 index 0000000000..7a73bec54d --- /dev/null +++ b/common/src/main/resources/data/cobblemon/recipe/brewing_stand/test_brewing_stand.json @@ -0,0 +1,4 @@ +{ + "type": "cobblemon:brewing_stand", + "category": "foods" +} \ No newline at end of file