Skip to content

Commit

Permalink
jei plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
IchHabeHunger54 committed Oct 15, 2024
1 parent 35fc5f2 commit e1ed3e4
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 0 deletions.
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ plugins {
repositories {
mavenLocal()
mavenCentral()
maven { url 'https://maven.blamejared.com/' }
}

sourceSets {
Expand All @@ -23,6 +24,8 @@ dependencies {
testImplementation "org.junit.jupiter:junit-jupiter:${project.junit_version}"
testImplementation "net.neoforged:testframework:${project.neo_version}"
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
compileOnly "mezz.jei:jei-${mc_version}-neoforge-api:${jei_version}"
runtimeOnly "mezz.jei:jei-${mc_version}-neoforge:${jei_version}"
}

neoForge {
Expand Down
2 changes: 2 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ mc_version_range=[1.21.1,1.21.2)
neo_version=21.1.62
neo_version_range=[21.1.62,21.2)

jei_version=19.21.0.246

junit_version=5.7.1

loader_version=[1,)
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package com.github.minecraftschurlimods.bibliocraft;

import com.github.minecraftschurlimods.bibliocraft.api.BibliocraftApi;
import com.github.minecraftschurlimods.bibliocraft.api.woodtype.BibliocraftWoodType;
import com.github.minecraftschurlimods.bibliocraft.init.BCItems;
import com.github.minecraftschurlimods.bibliocraft.util.BCUtil;
import com.github.minecraftschurlimods.bibliocraft.util.init.WoodTypeDeferredHolder;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin;
import mezz.jei.api.constants.VanillaTypes;
import mezz.jei.api.ingredients.subtypes.ISubtypeInterpreter;
import mezz.jei.api.ingredients.subtypes.UidContext;
import mezz.jei.api.registration.IRecipeRegistration;
import mezz.jei.api.registration.ISubtypeRegistration;
import net.minecraft.core.component.DataComponents;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.neoforged.fml.ModList;
import org.jetbrains.annotations.Nullable;

import java.util.List;
import java.util.stream.Collectors;

@JeiPlugin
public class BibliocraftJeiPlugin implements IModPlugin {
private static final ResourceLocation UID = BCUtil.modLoc("jei_plugin");

@Override
public ResourceLocation getPluginUid() {
return UID;
}

@Override
public void registerItemSubtypes(ISubtypeRegistration registration) {
registration.registerSubtypeInterpreter(BCItems.SWORD_PEDESTAL.get(), ColorSubtypeInterpreter.INSTANCE);
}

@Override
public void registerRecipes(IRecipeRegistration registration) {
List<BibliocraftWoodType> woodTypes = BibliocraftApi.getWoodTypeRegistry()
.getAll()
.stream()
.filter(e -> ModList.get().isLoaded(e.getNamespace()))
.toList();
}

private void remove(IRecipeRegistration registration, WoodTypeDeferredHolder<Item, ?> holder, List<BibliocraftWoodType> woodTypesToRemove) {
registration.getIngredientManager().removeIngredientsAtRuntime(VanillaTypes.ITEM_STACK, woodTypesToRemove
.stream()
.map(holder::get)
.map(ItemStack::new)
.collect(Collectors.toSet()));
}

@SuppressWarnings("DataFlowIssue")
private static class ColorSubtypeInterpreter implements ISubtypeInterpreter<ItemStack> {
public static final ColorSubtypeInterpreter INSTANCE = new ColorSubtypeInterpreter();

private ColorSubtypeInterpreter() {}

@Override
@Nullable
public Object getSubtypeData(ItemStack ingredient, UidContext context) {
return ingredient.has(DataComponents.DYED_COLOR) ? ingredient.get(DataComponents.DYED_COLOR).rgb() : null;
}

@Override
public String getLegacyStringSubtypeInfo(ItemStack ingredient, UidContext context) {
return ingredient.has(DataComponents.DYED_COLOR) ? String.valueOf(ingredient.get(DataComponents.DYED_COLOR).rgb()) : "";
}
}
}

0 comments on commit e1ed3e4

Please sign in to comment.