diff options
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r-- | src/main/java/gregtech/api/enums/OrePrefixes.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/enums/OrePrefixes.java b/src/main/java/gregtech/api/enums/OrePrefixes.java index 418fe71681..27cf37a2de 100644 --- a/src/main/java/gregtech/api/enums/OrePrefixes.java +++ b/src/main/java/gregtech/api/enums/OrePrefixes.java @@ -15,6 +15,7 @@ import net.minecraft.item.ItemStack; import com.google.common.collect.ImmutableList; +import gregtech.api.GregTechAPI; import gregtech.api.enums.TCAspects.TC_AspectStack; import gregtech.api.interfaces.ICondition; import gregtech.api.interfaces.IOreRecipeRegistrator; @@ -1179,6 +1180,8 @@ public enum OrePrefixes { } else if (name().startsWith("battery")) { new TC_AspectStack(TCAspects.ELECTRUM, 1).addToAspectList(mAspects); } + + GregTechAPI.sGTCompleteLoad.add(this::onLoadComplete); } public static boolean isInstanceOf(String aName, OrePrefixes aPrefix) { @@ -1297,12 +1300,20 @@ public enum OrePrefixes { return mOreProcessing.add(aRegistrator); } + // Hack to prevent duplicate registry of oredicted materials + HashSet<Materials> used = new HashSet<>(); + public void processOre(Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { if (aMaterial == null) { return; } + if (aMaterial != Materials._NULL && !used.add(aMaterial)) { + GTLog.out.println("Duplicate material registry attempted by " + aModName + " for " + aOreDictName); + return; + } + if (aMaterial.contains(SubTag.NO_RECIPES)) { return; } @@ -1325,6 +1336,10 @@ public enum OrePrefixes { } } + public void onLoadComplete() { + used = null; + } + public Object get(Object aMaterial) { if (aMaterial instanceof Materials) return new ItemData(this, (Materials) aMaterial); return name() + aMaterial; |