jei comapt

This commit is contained in:
Kaupenjoe
2023-10-08 15:44:56 +02:00
parent cca4154b93
commit ebe192ee05
5 changed files with 122 additions and 0 deletions

View File

@@ -153,6 +153,11 @@ repositories {
// flatDir {
// dir 'libs'
// }
maven {
// location of the maven that hosts JEI files since January 2023
name = "Jared's maven"
url = "https://maven.blamejared.com/"
}
}
dependencies {
@@ -169,6 +174,12 @@ dependencies {
// compileOnly fg.deobf("mezz.jei:jei-${mc_version}-forge-api:${jei_version}")
// runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}-forge:${jei_version}")
// compile against the JEI API but do not include it at runtime
compileOnly(fg.deobf("mezz.jei:jei-${minecraft_version}-common-api:${jei_version}"))
compileOnly(fg.deobf("mezz.jei:jei-${minecraft_version}-forge-api:${jei_version}"))
// at runtime, use the full JEI jar for Forge
runtimeOnly(fg.deobf("mezz.jei:jei-${minecraft_version}-forge:${jei_version}"))
// Example mod dependency using a mod jar from ./libs with a flat dir repository
// This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar
// The group id is ignored when searching -- in this case, it is "blank"

View File

@@ -38,6 +38,10 @@ mapping_channel=parchment
mapping_version=2023.06.26-1.20.1
## Dependency Properties
jei_version=15.2.0.27
## Mod Properties
# The unique mod identifier for the mod. Must be lowercase in English locale. Must fit the regex [a-z][a-z0-9_]{1,63}

View File

@@ -0,0 +1,60 @@
package net.kaupenjoe.tutorialmod.compat;
import mezz.jei.api.constants.VanillaTypes;
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.drawable.IDrawable;
import mezz.jei.api.helpers.IGuiHelper;
import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole;
import mezz.jei.api.recipe.RecipeType;
import mezz.jei.api.recipe.category.IRecipeCategory;
import net.kaupenjoe.tutorialmod.TutorialMod;
import net.kaupenjoe.tutorialmod.block.ModBlocks;
import net.kaupenjoe.tutorialmod.recipe.GemPolishingRecipe;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack;
public class GemPolishingCategory implements IRecipeCategory<GemPolishingRecipe> {
public static final ResourceLocation UID = new ResourceLocation(TutorialMod.MOD_ID, "gem_polishing");
public static final ResourceLocation TEXTURE = new ResourceLocation(TutorialMod.MOD_ID,
"textures/gui/gem_polishing_station_gui.png");
public static final RecipeType<GemPolishingRecipe> GEM_POLISHING_TYPE =
new RecipeType<>(UID, GemPolishingRecipe.class);
private final IDrawable background;
private final IDrawable icon;
public GemPolishingCategory(IGuiHelper helper) {
this.background = helper.createDrawable(TEXTURE, 0, 0, 176, 85);
this.icon = helper.createDrawableIngredient(VanillaTypes.ITEM_STACK, new ItemStack(ModBlocks.GEM_POLISHING_STATION.get()));
}
@Override
public RecipeType<GemPolishingRecipe> getRecipeType() {
return GEM_POLISHING_TYPE;
}
@Override
public Component getTitle() {
return Component.translatable("block.tutorialmod.gem_polishing_station");
}
@Override
public IDrawable getBackground() {
return this.background;
}
@Override
public IDrawable getIcon() {
return this.icon;
}
@Override
public void setRecipe(IRecipeLayoutBuilder builder, GemPolishingRecipe recipe, IFocusGroup focuses) {
builder.addSlot(RecipeIngredientRole.INPUT, 80, 11).addIngredients(recipe.getIngredients().get(0));
builder.addSlot(RecipeIngredientRole.OUTPUT, 80, 59).addItemStack(recipe.getResultItem(null));
}
}

View File

@@ -0,0 +1,42 @@
package net.kaupenjoe.tutorialmod.compat;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin;
import mezz.jei.api.registration.IGuiHandlerRegistration;
import mezz.jei.api.registration.IRecipeCategoryRegistration;
import mezz.jei.api.registration.IRecipeRegistration;
import net.kaupenjoe.tutorialmod.TutorialMod;
import net.kaupenjoe.tutorialmod.recipe.GemPolishingRecipe;
import net.kaupenjoe.tutorialmod.screen.GemPolishingStationScreen;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.crafting.RecipeManager;
import java.util.List;
@JeiPlugin
public class JEITutorialModPlugin implements IModPlugin {
@Override
public ResourceLocation getPluginUid() {
return new ResourceLocation(TutorialMod.MOD_ID, "jei_plugin");
}
@Override
public void registerCategories(IRecipeCategoryRegistration registration) {
registration.addRecipeCategories(new GemPolishingCategory(registration.getJeiHelpers().getGuiHelper()));
}
@Override
public void registerRecipes(IRecipeRegistration registration) {
RecipeManager recipeManager = Minecraft.getInstance().level.getRecipeManager();
List<GemPolishingRecipe> polishingRecipes = recipeManager.getAllRecipesFor(GemPolishingRecipe.Type.INSTANCE);
registration.addRecipes(GemPolishingCategory.GEM_POLISHING_TYPE, polishingRecipes);
}
@Override
public void registerGuiHandlers(IGuiHandlerRegistration registration) {
registration.addRecipeClickArea(GemPolishingStationScreen.class, 60, 30, 20, 30,
GemPolishingCategory.GEM_POLISHING_TYPE);
}
}

View File

@@ -34,6 +34,11 @@ public class GemPolishingRecipe implements Recipe<SimpleContainer> {
return inputItems.get(0).test(pContainer.getItem(0));
}
@Override
public NonNullList<Ingredient> getIngredients() {
return inputItems;
}
@Override
public ItemStack assemble(SimpleContainer pContainer, RegistryAccess pRegistryAccess) {
return output.copy();