Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,14 @@ public static class Compat {
@Config.Name("ExtendedCrafting recipe maker makes grs recipes")
@Config.Comment("If this is true, the recipe maker from ExtendedCrafting will produce a script for GroovyScript instead of CraftTweaker.")
public boolean extendedCraftingRecipeMakerMakesGrsRecipes = true;

@Config.Name("Blacklisted Containers")
@Config.Comment({
"This is a list of modids to not register containers for. Only do this if the containers cause errors or crash when registered.",
"This happens when a mod uses the same modid as a mod with direct compat, but has different internals,",
"typically a fork of the original mod that breaks compatibility."
})
@Config.RequiresMcRestart
public String[] blacklistedContainers = {};
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.cleanroommc.groovyscript.compat.mods;

import com.cleanroommc.groovyscript.GroovyScript;
import com.cleanroommc.groovyscript.GroovyScriptConfig;
import com.cleanroommc.groovyscript.api.GroovyBlacklist;
import com.cleanroommc.groovyscript.api.GroovyPlugin;
import com.cleanroommc.groovyscript.compat.mods.actuallyadditions.ActuallyAdditions;
Expand Down Expand Up @@ -78,6 +79,7 @@
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.ModContainer;
import net.minecraftforge.fml.common.discovery.ASMDataTable;
import org.apache.commons.lang3.ArrayUtils;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;

Expand Down Expand Up @@ -196,6 +198,10 @@ private void registerContainer(GroovyPlugin container) {
throw new RuntimeException("Groovy mod containers must be registered at construction event! Tried to register '" + container.getContainerName() + "' too late.");
}
if (!Loader.isModLoaded(container.getModId())) return;
if (ArrayUtils.contains(GroovyScriptConfig.compat.blacklistedContainers, container.getModId())) {
GroovyScript.LOGGER.warn("Not registering compat for '{}' as it was in the config blacklist", container.getContainerName());
return;
}
if (hasCompatFor(container.getModId())) {
GroovyContainer<?> current = getContainer(container.getModId());
if (current.getOverridePriority().ordinal() >= container.getOverridePriority().ordinal()) {
Expand All @@ -222,6 +228,10 @@ void registerContainer(GroovyContainer<?> container) {
if (containerList.contains(container) || containers.containsKey(container.getModId())) {
throw new IllegalStateException("Container already present!");
}
if (ArrayUtils.contains(GroovyScriptConfig.compat.blacklistedContainers, container.getModId())) {
GroovyScript.LOGGER.warn("Not registering compat for '{}' as it was in the config blacklist", container.getContainerName());
return;
}
containerList.add(container);
for (String alias : container.getAliases()) {
GroovyContainer<?> container2 = containers.put(alias, container);
Expand Down