Package denoflionsx.DenPipes.AddOns.Core

Source Code of denoflionsx.DenPipes.AddOns.Core.CoreAddon

package denoflionsx.DenPipes.AddOns.Core;

import buildcraft.api.gates.ActionManager;
import buildcraft.api.gates.IAction;
import buildcraft.transport.BlockGenericPipe;
import static buildcraft.transport.BlockGenericPipe.createPipe;
import buildcraft.transport.ItemPipe;
import buildcraft.transport.Pipe;
import buildcraft.transport.TransportProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import denoflionsx.DenPipes.API.Actions.DenAction;
import denoflionsx.DenPipes.API.Annotations.PipeName;
import denoflionsx.DenPipes.API.DenPipesAPI;
import denoflionsx.DenPipes.API.Interfaces.IDenPipeAddon;
import denoflionsx.DenPipes.API.Managers.IActionManager;
import denoflionsx.DenPipes.API.Managers.IPipeManager;
import denoflionsx.DenPipes.AddOns.Core.Pipe.DenItemPipe;
import denoflionsx.DenPipes.Config.Tuning;
import denoflionsx.DenPipes.Core.DenPipesCore;
import denoflionsx.denLib.Lib.denLib;
import denoflionsx.denLib.Mod.Handlers.WorldHandler.IdenWorldEventHandler;
import denoflionsx.denLib.Mod.Handlers.WorldHandler.WorldEventHandler;
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;

public class CoreAddon implements IDenPipeAddon, IPipeManager, IdenWorldEventHandler, IActionManager {
   
    private int startID = 20000;
    private int startActionID = 333;
   
    @Override
    public void preinit(FMLPreInitializationEvent event) {
        DenPipesAPI.manager.Pipes = this;
        DenPipesAPI.manager.Actions = this;
    }
   
    @Override
    public void init(FMLInitializationEvent event) {
    }
   
    @Override
    public void postinit(FMLPostInitializationEvent evt) {
        Tuning.config.save();
        WorldEventHandler.registerHandler(this);
    }
   
    @Override
    public ItemPipe registerPipe(Class<? extends Pipe> Class) {
        try{
            DenPipesCore.proxy.print("Testing " + Class.getName() + " for valid constructor...");
            Constructor con = Class.getConstructor(new Class[]{int.class});
            if (con == null){
                denLib.RandomUtils.throwCustomException("Failed to find valid constructor in " + Class.getName() + "!");
            }
        }catch(Throwable t){
            t.printStackTrace();
        }
        int itemID = this.getIDForPipe(Class);
        DenItemPipe pipe = new DenItemPipe(itemID);
        BlockGenericPipe.pipes.put(pipe.itemID, Class);
        String name = "";
        for (Annotation a : Class.getDeclaredAnnotations()) {
            if (a instanceof PipeName) {
                PipeName name1;
                name1 = (PipeName) a;
                name = name1.name();
            }
        }
        pipe.name = name;
        Pipe dummyPipe = createPipe(pipe.itemID);
        if (dummyPipe != null) {
            pipe.setPipeIconIndex(dummyPipe.getIconIndexForItem());
            TransportProxy.proxy.setIconProviderFromPipe(pipe, dummyPipe);
        }
        DenPipesCore.proxy.registerPipeRendering(pipe);
        return pipe;
    }
   
    @Override
    public int getIDForPipe(Class<? extends Pipe> Class) {
        return Tuning.config.getItem(Class.getName(), startID++).getInt();
    }
   
    @Override
    public void onWorldLoaded() {
        WorldEventHandler.unregisterHandler(this);
    }
   
    @Override
    public void onWorldEnded() {
    }
   
    @Override
    public IAction registerAction(Class<? extends DenAction> Clazz) {
        try {
            DenAction a = (DenAction) Clazz.newInstance();
            ActionManager.registerAction(a);
            return ActionManager.actions.get(a.getUniqueTag());
        } catch (Exception ex) {
            ex.printStackTrace();
            DenPipesCore.proxy.severe("Action register failed!");
        }
        return null;
    }
   
    @Override
    public int getIDForAction(Class<? extends DenAction> Class) {
        return Tuning.config.get("actions", Class.getName(), startActionID++).getInt();
    }
}
TOP

Related Classes of denoflionsx.DenPipes.AddOns.Core.CoreAddon

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.