/* * Copyright (c) CovertJaguar, 2014 http://railcraft.info * * This code is the property of CovertJaguar * and may only be used with explicit written * permission unless otherwise specified on the * license page at http://railcraft.info/wiki/info:license. */ package mods.railcraft.common.modules; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.*; import mods.railcraft.common.blocks.BlockFactory; import mods.railcraft.common.gui.EnumGui; import mods.railcraft.common.modules.ModuleManager.Module; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.world.World; public abstract class RailcraftModule { public final List<BlockFactory> blockFactories = new ArrayList<BlockFactory>(); public final void addBlockFactory(BlockFactory factory) { if (ModuleManager.getStage() != ModuleManager.Stage.PRE_INIT) throw new RuntimeException("You can only define Block Factories in Pre-Init!"); blockFactories.add(factory); } public final void initBlocks() { for (BlockFactory factory : blockFactories) { factory.initBlock(); } } public final void initRecipes(Module module) { for (BlockFactory factory : blockFactories) { factory.initRecipes(module); } } public final void finalizeBlocks(Module module) { for (BlockFactory factory : blockFactories) { factory.finalizeBlocks(module); } } public Set<Module> getDependencies() { return EnumSet.noneOf(Module.class); } public void preInit() { } public void initFirst() { } public void initSecond() { } public void postInit() { } public void postInitNotLoaded() { } public boolean canModuleLoad() { return true; } public void printLoadError() { } @SideOnly(Side.CLIENT) public GuiScreen getGuiScreen(EnumGui gui, InventoryPlayer inv, Object obj, World world, int x, int y, int z) { return null; } public Container getGuiContainer(EnumGui gui, InventoryPlayer inv, Object obj, World world, int x, int y, int z) { return null; } @Override public String toString() { return getClass().getSimpleName(); } }