Why does this exist?
Without this library you need multiple mixins, this library handles that for you!
More than 1 mod can use this library at the same time!
Currently, I am not aware of any other libraries that do this
Currently, this library only supports Fabric 1.20.4, 1.20.6, and 1.21 If you want it for a different version, create an issue on the GitHub page
in onInitializeClient
:
ChangeGroupForRecipeCallback.EVENT.register(recipeEntry -> {
if (recipeEntry.value() instanceof CustomRecipe customRecipe) {
if (customRecipe.getResult(null).isIn(CustomItemTags.FRUIT)) {
return Optional.of(CustomRecipeBookAdditions.FRUIT_GROUP);
}
if (customRecipe.getResult(null).isIn(CustomItemTags.MEAT)) {
return Optional.of(CustomRecipeBookAdditions.MEAT_GROUP);
}
if (customRecipe.getResult(null).isIn(CustomItemTags.METALS) || customRecipe.getResult(null).isIn(CustomItemTags.GEMS)) {
return Optional.of(CustomRecipeBookAdditions.METALS_AND_GEMS_GROUP);
}
}
return Optional.empty();
});
Then, it is recommended to create a new class to store all of the groups and categories, like this:
public class CustomRecipeBookAdditions {
public static final RecipeBookGroup CUSTOM_SEARCH_GROUP = RecipeBookLibApi.registerGroup("CUSTOM_SEARCH_GROUP", new ItemStack(Items.COMPASS));
public static final RecipeBookGroup FRUIT_GROUP = RecipeBookLibApi.registerGroup("FRUIT_GROUP", new ItemStack(Items.APPLE));
public static final RecipeBookGroup MEAT_GROUP = RecipeBookLibApi.registerGroup("MEAT_GROUP", new ItemStack(Items.COOKED_BEEF));
public static final RecipeBookGroup METALS_AND_GEMS_GROUP = RecipeBookLibApi.registerGroup("METALS_AND_GEMS_GROUP", new ItemStack(Items.IRON_INGOT), new ItemStack(Items.EMERALD));
public static final List<RecipeBookGroup> CUSTOM_CRAFTING_GROUPS = ImmutableList.of(
CUSTOM_SEARCH_GROUP,
FRUIT_GROUP,
MEAT_GROUP,
METALS_AND_GEMS_GROUP
);
public static final RecipeBookCategory CUSTOM_CRAFTING = RecipeBookLibApi.registerCategory("CUSTOM_CRAFTING", CUSTOM_CRAFTING_GROUPS);
static {
RecipeBookLibApi.registerSearchGroup(CUSTOM_SEARCH_GROUP, List.of(
FRUIT_GROUP,
MEAT_GROUP,
METALS_AND_GEMS_GROUP
));
}
public static void registerRecipeBookAdditions() {
YourMod.LOGGER.info("Registering recipe book additions for " + YourMod.MOD_ID);
}
}
and don't forget to "wake up" the class by calling registerRecipeBookAdditions
in onInitialize
.
Then, in your custom screen handler that extends AbstractRecipeScreenHandler
, you can use the custom category like this:
@Override
public RecipeBookCategory getCategory() {
return CustomRecipeBookAdditions.CUSTOM_CRAFTING;
}
RecipeBookLib by 7410 is licensed under CC BY-NC 4.0