Skip to content

Commit 9a9c4b6

Browse files
authored
add the ability to blacklist containers (#363)
1 parent 34ba0c2 commit 9a9c4b6

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/main/java/com/cleanroommc/groovyscript/GroovyScriptConfig.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,14 @@ public static class Compat {
2626
@Config.Name("ExtendedCrafting recipe maker makes grs recipes")
2727
@Config.Comment("If this is true, the recipe maker from ExtendedCrafting will produce a script for GroovyScript instead of CraftTweaker.")
2828
public boolean extendedCraftingRecipeMakerMakesGrsRecipes = true;
29+
30+
@Config.Name("Blacklisted Containers")
31+
@Config.Comment({
32+
"This is a list of modids to not register containers for. Only do this if the containers cause errors or crash when registered.",
33+
"This happens when a mod uses the same modid as a mod with direct compat, but has different internals,",
34+
"typically a fork of the original mod that breaks compatibility."
35+
})
36+
@Config.RequiresMcRestart
37+
public String[] blacklistedContainers = {};
2938
}
3039
}

src/main/java/com/cleanroommc/groovyscript/compat/mods/ModSupport.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.cleanroommc.groovyscript.compat.mods;
22

33
import com.cleanroommc.groovyscript.GroovyScript;
4+
import com.cleanroommc.groovyscript.GroovyScriptConfig;
45
import com.cleanroommc.groovyscript.api.GroovyBlacklist;
56
import com.cleanroommc.groovyscript.api.GroovyPlugin;
67
import com.cleanroommc.groovyscript.compat.mods.actuallyadditions.ActuallyAdditions;
@@ -78,6 +79,7 @@
7879
import net.minecraftforge.fml.common.Loader;
7980
import net.minecraftforge.fml.common.ModContainer;
8081
import net.minecraftforge.fml.common.discovery.ASMDataTable;
82+
import org.apache.commons.lang3.ArrayUtils;
8183
import org.jetbrains.annotations.ApiStatus;
8284
import org.jetbrains.annotations.NotNull;
8385

@@ -196,6 +198,10 @@ private void registerContainer(GroovyPlugin container) {
196198
throw new RuntimeException("Groovy mod containers must be registered at construction event! Tried to register '" + container.getContainerName() + "' too late.");
197199
}
198200
if (!Loader.isModLoaded(container.getModId())) return;
201+
if (ArrayUtils.contains(GroovyScriptConfig.compat.blacklistedContainers, container.getModId())) {
202+
GroovyScript.LOGGER.warn("Not registering compat for '{}' as it was in the config blacklist", container.getContainerName());
203+
return;
204+
}
199205
if (hasCompatFor(container.getModId())) {
200206
GroovyContainer<?> current = getContainer(container.getModId());
201207
if (current.getOverridePriority().ordinal() >= container.getOverridePriority().ordinal()) {
@@ -222,6 +228,10 @@ void registerContainer(GroovyContainer<?> container) {
222228
if (containerList.contains(container) || containers.containsKey(container.getModId())) {
223229
throw new IllegalStateException("Container already present!");
224230
}
231+
if (ArrayUtils.contains(GroovyScriptConfig.compat.blacklistedContainers, container.getModId())) {
232+
GroovyScript.LOGGER.warn("Not registering compat for '{}' as it was in the config blacklist", container.getContainerName());
233+
return;
234+
}
225235
containerList.add(container);
226236
for (String alias : container.getAliases()) {
227237
GroovyContainer<?> container2 = containers.put(alias, container);

0 commit comments

Comments
 (0)