Интеграция с другими модами [1.7.10]

Решил сделать интеграцию своего мода с другими. Так вот, я знаю как это сделать в коде так, чтобы интеграция всегда запускалась(т.е. например: добавил крафт в дробитель IC2, он будет добавляться всегда), но тут возникает проблема: что, если не будет того или иного мода, с которыми я задумал интеграцию? Краш, должно быть... А можно ли как-то сделать, чтобы проверялось "есть ли такой мод в сборке", а потом запускалась интеграция? (Пример: if (мод "мод" установлен/загружен) Integration.init(); ) 
Спасибо!
 

timaxa007

Модератор
5,831
409
672
Думаю, что да.
 
А, если у меня в вот так вот сделано?
Код:
package ThaumicLostMagic;

import ThaumicLostMagic.common.Config.ConfOther;
import ThaumicLostMagic.common.core.WorldGeneretor.GenWorldOre;
import ThaumicLostMagic.common.Book.ConfPages;
import ThaumicLostMagic.common.Config.ConfBlocks;
import ThaumicLostMagic.common.Config.ConfItems;
import ThaumicLostMagic.common.Config.ConfRecipes;
import ThaumicLostMagic.common.Config.CreativeTabTLM;
import ThaumicLostMagic.common.Config.essense.ItemEssenseCrafting;
import ThaumicLostMagic.common.Config.ic2Integration.IC2Integration;
import ThaumicLostMagic.common.core.WorldGeneretor.GenWorldOre;
import ThaumicLostMagic.client.render.ClientProxy;
import ThaumicLostMagic.client.render.CommonProxy;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import thaumcraft.api.ThaumcraftApi;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.common.config.ConfigItems;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;

@Mod (modid = "ThaumicLostMagic", name = "Thaumic lost magic addon", version = "0.0.1")




public class LostMagic {
    
    @SidedProxy(clientSide="ThaumicLostMagic.client.render.ClientProxy", serverSide="ThaumicLostMagic.client.render.CommonProxy")
    public static CommonProxy proxy;
     
    @Mod.Instance("ThaumicLostMagic")
    public static LostMagic instance;

    @Mod.EventHandler
    public void preLoad(FMLPreInitializationEvent event)
    {
        
        proxy.registerRenderers();
    }
    
    public static CreativeTabs tabTLM = new CreativeTabTLM(CreativeTabs.getNextID(), "ThaumicLostMagic");
    
    
        
    
    @Mod.EventHandler
    public void postInit(FMLPostInitializationEvent evt) {
        ConfBlocks.InitBlocks();
        ConfItems.InitItems();
        ConfRecipes.Init();
        GenWorldOre.Init();
        ItemEssenseCrafting.InitEssenses();
        ConfPages.InitCategory();
        
        if (Loader.isModLoaded("IC")) {
            IC2Integration.InitIcIntegration();
        }
        
    }
}

у меня там в импортах есть IC2Integration, а в нем полно из IC2. Если он у меня только в импортах, но void IC2Integration.InitIcIntegration(); не запуститься, то краш будет?
 
398
4
7
Будет. Даже если все эти моды установлены, могут быть вылеты, потому что твой мод может загрузится раньше этих модов и возникнут ошибки.
В аннотации @Mod нужно писать dependencies="after:ид мода 1;after:ид мода 2;" Или required-after, если хочешь чтобы твой мод не запускался без этих модов.
Тебе нужны аннотации @Optional
Примеры: https://www.google.ru/#q=site:github.com+forge+"@Optional"&newwindow=1&start=10
https://github.com/asiekierka/Compu...n/java/pl/asie/computronics/Computronics.java
https://github.com/asiekierka/Compu...mputronics/tile/TileEntityPeripheralBase.java
 
Т.е. не получится сделать мод, который и сам по себе работает, и, при наличии некоторых др. модов, имеет с ними интеграцию? Они обязательно все должны стоять?
 
2,955
12
Нет, крашнется только при линковке класса, то бишь при его первом вызове при отсутствии нужного мода.
 
1,239
2
24
Что бы при подключенном моде и использовании его импортов майнкрафт не требовал этот мод.Забыл уже
 
1,239
2
24
Это возможно.Только что убедился.Завтра постараюсь выложить решение
 
398
4
7
XuPuPG написал(а):
Это возможно.Только что убедился.Завтра постараюсь выложить решение
Прокрути страницу немного вверх, может увидишь решение. Также можешь посмотреть мой мод или множество других на гитхабе.
 
Сверху