Skip to content

Commit

Permalink
Bump min JEI version to 19.10.0.126 and add support for searching by …
Browse files Browse the repository at this point in the history
…our aliases in JEI (#8218)
  • Loading branch information
pupnewfster committed Aug 26, 2024
1 parent 2911cfe commit e7d6f44
Show file tree
Hide file tree
Showing 13 changed files with 145 additions and 25 deletions.
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,15 @@ emi_version=1.1.12
grand_power_version=3.0.0
jade_api_id=5427895
jade_id=5639932
jei_version=19.9.0.120
jei_version=19.11.0.128
json_things_version=0.12.1
top_version=1.21_neo-12.0.3-5
wildfire_gender_mod_id=5579007
wthit_version=12.3.0
framedblocks_mod_id=5629510

#Mod dependency min version ranges
jei_version_range=[19.9.0.120,)
jei_version_range=[19.10.0.126,)

#Mod dependency min version ranges until next MC version. For deps that we need a min version of but otherwise don't have to force ourselves loading after

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package mekanism.additions.client.recipe_viewer.jei;

import mekanism.additions.client.recipe_viewer.aliases.AdditionsAliasMapping;
import mekanism.additions.common.MekanismAdditions;
import mekanism.client.recipe_viewer.jei.JEIAliasHelper;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin;
import mezz.jei.api.registration.IIngredientAliasRegistration;
import net.minecraft.resources.ResourceLocation;
import org.jetbrains.annotations.NotNull;

@JeiPlugin
public class AdditionsJEI implements IModPlugin {

@NotNull
@Override
public ResourceLocation getPluginUid() {
//Note: Can't use MekanismTools.rl, as JEI needs this in the constructor and the class may not be loaded yet.
// we can still reference the modid though because of constant inlining
return ResourceLocation.fromNamespaceAndPath(MekanismAdditions.MODID, "jei_plugin");
}

@Override
public void registerIngredientAliases(@NotNull IIngredientAliasRegistration registration) {
new AdditionsAliasMapping().addAliases(new JEIAliasHelper(registration));
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -838,7 +838,6 @@ private void addAdvancements() {
}

private void addAliases() {
add(MekanismLang.ALSO_KNOWN_AS, "Also known as %1$s");
addAliases(MekanismAliases.values());
for (FactoryType type : EnumUtils.FACTORY_TYPES) {
addAlias(type.getRegistryNameComponent(), type.getRegistryNameComponentCapitalized());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
package mekanism.generators.client.recipe_viewer.jei;

import mekanism.client.recipe_viewer.jei.CatalystRegistryHelper;
import mekanism.client.recipe_viewer.jei.JEIAliasHelper;
import mekanism.client.recipe_viewer.jei.MekanismJEI;
import mekanism.client.recipe_viewer.jei.RecipeRegistryHelper;
import mekanism.generators.client.recipe_viewer.GeneratorsRVRecipeType;
import mekanism.generators.client.recipe_viewer.alias.GeneratorsAliasMapping;
import mekanism.generators.client.recipe_viewer.recipe.FissionRecipeViewerRecipe;
import mekanism.generators.common.MekanismGenerators;
import mekanism.generators.common.registries.GeneratorsBlocks;
import mekanism.generators.common.registries.GeneratorsItems;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin;
import mezz.jei.api.helpers.IGuiHelper;
import mezz.jei.api.registration.IIngredientAliasRegistration;
import mezz.jei.api.registration.IRecipeCatalystRegistration;
import mezz.jei.api.registration.IRecipeCategoryRegistration;
import mezz.jei.api.registration.IRecipeRegistration;
Expand Down Expand Up @@ -54,6 +57,11 @@ public void registerRecipeCatalysts(@NotNull IRecipeCatalystRegistration registr
CatalystRegistryHelper.register(registry, GeneratorsRVRecipeType.FISSION);
}

@Override
public void registerIngredientAliases(@NotNull IIngredientAliasRegistration registration) {
new GeneratorsAliasMapping().addAliases(new JEIAliasHelper(registration));
}

@Override
public void registerRecipes(@NotNull IRecipeRegistration registry) {
if (!MekanismJEI.shouldLoad()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package mekanism.client.recipe_viewer.alias;

import mekanism.api.annotations.NothingNullByDefault;
import mekanism.api.text.IHasTranslationKey;
import mekanism.common.Mekanism;
import mekanism.common.MekanismLang;
import net.minecraft.Util;

@NothingNullByDefault
Expand Down Expand Up @@ -31,7 +29,7 @@ public enum MekanismAliases implements IAliasedTranslation {
FLIGHT("flight", "Flight"),
CREATIVE_FLIGHT("flight.creative", "Creative Flight"),
//Chemicals
ETHENE_ETHYLENE(MekanismLang.ETHENE_ETHYLENE_ALIAS, "Ethylene"),
ETHENE_ETHYLENE("ethene.ethylene", "Ethylene"),
//Machine
MACHINE_SMELTING("machine.smelting", "Smelting"),
MACHINE_ENRICHING("machine.enriching", "Enriching"),
Expand Down Expand Up @@ -145,11 +143,6 @@ public enum MekanismAliases implements IAliasedTranslation {
this.alias = alias;
}

MekanismAliases(IHasTranslationKey key, String alias) {
this.key = key.getTranslationKey();
this.alias = alias;
}

@Override
public String getTranslationKey() {
return key;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import mekanism.client.gui.GuiUtils.TilingDirection;
import mekanism.client.render.MekanismRenderer;
import mekanism.common.MekanismLang;
import mekanism.common.registries.MekanismChemicals;
import mekanism.common.util.ChemicalUtil;
import mekanism.common.util.text.TextUtils;
import mezz.jei.api.gui.builder.ITooltipBuilder;
Expand Down Expand Up @@ -94,10 +93,6 @@ private void collectTooltips(ChemicalStack stack, TooltipFlag tooltipFlag, Consu
Chemical chemical = stack.getChemical();
if (!chemical.isEmptyType()) {
tooltipAdder.accept(TextComponentUtil.build(chemical));
if (stack.getChemical() == MekanismChemicals.ETHENE.get()) {
//TODO - 1.22: Remove this
tooltipAdder.accept(MekanismLang.ALSO_KNOWN_AS.translateColored(EnumColor.GRAY, EnumColor.INDIGO, MekanismLang.ETHENE_ETHYLENE_ALIAS));
}
if (tooltipMode == TooltipMode.SHOW_AMOUNT_AND_CAPACITY) {
tooltipAdder.accept(MekanismLang.JEI_AMOUNT_WITH_CAPACITY.translateColored(EnumColor.GRAY, TextUtils.format(stack.getAmount()), TextUtils.format(capacityMb)));
} else if (tooltipMode == TooltipMode.SHOW_AMOUNT) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package mekanism.client.recipe_viewer.jei;

import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
import mekanism.api.chemical.ChemicalStack;
import mekanism.api.providers.IChemicalProvider;
import mekanism.api.providers.IFluidProvider;
import mekanism.api.text.IHasTranslationKey;
import mekanism.client.recipe_viewer.alias.RVAliasHelper;
import mekanism.common.Mekanism;
import mekanism.common.util.RegistryUtils;
import mezz.jei.api.constants.VanillaTypes;
import mezz.jei.api.ingredients.IIngredientType;
import mezz.jei.api.neoforge.NeoForgeTypes;
import mezz.jei.api.registration.IIngredientAliasRegistration;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.ItemLike;
import net.neoforged.neoforge.fluids.FluidStack;
import net.neoforged.neoforge.fluids.FluidType;

public class JEIAliasHelper implements RVAliasHelper<ItemStack, FluidStack, ChemicalStack> {

private static final Function<ItemStack, String> ITEM_TO_STRING = stack -> stack.getItem().toString();
private static final Function<FluidStack, String> FLUID_TO_STRING = stack -> RegistryUtils.getName(stack.getFluid()).toString();
private static final Function<ChemicalStack, String> CHEMICAL_TO_STRING = stack -> stack.getChemical().getRegistryName().toString();

private final IIngredientAliasRegistration registration;

public JEIAliasHelper(IIngredientAliasRegistration registration) {
this.registration = registration;
}

@Override
public ItemStack ingredient(ItemLike itemLike) {
return new ItemStack(itemLike);
}

@Override
public ItemStack ingredient(ItemStack item) {
return item;
}

@Override
public FluidStack ingredient(IFluidProvider fluidProvider) {
return fluidProvider.getFluidStack(FluidType.BUCKET_VOLUME);
}

@Override
public FluidStack ingredient(FluidStack fluid) {
return fluid;
}

@Override
public ChemicalStack ingredient(IChemicalProvider chemicalProvider) {
return chemicalProvider.getStack(FluidType.BUCKET_VOLUME);
}

@Override
public void addItemAliases(List<ItemStack> stacks, IHasTranslationKey... aliases) {
addAliases(VanillaTypes.ITEM_STACK, stacks, ITEM_TO_STRING, aliases);
}

@Override
public void addFluidAliases(List<FluidStack> stacks, IHasTranslationKey... aliases) {
addAliases(NeoForgeTypes.FLUID_STACK, stacks, FLUID_TO_STRING, aliases);
}

@Override
public void addChemicalAliases(List<ChemicalStack> stacks, IHasTranslationKey... aliases) {
addAliases(MekanismJEI.TYPE_CHEMICAL, stacks, CHEMICAL_TO_STRING, aliases);
}

private <INGREDIENT> void addAliases(IIngredientType<INGREDIENT> type, List<INGREDIENT> stacks, Function<INGREDIENT, String> ingredientToString,
IHasTranslationKey... aliases) {
if (aliases.length == 0) {
Mekanism.logger.warn("Expected to have at least one alias for ingredients of type: {}. Ingredients: {}", type.getUid(), stacks.stream()
.map(ingredientToString)
.collect(Collectors.joining(", "))
);
} else {
List<String> aliasesAsString = Arrays.stream(aliases)
.map(IHasTranslationKey::getTranslationKey)
.toList();
registration.addAliases(type, stacks, aliasesAsString);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import mekanism.client.gui.GuiMekanism;
import mekanism.client.gui.robit.GuiRobitRepair;
import mekanism.client.recipe_viewer.RecipeViewerUtils;
import mekanism.client.recipe_viewer.alias.MekanismAliasMapping;
import mekanism.client.recipe_viewer.jei.machine.BoilerRecipeCategory;
import mekanism.client.recipe_viewer.jei.machine.ChemicalChemicalToChemicalRecipeCategory;
import mekanism.client.recipe_viewer.jei.machine.ChemicalCrystallizerRecipeCategory;
Expand Down Expand Up @@ -62,6 +63,7 @@
import mezz.jei.api.recipe.RecipeType;
import mezz.jei.api.recipe.transfer.IRecipeTransferHandlerHelper;
import mezz.jei.api.registration.IGuiHandlerRegistration;
import mezz.jei.api.registration.IIngredientAliasRegistration;
import mezz.jei.api.registration.IModIngredientRegistration;
import mezz.jei.api.registration.IRecipeCatalystRegistration;
import mezz.jei.api.registration.IRecipeCategoryRegistration;
Expand Down Expand Up @@ -222,6 +224,11 @@ public void registerGuiHandlers(IGuiHandlerRegistration registry) {
registry.addGhostIngredientHandler(GuiMekanism.class, new JeiGhostIngredientHandler<>());
}

@Override
public void registerIngredientAliases(IIngredientAliasRegistration registration) {
new MekanismAliasMapping().addAliases(new JEIAliasHelper(registration));
}

@Override
public void registerRecipes(IRecipeRegistration registry) {
if (!shouldLoad()) {
Expand Down
4 changes: 0 additions & 4 deletions src/main/java/mekanism/common/MekanismLang.java
Original file line number Diff line number Diff line change
Expand Up @@ -216,10 +216,6 @@ public enum MekanismLang implements ILangEntry {
FLAMETHROWER_STORED("tooltip", "stored.flamethrower"),
JETPACK_STORED("tooltip", "stored.jetpack"),
DECAY_IMMUNE("tooltip", "decay_immune"),
//Aliases
ALSO_KNOWN_AS("tooltip", "known_as"),
//TODO - 1.22: When we no longer have JEI have to manually add the alias, we can move this to MekanismAliases
ETHENE_ETHYLENE_ALIAS("alias", "ethene.ethylene"),
//Gui stuff
HEIGHT("gui", "height"),
WIDTH("gui", "width"),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package mekanism.tools.client.recipe_viewer.jei;

import mekanism.client.recipe_viewer.jei.JEIAliasHelper;
import mekanism.client.recipe_viewer.jei.MekanismJEI;
import mekanism.client.recipe_viewer.jei.RecipeRegistryHelper;
import mekanism.tools.client.recipe_viewer.aliases.ToolsAliasMapping;
import mekanism.tools.common.MekanismTools;
import mekanism.tools.common.item.ItemMekanismShield;
import mekanism.tools.common.registries.ToolsItems;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin;
import mezz.jei.api.registration.IIngredientAliasRegistration;
import mezz.jei.api.registration.IRecipeRegistration;
import net.minecraft.core.Holder;
import net.minecraft.resources.ResourceLocation;
Expand All @@ -26,6 +29,11 @@ public ResourceLocation getPluginUid() {
return ResourceLocation.fromNamespaceAndPath(MekanismTools.MODID, "jei_plugin");
}

@Override
public void registerIngredientAliases(@NotNull IIngredientAliasRegistration registration) {
new ToolsAliasMapping().addAliases(new JEIAliasHelper(registration));
}

@Override
public void registerRecipes(@NotNull IRecipeRegistration registry) {
if (MekanismJEI.shouldLoad()) {
Expand Down

0 comments on commit e7d6f44

Please sign in to comment.