Skip to content

Commit

Permalink
fix: new bound book of binding recipes do not show up in recipe viewers
Browse files Browse the repository at this point in the history
Closes #1193
  • Loading branch information
klikli-dev committed Aug 17, 2024
1 parent 73d8d7d commit b0405d3
Show file tree
Hide file tree
Showing 15 changed files with 347 additions and 29 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -169,8 +169,8 @@ dependencies {
implementation "com.klikli_dev:modonomicon-${minecraft_version}-neoforge:${modonomicon_version}"

//theurgy
compileOnly "com.klikli_dev:theurgy-${minecraft_version}-neoforge:${theurgy_version}"
runtimeOnly "com.klikli_dev:theurgy-${minecraft_version}-neoforge:${theurgy_version}"
compileOnly ("com.klikli_dev:theurgy-${minecraft_version}-neoforge:${theurgy_version}") {transitive=false}
runtimeOnly ("com.klikli_dev:theurgy-${minecraft_version}-neoforge:${theurgy_version}") {transitive=false}

// emi
compileOnly "dev.emi:emi-neoforge:${emi_version}:api"
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ neogradle_version=7.0.158

# neo directly reads these properties
# the version the mappings were created for, does not need to match the current mc version
neogradle.subsystems.parchment.minecraftVersion=1.21
neogradle.subsystems.parchment.minecraftVersion=1.21.1
# the mapping version
neogradle.subsystems.parchment.mappingsVersion=2024.06.23

Expand All @@ -49,7 +49,7 @@ smartbrainlib_version=1.14.5
smartbrainlib_version_range=[1.14.5,)
almost_unified_version=0.5.0
almost_unified_version_range=[0.5.0,)
modonomicon_version=1.99.0
modonomicon_version=1.99.1
modonomicon_version_range=[1.95.0,)
theurgy_version=1.47.0
theurgy_version_range=[1.46.0,)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,19 @@
"title2": ""
},
{
"type": "modonomicon:crafting_recipe",
"type": "occultism:book_binding_recipe",
"anchor": "",
"condition": {
"type": "modonomicon:none"
},
"recipe_id_1": "occultism:crafting/book_of_binding_bound_foliot",
"recipe_id_1": "occultism:crafting/bound_book_of_binding",
"text": "book.occultism.dictionary_of_spirits.getting_started.books_of_binding.book_of_binding_bound_foliot_recipe.text",
"title1": "",
"title2": ""
"title2": "",
"unbound_book": {
"count": 1,
"id": "occultism:book_of_binding_foliot"
}
},
{
"type": "modonomicon:crafting_recipe",
Expand All @@ -93,35 +97,77 @@
"type": "modonomicon:none"
},
"recipe_id_1": "occultism:crafting/book_of_binding_djinni",
"recipe_id_2": "occultism:crafting/book_of_binding_bound_djinni",
"text": "",
"title1": "",
"title2": ""
},
{
"type": "occultism:book_binding_recipe",
"anchor": "",
"condition": {
"type": "modonomicon:none"
},
"recipe_id_1": "occultism:crafting/bound_book_of_binding",
"text": "",
"title1": "",
"title2": "",
"unbound_book": {
"count": 1,
"id": "occultism:book_of_binding_djinni"
}
},
{
"type": "modonomicon:crafting_recipe",
"anchor": "",
"condition": {
"type": "modonomicon:none"
},
"recipe_id_1": "occultism:crafting/book_of_binding_afrit",
"recipe_id_2": "occultism:crafting/book_of_binding_bound_afrit",
"text": "",
"title1": "",
"title2": ""
},
{
"type": "occultism:book_binding_recipe",
"anchor": "",
"condition": {
"type": "modonomicon:none"
},
"recipe_id_1": "occultism:crafting/bound_book_of_binding",
"text": "",
"title1": "",
"title2": "",
"unbound_book": {
"count": 1,
"id": "occultism:book_of_binding_afrit"
}
},
{
"type": "modonomicon:crafting_recipe",
"anchor": "",
"condition": {
"type": "modonomicon:none"
},
"recipe_id_1": "occultism:crafting/book_of_binding_marid",
"recipe_id_2": "occultism:crafting/book_of_binding_bound_marid",
"text": "",
"title1": "",
"title2": ""
},
{
"type": "occultism:book_binding_recipe",
"anchor": "",
"condition": {
"type": "modonomicon:none"
},
"recipe_id_1": "occultism:crafting/bound_book_of_binding",
"text": "",
"title1": "",
"title2": "",
"unbound_book": {
"count": 1,
"id": "occultism:book_of_binding_marid"
}
},
{
"type": "occultism:spirit_fire_recipe",
"anchor": "",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public boolean matches(CraftingInput input, @NotNull Level level) {
}
}

var boundBook = this.getBoundBookFromBook(bookOfBinding);
var boundBook = getBoundBookFromBook(bookOfBinding);
if (boundBook.isEmpty())
return ItemStack.EMPTY;

Expand All @@ -92,7 +92,7 @@ public boolean matches(CraftingInput input, @NotNull Level level) {
return boundBook;
}

public ItemStack getBoundBookFromBook(ItemStack book) {
public static ItemStack getBoundBookFromBook(ItemStack book) {
if (book.is(OccultismItems.BOOK_OF_BINDING_FOLIOT))
return new ItemStack(OccultismItems.BOOK_OF_BINDING_BOUND_FOLIOT.get());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,7 @@
import com.klikli_dev.modonomicon.api.datagen.book.page.*;
import com.klikli_dev.occultism.Occultism;
import com.klikli_dev.occultism.datagen.book.FamiliarRitualsCategory;
import com.klikli_dev.occultism.integration.modonomicon.pages.BookRitualRecipePageModel;
import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePageModel;
import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritTradeRecipePageModel;
import com.klikli_dev.occultism.integration.modonomicon.pages.*;
import com.klikli_dev.occultism.registry.OccultismBlocks;
import com.klikli_dev.occultism.registry.OccultismItems;
import com.klikli_dev.theurgy.registry.ItemRegistry;
Expand Down Expand Up @@ -1060,8 +1058,9 @@ There is a type of book corresponding to each type (or tier) of spirit.
""".formatted(COLOR_PURPLE));

this.context().page("book_of_binding_bound_foliot_recipe");
var bookOfBindingBoundFoliotRecipe = BookCraftingRecipePageModel.create()
.withRecipeId1(this.modLoc("crafting/book_of_binding_bound_foliot"))
var bookOfBindingBoundFoliotRecipe = BookBindingCraftingRecipePageModel.create()
.withRecipeId1()
.withUnboundBook(OccultismItems.BOOK_OF_BINDING_FOLIOT.toStack())
.withText(this.context().pageText());
this.lang().add(this.context().pageText(),
"""
Expand All @@ -1070,20 +1069,34 @@ There is a type of book corresponding to each type (or tier) of spirit.

this.context().page("book_of_binding_djinni_recipe");
var bookOfBindingDjinniRecipe = BookCraftingRecipePageModel.create()
.withRecipeId1(this.modLoc("crafting/book_of_binding_djinni"))
.withRecipeId2(this.modLoc("crafting/book_of_binding_bound_djinni"));
.withRecipeId1(this.modLoc("crafting/book_of_binding_djinni"));

this.context().page("book_of_binding_bound_djinni_recipe");
var bookOfBoundBindingDjinniRecipe = BookBindingCraftingRecipePageModel.create()
.withRecipeId1()
.withUnboundBook(OccultismItems.BOOK_OF_BINDING_DJINNI.toStack());
//no text

this.context().page("book_of_binding_afrit_recipe");
var bookOfBindingAfritRecipe = BookCraftingRecipePageModel.create()
.withRecipeId1(this.modLoc("crafting/book_of_binding_afrit"))
.withRecipeId2(this.modLoc("crafting/book_of_binding_bound_afrit"));
.withRecipeId1(this.modLoc("crafting/book_of_binding_afrit"));
//no text

this.context().page("book_of_binding_bound_afrit_recipe");
var bookOfBoundBindingAfritRecipe = BookBindingCraftingRecipePageModel.create()
.withRecipeId1()
.withUnboundBook(OccultismItems.BOOK_OF_BINDING_AFRIT.toStack());
//no text

this.context().page("book_of_binding_marid_recipe");
var bookOfBindingMaridRecipe = BookCraftingRecipePageModel.create()
.withRecipeId1(this.modLoc("crafting/book_of_binding_marid"))
.withRecipeId2(this.modLoc("crafting/book_of_binding_bound_marid"));
.withRecipeId1(this.modLoc("crafting/book_of_binding_marid"));
//no text

this.context().page("book_of_binding_bound_marid_recipe");
var bookOfBoundBindingMaridRecipe = BookBindingCraftingRecipePageModel.create()
.withRecipeId1()
.withUnboundBook(OccultismItems.BOOK_OF_BINDING_MARID.toStack());
//no text

this.context().page("book_of_binding_empty");
Expand Down Expand Up @@ -1113,8 +1126,11 @@ There is a type of book corresponding to each type (or tier) of spirit.
bookOfBindingFoliotRecipe,
bookOfBindingBoundFoliotRecipe,
bookOfBindingDjinniRecipe,
bookOfBoundBindingDjinniRecipe,
bookOfBindingAfritRecipe,
bookOfBoundBindingAfritRecipe,
bookOfBindingMaridRecipe,
bookOfBoundBindingMaridRecipe,
alternativeBooks,
bookOfBindingEmptyRecipe
);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.klikli_dev.occultism.integration;

import com.klikli_dev.occultism.Occultism;
import com.klikli_dev.occultism.crafting.recipe.BoundBookOfBindingRecipe;
import com.klikli_dev.occultism.registry.OccultismItems;
import net.minecraft.core.NonNullList;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.*;

import java.util.List;

public class BoundBookRecipeMaker {

public static List<RecipeHolder<CraftingRecipe>> createRecipes() {
return List.of(
makeRecipe(new ItemStack(OccultismItems.BOOK_OF_BINDING_FOLIOT.get())),
makeRecipe(new ItemStack(OccultismItems.BOOK_OF_BINDING_DJINNI.get())),
makeRecipe(new ItemStack(OccultismItems.BOOK_OF_BINDING_AFRIT.get())),
makeRecipe(new ItemStack(OccultismItems.BOOK_OF_BINDING_MARID.get()))
);
}

private static RecipeHolder<CraftingRecipe> makeRecipe(ItemStack bookOfBinding) {
String group = "occultism.bound_book_of_binding";
var id = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, group + bookOfBinding.getDescriptionId());
var recipe = new ShapelessRecipe(group, CraftingBookCategory.MISC,
BoundBookOfBindingRecipe.getBoundBookFromBook(bookOfBinding),
NonNullList.of(Ingredient.EMPTY, Ingredient.of(OccultismItems.DICTIONARY_OF_SPIRITS), Ingredient.of(bookOfBinding)));
return new RecipeHolder<>(id, recipe);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.klikli_dev.occultism.crafting.recipe.MinerRecipe;
import com.klikli_dev.occultism.crafting.recipe.RitualRecipe;
import com.klikli_dev.occultism.crafting.recipe.SpiritFireRecipe;
import com.klikli_dev.occultism.integration.BoundBookRecipeMaker;
import com.klikli_dev.occultism.integration.emi.impl.recipes.CrushingRecipeCategory;
import com.klikli_dev.occultism.integration.emi.impl.recipes.MinerRecipeCategory;
import com.klikli_dev.occultism.integration.emi.impl.recipes.RitualRecipeCategory;
Expand All @@ -16,12 +17,16 @@
import dev.emi.emi.api.EmiInitRegistry;
import dev.emi.emi.api.EmiPlugin;
import dev.emi.emi.api.EmiRegistry;
import dev.emi.emi.api.recipe.EmiCraftingRecipe;
import dev.emi.emi.api.recipe.EmiRecipeCategory;
import dev.emi.emi.api.render.EmiTexture;
import dev.emi.emi.api.stack.EmiIngredient;
import dev.emi.emi.api.stack.EmiStack;
import net.minecraft.core.RegistryAccess;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.CraftingRecipe;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.RecipeHolder;
import net.minecraft.world.item.crafting.RecipeManager;
Expand Down Expand Up @@ -85,5 +90,10 @@ public void register(EmiRegistry emiRegistry) {
for(RecipeHolder<RitualRecipe> recipe:manager.getAllRecipesFor(OccultismRecipes.RITUAL_TYPE.get())){
emiRegistry.addRecipe(new RitualRecipeCategory(recipe));
}

for(RecipeHolder<CraftingRecipe> recipe: BoundBookRecipeMaker.createRecipes()){
var ingredients = recipe.value().getIngredients().stream().map(EmiIngredient::of).toList();
emiRegistry.addRecipe(new EmiCraftingRecipe(ingredients, EmiStack.of(recipe.value().getResultItem(RegistryAccess.EMPTY)), recipe.id(), true));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,8 @@
import com.klikli_dev.occultism.common.container.storage.StableWormholeContainer;
import com.klikli_dev.occultism.common.container.storage.StorageControllerContainer;
import com.klikli_dev.occultism.common.container.storage.StorageRemoteContainer;
import com.klikli_dev.occultism.integration.jei.JeiSettings;
import com.klikli_dev.occultism.integration.jei.impl.recipes.CrushingRecipeCategory;
import com.klikli_dev.occultism.integration.jei.impl.recipes.MinerRecipeCategory;
import com.klikli_dev.occultism.integration.jei.impl.recipes.RitualRecipeCategory;
import com.klikli_dev.occultism.integration.jei.impl.recipes.SpiritFireRecipeCategory;
import com.klikli_dev.occultism.integration.BoundBookRecipeMaker;
import com.klikli_dev.occultism.integration.jei.impl.recipes.*;
import com.klikli_dev.occultism.registry.OccultismBlocks;
import com.klikli_dev.occultism.registry.OccultismItems;
import com.klikli_dev.occultism.registry.OccultismRecipes;
Expand Down Expand Up @@ -80,6 +77,8 @@ public void registerRecipes(IRecipeRegistration registration) {
ClientLevel level = Minecraft.getInstance().level;
RecipeManager recipeManager = level.getRecipeManager();

registration.addRecipes(RecipeTypes.CRAFTING, BoundBookRecipeMaker.createRecipes());

var spiritFireRecipes = recipeManager.getAllRecipesFor(OccultismRecipes.SPIRIT_FIRE_TYPE.get());
registration.addRecipes(JeiRecipeTypes.SPIRIT_FIRE, spiritFireRecipes);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ public static class Page {
public static final ResourceLocation SPIRIT_FIRE_RECIPE = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "spirit_fire_recipe");
public static final ResourceLocation SPIRIT_TRADE_RECIPE = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "spirit_trade_recipe");
public static final ResourceLocation RITUAL_RECIPE = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "ritual_recipe");
public static final ResourceLocation BOOK_BINDING_RECIPE = ResourceLocation.fromNamespaceAndPath(Occultism.MODID, "book_binding_recipe");
}

public static class I18n {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.klikli_dev.occultism.integration.modonomicon;

import com.klikli_dev.modonomicon.data.LoaderRegistry;
import com.klikli_dev.occultism.integration.modonomicon.pages.BookBindingCraftingRecipePage;
import com.klikli_dev.occultism.integration.modonomicon.pages.BookRitualRecipePage;
import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritFireRecipePage;
import com.klikli_dev.occultism.integration.modonomicon.pages.BookSpiritTradeRecipePage;
Expand All @@ -12,6 +13,7 @@ public static void onCommonSetup(final FMLCommonSetupEvent event) {
LoaderRegistry.registerPageLoader(OccultismModonomiconConstants.Page.SPIRIT_FIRE_RECIPE, BookSpiritFireRecipePage::fromJson, BookSpiritFireRecipePage::fromNetwork);
LoaderRegistry.registerPageLoader(OccultismModonomiconConstants.Page.SPIRIT_TRADE_RECIPE, BookSpiritTradeRecipePage::fromJson, BookSpiritTradeRecipePage::fromNetwork);
LoaderRegistry.registerPageLoader(OccultismModonomiconConstants.Page.RITUAL_RECIPE, BookRitualRecipePage::fromJson, BookRitualRecipePage::fromNetwork);
LoaderRegistry.registerPageLoader(OccultismModonomiconConstants.Page.BOOK_BINDING_RECIPE, BookBindingCraftingRecipePage::fromJson, BookBindingCraftingRecipePage::fromNetwork);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ public static void onClientSetup(FMLClientSetupEvent event) {
OccultismModonomiconConstants.Page.RITUAL_RECIPE,
p -> new BookRitualRecipePageRenderer<>((BookRitualRecipePage) p) {
});
PageRendererRegistry.registerPageRenderer(
OccultismModonomiconConstants.Page.BOOK_BINDING_RECIPE,
p -> new BookBindingCraftingRecipePageRenderer((BookBindingCraftingRecipePage) p) {
});
}

}
Loading

0 comments on commit b0405d3

Please sign in to comment.