Skip to content

Commit

Permalink
feat: enable JEI integration now that jei is updated
Browse files Browse the repository at this point in the history
  • Loading branch information
klikli-dev committed Apr 3, 2023
1 parent 8f2b124 commit 87a4aa4
Show file tree
Hide file tree
Showing 9 changed files with 730 additions and 575 deletions.
7 changes: 3 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -153,10 +153,9 @@ dependencies {
minecraft "net.minecraftforge:forge:${forge_version}"

//Jei
//TODO: Enable when updated
// compileOnly fg.deobf("mezz.jei:jei-${jei_mc_version}-common-api:${jei_version}")
// compileOnly fg.deobf("mezz.jei:jei-${jei_mc_version}-forge-api:${jei_version}")
// runtimeOnly fg.deobf("mezz.jei:jei-${jei_mc_version}-forge:${jei_version}")
compileOnly fg.deobf("mezz.jei:jei-${jei_mc_version}-common-api:${jei_version}")
compileOnly fg.deobf("mezz.jei:jei-${jei_mc_version}-forge-api:${jei_version}")
runtimeOnly fg.deobf("mezz.jei:jei-${jei_mc_version}-forge:${jei_version}")

//curios
compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_mc_version}-${curios_version}:api")
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ mapping_channel=parchment
mapping_version=1.19.3-2023.03.12-1.19.4

jei_mc_version=1.19.4
jei_version=TODO
jei_version=13.0.0.1
curios_mc_version=1.19.4
curios_version=5.1.4.2
geckolib_mc_version=1.19.4
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,90 +22,124 @@

package com.github.klikli_dev.occultism.integration.jei;

//TODO: Re-enable
//@mezz.jei.api.JeiPlugin
//public class JeiPlugin implements IModPlugin {
//
// protected static IJeiRuntime runtime;
//
// public static IJeiRuntime getJeiRuntime() {
// return runtime;
// }
//
// @Override
// public ResourceLocation getPluginUid() {
// return new ResourceLocation(Occultism.MODID, "jei");
// }
//
// @Override
// public void registerCategories(IRecipeCategoryRegistration registration) {
// registration.addRecipeCategories(new SpiritFireRecipeCategory(registration.getJeiHelpers().getGuiHelper()));
// registration.addRecipeCategories(new CrushingRecipeCategory(registration.getJeiHelpers().getGuiHelper()));
// registration.addRecipeCategories(new MinerRecipeCategory(registration.getJeiHelpers().getGuiHelper()));
// registration.addRecipeCategories(new RitualRecipeCategory(registration.getJeiHelpers().getGuiHelper()));
// }
//
// @Override
// public void registerRecipes(IRecipeRegistration registration) {
// ClientLevel level = Minecraft.getInstance().level;
// RecipeManager recipeManager = level.getRecipeManager();
//
// List<SpiritFireRecipe> spiritFireRecipes = recipeManager.getAllRecipesFor(OccultismRecipes.SPIRIT_FIRE_TYPE.get());
// registration.addRecipes(JeiRecipeTypes.SPIRIT_FIRE, spiritFireRecipes);
//
// List<CrushingRecipe> crushingRecipes = recipeManager.getAllRecipesFor(OccultismRecipes.CRUSHING_TYPE.get());
// registration.addRecipes(JeiRecipeTypes.CRUSHING, crushingRecipes);
//
// List<MinerRecipe> minerRecipes = recipeManager.getAllRecipesFor(OccultismRecipes.MINER_TYPE.get());
// registration.addRecipes(JeiRecipeTypes.MINER, minerRecipes);
//
// List<RitualRecipe> ritualRecipes = recipeManager.getAllRecipesFor(OccultismRecipes.RITUAL_TYPE.get());
// registration.addRecipes(JeiRecipeTypes.RITUAL, ritualRecipes);
//
// this.registerIngredientInfo(registration, OccultismItems.TALLOW.get());
// this.registerIngredientInfo(registration, OccultismBlocks.OTHERSTONE.get());
// this.registerIngredientInfo(registration, OccultismBlocks.OTHERWORLD_LOG.get());
// this.registerIngredientInfo(registration, OccultismBlocks.OTHERWORLD_LEAVES.get());
// this.registerIngredientInfo(registration, OccultismBlocks.OTHERWORLD_SAPLING.get());
// this.registerIngredientInfo(registration, OccultismBlocks.OTHERWORLD_SAPLING_NATURAL.get());
// this.registerIngredientInfo(registration, OccultismBlocks.IESNIUM_ORE.get());
// this.registerIngredientInfo(registration, OccultismBlocks.SPIRIT_FIRE.get());
// this.registerIngredientInfo(registration, OccultismItems.DATURA.get());
// }
//
// @Override
// public void registerRecipeTransferHandlers(IRecipeTransferRegistration registration) {
// IStackHelper stackHelper = registration.getJeiHelpers().getStackHelper();
// IRecipeTransferHandlerHelper handlerHelper = registration.getTransferHelper();
// registration.addUniversalRecipeTransferHandler(new StorageControllerRecipeTransferHandler<>(
// StorageControllerContainer.class, handlerHelper));
// registration.addUniversalRecipeTransferHandler(new StorageControllerRecipeTransferHandler<>(
// StorageRemoteContainer.class, handlerHelper));
// registration.addUniversalRecipeTransferHandler(new StorageControllerRecipeTransferHandler<>(
// StableWormholeContainer.class, handlerHelper));
// }
//
// @Override
// public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) {
// registration.addRecipeCatalyst(new ItemStack(OccultismBlocks.SPIRIT_FIRE.get()),
// JeiRecipeTypes.SPIRIT_FIRE);
// registration.addRecipeCatalyst(new ItemStack(OccultismBlocks.DIMENSIONAL_MINESHAFT.get()),
// JeiRecipeTypes.MINER);
// registration.addRecipeCatalyst(new ItemStack(OccultismBlocks.GOLDEN_SACRIFICIAL_BOWL.get()),
// JeiRecipeTypes.RITUAL);
//
// registration.addRecipeCatalyst(new ItemStack(ForgeRegistries.ITEMS.getValue(new ResourceLocation(Occultism.MODID, "ritual_dummy/summon_marid_crusher"))),
// JeiRecipeTypes.CRUSHING);
// }
//
// @Override
// public void onRuntimeAvailable(IJeiRuntime jeiRuntime) {
// JeiPlugin.runtime = jeiRuntime;
// JeiSettings.setJeiLoaded(true);
// }
//
// public void registerIngredientInfo(IRecipeRegistration registration, ItemLike ingredient) {
// registration.addIngredientInfo(new ItemStack(ingredient.asItem()), VanillaTypes.ITEM_STACK,
// Component.translatable("jei." + Occultism.MODID + ".ingredient." + ForgeRegistries.ITEMS.getKey(ingredient.asItem()).getPath() + ".description"));
// }
//}
import com.github.klikli_dev.occultism.Occultism;
import com.github.klikli_dev.occultism.common.container.storage.StableWormholeContainer;
import com.github.klikli_dev.occultism.common.container.storage.StorageControllerContainer;
import com.github.klikli_dev.occultism.common.container.storage.StorageRemoteContainer;
import com.github.klikli_dev.occultism.crafting.recipe.CrushingRecipe;
import com.github.klikli_dev.occultism.crafting.recipe.MinerRecipe;
import com.github.klikli_dev.occultism.crafting.recipe.RitualRecipe;
import com.github.klikli_dev.occultism.crafting.recipe.SpiritFireRecipe;
import com.github.klikli_dev.occultism.integration.jei.recipes.CrushingRecipeCategory;
import com.github.klikli_dev.occultism.integration.jei.recipes.MinerRecipeCategory;
import com.github.klikli_dev.occultism.integration.jei.recipes.RitualRecipeCategory;
import com.github.klikli_dev.occultism.integration.jei.recipes.SpiritFireRecipeCategory;
import com.github.klikli_dev.occultism.registry.OccultismBlocks;
import com.github.klikli_dev.occultism.registry.OccultismItems;
import com.github.klikli_dev.occultism.registry.OccultismRecipes;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.constants.VanillaTypes;
import mezz.jei.api.helpers.IStackHelper;
import mezz.jei.api.recipe.transfer.IRecipeTransferHandlerHelper;
import mezz.jei.api.registration.IRecipeCatalystRegistration;
import mezz.jei.api.registration.IRecipeCategoryRegistration;
import mezz.jei.api.registration.IRecipeRegistration;
import mezz.jei.api.registration.IRecipeTransferRegistration;
import mezz.jei.api.runtime.IJeiRuntime;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.RecipeManager;
import net.minecraft.world.level.ItemLike;
import net.minecraftforge.registries.ForgeRegistries;

import java.util.List;

@mezz.jei.api.JeiPlugin
public class JeiPlugin implements IModPlugin {

protected static IJeiRuntime runtime;

public static IJeiRuntime getJeiRuntime() {
return runtime;
}

@Override
public ResourceLocation getPluginUid() {
return new ResourceLocation(Occultism.MODID, "jei");
}

@Override
public void registerCategories(IRecipeCategoryRegistration registration) {
registration.addRecipeCategories(new SpiritFireRecipeCategory(registration.getJeiHelpers().getGuiHelper()));
registration.addRecipeCategories(new CrushingRecipeCategory(registration.getJeiHelpers().getGuiHelper()));
registration.addRecipeCategories(new MinerRecipeCategory(registration.getJeiHelpers().getGuiHelper()));
registration.addRecipeCategories(new RitualRecipeCategory(registration.getJeiHelpers().getGuiHelper()));
}

@Override
public void registerRecipes(IRecipeRegistration registration) {
ClientLevel level = Minecraft.getInstance().level;
RecipeManager recipeManager = level.getRecipeManager();

List<SpiritFireRecipe> spiritFireRecipes = recipeManager.getAllRecipesFor(OccultismRecipes.SPIRIT_FIRE_TYPE.get());
registration.addRecipes(JeiRecipeTypes.SPIRIT_FIRE, spiritFireRecipes);

List<CrushingRecipe> crushingRecipes = recipeManager.getAllRecipesFor(OccultismRecipes.CRUSHING_TYPE.get());
registration.addRecipes(JeiRecipeTypes.CRUSHING, crushingRecipes);

List<MinerRecipe> minerRecipes = recipeManager.getAllRecipesFor(OccultismRecipes.MINER_TYPE.get());
registration.addRecipes(JeiRecipeTypes.MINER, minerRecipes);

List<RitualRecipe> ritualRecipes = recipeManager.getAllRecipesFor(OccultismRecipes.RITUAL_TYPE.get());
registration.addRecipes(JeiRecipeTypes.RITUAL, ritualRecipes);

this.registerIngredientInfo(registration, OccultismItems.TALLOW.get());
this.registerIngredientInfo(registration, OccultismBlocks.OTHERSTONE.get());
this.registerIngredientInfo(registration, OccultismBlocks.OTHERWORLD_LOG.get());
this.registerIngredientInfo(registration, OccultismBlocks.OTHERWORLD_LEAVES.get());
this.registerIngredientInfo(registration, OccultismBlocks.OTHERWORLD_SAPLING.get());
this.registerIngredientInfo(registration, OccultismBlocks.OTHERWORLD_SAPLING_NATURAL.get());
this.registerIngredientInfo(registration, OccultismBlocks.IESNIUM_ORE.get());
this.registerIngredientInfo(registration, OccultismBlocks.SPIRIT_FIRE.get());
this.registerIngredientInfo(registration, OccultismItems.DATURA.get());
}

@Override
public void registerRecipeTransferHandlers(IRecipeTransferRegistration registration) {
IStackHelper stackHelper = registration.getJeiHelpers().getStackHelper();
IRecipeTransferHandlerHelper handlerHelper = registration.getTransferHelper();
registration.addUniversalRecipeTransferHandler(new StorageControllerRecipeTransferHandler<>(
StorageControllerContainer.class, handlerHelper));
registration.addUniversalRecipeTransferHandler(new StorageControllerRecipeTransferHandler<>(
StorageRemoteContainer.class, handlerHelper));
registration.addUniversalRecipeTransferHandler(new StorageControllerRecipeTransferHandler<>(
StableWormholeContainer.class, handlerHelper));
}

@Override
public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) {
registration.addRecipeCatalyst(new ItemStack(OccultismBlocks.SPIRIT_FIRE.get()),
JeiRecipeTypes.SPIRIT_FIRE);
registration.addRecipeCatalyst(new ItemStack(OccultismBlocks.DIMENSIONAL_MINESHAFT.get()),
JeiRecipeTypes.MINER);
registration.addRecipeCatalyst(new ItemStack(OccultismBlocks.GOLDEN_SACRIFICIAL_BOWL.get()),
JeiRecipeTypes.RITUAL);

registration.addRecipeCatalyst(new ItemStack(ForgeRegistries.ITEMS.getValue(new ResourceLocation(Occultism.MODID, "ritual_dummy/summon_marid_crusher"))),
JeiRecipeTypes.CRUSHING);
}

@Override
public void onRuntimeAvailable(IJeiRuntime jeiRuntime) {
JeiPlugin.runtime = jeiRuntime;
JeiSettings.setJeiLoaded(true);
}

public void registerIngredientInfo(IRecipeRegistration registration, ItemLike ingredient) {
registration.addIngredientInfo(new ItemStack(ingredient.asItem()), VanillaTypes.ITEM_STACK,
Component.translatable("jei." + Occultism.MODID + ".ingredient." + ForgeRegistries.ITEMS.getKey(ingredient.asItem()).getPath() + ".description"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,20 @@

package com.github.klikli_dev.occultism.integration.jei;

import com.github.klikli_dev.occultism.Occultism;
import com.github.klikli_dev.occultism.crafting.recipe.*;
import mezz.jei.api.recipe.RecipeType;

public class JeiRecipeTypes {

//TODO: Re-enable
// public static final RecipeType<SpiritTradeRecipe> SPIRIT_TRADE =
// RecipeType.create(Occultism.MODID, "spirit_trade", SpiritTradeRecipe.class);
// public static final RecipeType<SpiritFireRecipe> SPIRIT_FIRE =
// RecipeType.create(Occultism.MODID, "spirit_fire", SpiritFireRecipe.class);
// public static final RecipeType<CrushingRecipe> CRUSHING =
// RecipeType.create(Occultism.MODID, "crushing", CrushingRecipe.class);
// public static final RecipeType<MinerRecipe> MINER =
// RecipeType.create(Occultism.MODID, "miner", MinerRecipe.class);
// public static final RecipeType<RitualRecipe> RITUAL =
// RecipeType.create(Occultism.MODID, "ritual", RitualRecipe.class);
public static final RecipeType<SpiritTradeRecipe> SPIRIT_TRADE =
RecipeType.create(Occultism.MODID, "spirit_trade", SpiritTradeRecipe.class);
public static final RecipeType<SpiritFireRecipe> SPIRIT_FIRE =
RecipeType.create(Occultism.MODID, "spirit_fire", SpiritFireRecipe.class);
public static final RecipeType<CrushingRecipe> CRUSHING =
RecipeType.create(Occultism.MODID, "crushing", CrushingRecipe.class);
public static final RecipeType<MinerRecipe> MINER =
RecipeType.create(Occultism.MODID, "miner", MinerRecipe.class);
public static final RecipeType<RitualRecipe> RITUAL =
RecipeType.create(Occultism.MODID, "ritual", RitualRecipe.class);
}
Loading

0 comments on commit 87a4aa4

Please sign in to comment.