Skip to content

Commit

Permalink
Fix GrS JEI Hiding Issues in Certain JEI Configs
Browse files Browse the repository at this point in the history
  • Loading branch information
IntegerLimit committed Jan 1, 2025
1 parent 93247c1 commit d0550f8
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.nomiceu.nomilabs.groovy.mixinhelper;

import com.cleanroommc.groovyscript.api.GroovyBlacklist;

@GroovyBlacklist
public class LabsJEIApplied {

public static boolean afterRegisterApplied = false;
public static boolean afterRuntimeApplied = false;
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Table;
import com.nomiceu.nomilabs.groovy.PartialRecipe;
import com.nomiceu.nomilabs.groovy.mixinhelper.LabsJEIApplied;
import com.nomiceu.nomilabs.item.registry.LabsItems;
import com.nomiceu.nomilabs.util.ItemTagMeta;

Expand Down Expand Up @@ -72,13 +73,19 @@ public void register(IModRegistry registry) {
GROOVY_DESCRIPTIONS.forEach(((key, value) -> addDescription(tempMap, key, (list) -> list.addAll(value))));
tempMap.forEach(((itemTagMeta, strings) -> registry.addIngredientInfo(itemTagMeta.toStack(), VanillaTypes.ITEM,
strings.stream().map(Translatable::translate).collect(Collectors.joining("\n\n")))));

// GrS JEI Fix
LabsJEIApplied.afterRegisterApplied = false;
}

@Override
public void onRuntimeAvailable(@NotNull IJeiRuntime jeiRuntime) {
// Remove Info Item from JEI
itemRegistry.removeIngredientsAtRuntime(VanillaTypes.ITEM,
Collections.singletonList(new ItemStack(LabsItems.INFO_ITEM)));

// GrS JEI Fix
LabsJEIApplied.afterRuntimeApplied = false;
}

/* Hiding Helpers */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,20 @@

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import com.cleanroommc.groovyscript.compat.mods.jei.JeiPlugin;
import com.cleanroommc.groovyscript.compat.mods.jei.ShapedRecipeWrapper;
import com.nomiceu.nomilabs.groovy.mixinhelper.LabsJEIApplied;
import com.nomiceu.nomilabs.groovy.mixinhelper.StrictableItemRecipeWrappers;

import mezz.jei.api.IJeiHelpers;
import mezz.jei.plugins.vanilla.crafting.ShapelessRecipeWrapper;

/**
* Registers recipes with the new 'strictable' wrappers.
* Registers recipes with the new 'strictable' wrappers. Sets values for GrS JEI hiding fix.
*/
@Mixin(value = JeiPlugin.class, remap = false)
public class JEIPluginMixin {
Expand All @@ -33,4 +36,14 @@ private static ShapedRecipeWrapper returnNewHandlerShaped(IJeiHelpers jeiHelpers
private static ShapelessRecipeWrapper<?> returnNewHandlerShapeless(IJeiHelpers jeiHelpers, IRecipe recipe) {
return new StrictableItemRecipeWrappers.Shapeless(jeiHelpers, recipe);
}

@Inject(method = "afterRegister", at = @At("HEAD"))
private static void notifyLabsRegister(CallbackInfo ci) {
LabsJEIApplied.afterRegisterApplied = true;
}

@Inject(method = "afterRuntimeAvailable", at = @At("HEAD"))
private static void notifyLabsRuntime(CallbackInfo ci) {
LabsJEIApplied.afterRuntimeApplied = true;
}
}
47 changes: 47 additions & 0 deletions src/main/java/com/nomiceu/nomilabs/mixin/jei/JeiStarterMixin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.nomiceu.nomilabs.mixin.jei;

import java.util.List;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import com.cleanroommc.groovyscript.compat.mods.jei.JeiPlugin;
import com.nomiceu.nomilabs.NomiLabs;
import com.nomiceu.nomilabs.groovy.mixinhelper.LabsJEIApplied;

import mezz.jei.api.IJeiRuntime;
import mezz.jei.api.IModPlugin;
import mezz.jei.startup.JeiStarter;
import mezz.jei.startup.ModRegistry;

/**
* Fix GrS JEI Hiding Issues, by re-checking if applied, and if not, applying at end of registers,
* instead of before ProgressManager.pop(). This can happen due to HEI's new 'Progress Bar' config.
*/
@Mixin(value = JeiStarter.class, remap = false)
public class JeiStarterMixin {

@Inject(method = "registerPlugins", at = @At("TAIL"))
private static void handleAfterRegister(List<IModPlugin> plugins, ModRegistry modRegistry, CallbackInfo ci) {
if (LabsJEIApplied.afterRegisterApplied) {
NomiLabs.LOGGER.info("[GrS + JEI] After Register Applied Correctly.");
return;
}

NomiLabs.LOGGER.error("[GrS + JEI] After Register Did Not Apply Correctly! Applying...");
JeiPlugin.afterRegister();
}

@Inject(method = "sendRuntime", at = @At("TAIL"))
private static void handleAfterRuntime(List<IModPlugin> plugins, IJeiRuntime jeiRuntime, CallbackInfo ci) {
if (LabsJEIApplied.afterRuntimeApplied) {
NomiLabs.LOGGER.info("[GrS + JEI] After Runtime Applied Correctly.");
return;
}

NomiLabs.LOGGER.error("[GrS + JEI] After Runtime Did Not Apply Correctly! Applying...");
JeiPlugin.afterRuntimeAvailable();
}
}
1 change: 1 addition & 0 deletions src/main/resources/mixins.nomilabs.jei.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"mixins": [
"CraftingRecipeCategoryMixin",
"IngredientInfoRecipeMixin",
"JeiStarterMixin",
"RecipeCategoryTabMixin"
],
"client": [
Expand Down

0 comments on commit d0550f8

Please sign in to comment.