diff --git a/src/main/java/jackyy/simplesponge/integration/JEIPlugin.java b/src/main/java/jackyy/simplesponge/integration/JEIPlugin.java new file mode 100644 index 0000000..4ca25d8 --- /dev/null +++ b/src/main/java/jackyy/simplesponge/integration/JEIPlugin.java @@ -0,0 +1,55 @@ +package jackyy.simplesponge.integration; + +import jackyy.simplesponge.SimpleSponge; +import jackyy.simplesponge.registry.ModItems; +import mezz.jei.api.IModPlugin; +import mezz.jei.api.JeiPlugin; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.ingredients.subtypes.IIngredientSubtypeInterpreter; +import mezz.jei.api.ingredients.subtypes.UidContext; +import mezz.jei.api.registration.ISubtypeRegistration; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.energy.IEnergyStorage; +import net.minecraftforge.registries.RegistryObject; + +import java.util.Optional; + +@JeiPlugin +public class JEIPlugin implements IModPlugin { + + @Override + public ResourceLocation getPluginUid() { + return new ResourceLocation(SimpleSponge.MODID, "jei_plugin"); + } + + @Override + public void registerItemSubtypes(ISubtypeRegistration registration) { + for (RegistryObject item : ModItems.ITEMS.getEntries()) { + ItemStack stack = item.get().getDefaultInstance(); + if (stack.getCapability(ForgeCapabilities.ENERGY).isPresent()) { + registration.registerSubtypeInterpreter(VanillaTypes.ITEM_STACK, item.get(), INTERPRETER); + } + } + } + + private static final IIngredientSubtypeInterpreter INTERPRETER = (stack, context) -> { + if (context == UidContext.Ingredient && stack.hasTag()) { + Optional capability = stack.getCapability(ForgeCapabilities.ENERGY).resolve(); + if (capability.isPresent()) { + IEnergyStorage energyStorage = capability.get(); + String subtype; + if (energyStorage.getEnergyStored() == energyStorage.getMaxEnergyStored()) { + subtype = "filled"; + } else { + subtype = "empty"; + } + return subtype; + } + } + return IIngredientSubtypeInterpreter.NONE; + }; + +} diff --git a/src/main/java/jackyy/simplesponge/registry/ModItems.java b/src/main/java/jackyy/simplesponge/registry/ModItems.java index ff8efd9..e60966e 100644 --- a/src/main/java/jackyy/simplesponge/registry/ModItems.java +++ b/src/main/java/jackyy/simplesponge/registry/ModItems.java @@ -12,7 +12,7 @@ public class ModItems { - private static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, SimpleSponge.MODID); + public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, SimpleSponge.MODID); public static final RegistryObject SPONGE_ON_A_STICK = ITEMS.register("sponge_on_a_stick", ItemSpongeOnAStick::new);