Skip to content

Commit

Permalink
Merge pull request #616 from WaitingIdly/modular-magic-ingredient
Browse files Browse the repository at this point in the history
Fix Null Ingredient for Modular Magic
  • Loading branch information
ACGaming authored Jan 19, 2025
2 parents 0aa4dce + e9012c5 commit 4ce7c6b
Show file tree
Hide file tree
Showing 12 changed files with 118 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,8 @@ All changes are toggleable via config files.
* **Copy Armor Stacks to Dummy:** Instead of deleting the original itemstack being equipped, use a copy of it and do not drop armor
* **Mob Stages**
* **Spawning Rules Fixes:** Fixes mob replacement ignoring entity spawning rules
* **Modular Magic**
* **Fix Null Ingredient:** Fix a Null Pointer Exception in a few places caused by not checking if the ingredient is null before attempting to rendering it
* **Modular Routers**
* **Particle Thread Fix:** Fixes particles being added from the wrong thread which corrupted the particle manager
* **MrTJPCore**
Expand Down
2 changes: 2 additions & 0 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@ final def mod_dependencies = [
'curse.maven:mcjtylib-233105:2745846' : [debug_rftools],
'curse.maven:mekanism-268560:2835175' : [debug_mekanism],
'curse.maven:modtweaker-220954:3840577' : [debug_crafttweaker],
'curse.maven:modular-machinery-270790:2761302' : [debug_modular_magic],
'curse.maven:modular-magic-324318:2947301' : [debug_modular_magic],
'curse.maven:modular-routers-250294:2954953' : [debug_modular_routers],
'curse.maven:mrtjpcore-229002:2735197' : [debug_mrtjpcore, debug_project_red],
'curse.maven:mysticallib-277064:3483816' : [debug_arcane_archives],
Expand Down
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ debug_industrialcraft = false
debug_iron_backpacks = false
debug_iron_chests = false
debug_mekanism = false
debug_modular_magic = false
debug_modular_routers = false
debug_mrtjpcore = false
debug_netherchest = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,10 @@ public class UTConfigMods
@Config.Name("Mob Stages")
public static final MobStagesCategory MOB_STAGES = new MobStagesCategory();

@Config.LangKey("cfg.universaltweaks.modintegration.modularmagic")
@Config.Name("Modular Magic")
public static final ModularMagicCategory MODULAR_MAGIC = new ModularMagicCategory();

@Config.LangKey("cfg.universaltweaks.modintegration.modularrouters")
@Config.Name("Modular Routers")
public static final ModularRoutersCategory MODULAR_ROUTERS = new ModularRoutersCategory();
Expand Down Expand Up @@ -755,6 +759,14 @@ public static class MobStagesCategory
public boolean utSpawningRules = true;
}

public static class ModularMagicCategory
{
@Config.RequiresMcRestart
@Config.Name("Fix Null Ingredient")
@Config.Comment("Fix a Null Pointer Exception in a few places caused by not checking if the ingredient is null before attempting to rendering it")
public boolean utEnsureIngredientNotNull = true;
}

public static class ModularRoutersCategory
{
@Config.RequiresMcRestart
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public class UTMixinLoader implements ILateMixinLoader
put("mixins.mods.enderio.itemrender.json", () -> loaded("enderio") && UTConfigMods.ENDER_IO.utReplaceItemRenderer);
put("mixins.mods.hwyla.json", () -> loaded("waila"));
put("mixins.mods.ironchests.json", () -> loaded("ironchest") && UTConfigMods.IRON_CHESTS.utReplaceItemRenderer);
put("mixins.mods.modularmagic.nullingredient.json", () -> loaded("modularmagic") && UTConfigMods.MODULAR_MAGIC.utEnsureIngredientNotNull);
put("mixins.mods.modularrouters.json", () -> loaded("modularrouters") && UTConfigMods.MODULAR_ROUTERS.utParticleThreadToggle);
put("mixins.mods.roost.json", () -> loaded("roost") && loaded("contenttweaker"));
put("mixins.mods.storagedrawers.client.json", () -> loaded("storagedrawers"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

// Courtesy of WaitingIdly
@Mixin(value = ToolCrystalProperties.class, remap = false)
public abstract class UTToolCrystalPropertiesMixin
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package mod.acgaming.universaltweaks.mods.modularmagic.nullingredient.mixin;

import javax.annotation.Nullable;

import net.minecraft.client.Minecraft;

import fr.frinn.modularmagic.common.integration.jei.render.AspectRenderer;
import mod.acgaming.universaltweaks.config.UTConfigMods;
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 thaumcraft.api.aspects.AspectList;

// Courtesy of WaitingIdly
@Mixin(value = AspectRenderer.class, remap = false)
public abstract class UTAspectRendererMixin
{
@Inject(method = "render(Lnet/minecraft/client/Minecraft;IILthaumcraft/api/aspects/AspectList;)V", at = @At("HEAD"), cancellable = true)
private void utCheckIngredientNotNull(Minecraft minecraft, int xPosition, int yPosition, @Nullable AspectList ingredient, CallbackInfo ci)
{
if (UTConfigMods.MODULAR_MAGIC.utEnsureIngredientNotNull && ingredient == null) ci.cancel();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package mod.acgaming.universaltweaks.mods.modularmagic.nullingredient.mixin;

import net.minecraft.client.Minecraft;

import fr.frinn.modularmagic.common.integration.jei.ingredient.Aura;
import fr.frinn.modularmagic.common.integration.jei.render.AuraRenderer;
import mod.acgaming.universaltweaks.config.UTConfigMods;
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;

// Courtesy of WaitingIdly
@Mixin(value = AuraRenderer.class, remap = false)
public abstract class UTAuraRendererMixin
{
@Inject(method = "render(Lnet/minecraft/client/Minecraft;IILfr/frinn/modularmagic/common/integration/jei/ingredient/Aura;)V", at = @At("HEAD"), cancellable = true)
private void utCheckIngredientNotNull(Minecraft minecraft, int xPosition, int yPosition, Aura ingredient, CallbackInfo ci)
{
if (UTConfigMods.MODULAR_MAGIC.utEnsureIngredientNotNull && ingredient == null) ci.cancel();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package mod.acgaming.universaltweaks.mods.modularmagic.nullingredient.mixin;

import net.minecraft.client.Minecraft;

import fr.frinn.modularmagic.common.integration.jei.ingredient.Constellation;
import fr.frinn.modularmagic.common.integration.jei.render.ConstellationRenderer;
import mod.acgaming.universaltweaks.config.UTConfigMods;
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;

// Courtesy of WaitingIdly
@Mixin(value = ConstellationRenderer.class, remap = false)
public abstract class UTConstellationRendererMixin
{
@Inject(method = "render(Lnet/minecraft/client/Minecraft;IILfr/frinn/modularmagic/common/integration/jei/ingredient/Constellation;)V", at = @At("HEAD"), cancellable = true)
private void utCheckIngredientNotNull(Minecraft minecraft, int xPosition, int yPosition, Constellation ingredient, CallbackInfo ci)
{
if (UTConfigMods.MODULAR_MAGIC.utEnsureIngredientNotNull && ingredient == null) ci.cancel();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package mod.acgaming.universaltweaks.mods.modularmagic.nullingredient.mixin;

import net.minecraft.client.Minecraft;

import fr.frinn.modularmagic.common.integration.jei.ingredient.DemonWill;
import fr.frinn.modularmagic.common.integration.jei.render.DemonWillRenderer;
import mod.acgaming.universaltweaks.config.UTConfigMods;
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;

// Courtesy of WaitingIdly
@Mixin(value = DemonWillRenderer.class, remap = false)
public abstract class UTDemonWillRendererMixin
{
// This method actually has a null check, the issue is that it makes changes to the GLState prior to that null check.
@Inject(method = "render(Lnet/minecraft/client/Minecraft;IILfr/frinn/modularmagic/common/integration/jei/ingredient/DemonWill;)V", at = @At("HEAD"), cancellable = true)
private void utCheckIngredientNotNull(Minecraft minecraft, int xPosition, int yPosition, DemonWill ingredient, CallbackInfo ci)
{
if (UTConfigMods.MODULAR_MAGIC.utEnsureIngredientNotNull && ingredient == null) ci.cancel();
}
}
1 change: 1 addition & 0 deletions src/main/resources/assets/universaltweaks/lang/en_us.lang
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ cfg.universaltweaks.modintegration.ironchests=Iron Chests
cfg.universaltweaks.modintegration.itemstages=Item Stages
cfg.universaltweaks.modintegration.mekanism=Mekanism
cfg.universaltweaks.modintegration.mobstages=Mob Stages
cfg.universaltweaks.modintegration.modularmagic=Modular Magic
cfg.universaltweaks.modintegration.modularrouters=Modular Routers
cfg.universaltweaks.modintegration.mrtjpcore=MrTJPCore
cfg.universaltweaks.modintegration.netherchest=Nether Chest
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"package": "mod.acgaming.universaltweaks.mods.modularmagic.nullingredient.mixin",
"refmap": "universaltweaks.refmap.json",
"minVersion": "0.8",
"compatibilityLevel": "JAVA_8",
"mixins": ["UTAspectRendererMixin", "UTAuraRendererMixin", "UTConstellationRendererMixin", "UTDemonWillRendererMixin"]
}

0 comments on commit 4ce7c6b

Please sign in to comment.