Package mods.railcraft.common.core

Source Code of mods.railcraft.common.core.Railcraft

/*
* 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.core;

import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;
import com.google.common.primitives.Ints;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.*;
import cpw.mods.fml.common.registry.GameRegistry;
import java.io.File;
import org.apache.logging.log4j.Level;
import mods.railcraft.common.plugins.forge.ItemRegistry;
import mods.railcraft.api.crafting.IRockCrusherRecipe;
import mods.railcraft.api.crafting.RailcraftCraftingManager;
import mods.railcraft.api.fuel.FuelManager;
import mods.railcraft.common.blocks.aesthetics.cube.EnumCube;
import mods.railcraft.common.blocks.machine.alpha.EnumMachineAlpha;
import mods.railcraft.common.blocks.machine.beta.EnumMachineBeta;
import mods.railcraft.common.blocks.machine.gamma.EnumMachineGamma;
import mods.railcraft.common.blocks.aesthetics.post.EnumPost;
import mods.railcraft.common.blocks.anvil.BlockRCAnvil;
import mods.railcraft.common.blocks.machine.delta.EnumMachineDelta;
import mods.railcraft.common.blocks.machine.epsilon.EnumMachineEpsilon;
import mods.railcraft.common.blocks.signals.EnumSignal;
import mods.railcraft.common.carts.LinkageManager;
import mods.railcraft.common.fluids.RailcraftFluids;
import mods.railcraft.common.items.ItemMagnifyingGlass;
import mods.railcraft.common.items.firestone.BlockFirestoneRecharge;
import mods.railcraft.common.modules.ModuleManager;
import mods.railcraft.common.plugins.craftguide.CraftGuidePlugin;
import mods.railcraft.common.util.inventory.filters.StackFilter;
import mods.railcraft.common.util.misc.BallastRegistry;
import mods.railcraft.common.util.misc.BlinkTick;
import mods.railcraft.common.util.misc.Game;
import mods.railcraft.common.util.network.PacketHandler;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;

@Mod(modid = Railcraft.MOD_ID, name = "Railcraft",
     version = Railcraft.VERSION,
     certificateFingerprint = "a0c255ac501b2749537d5824bb0f0588bf0320fa",
     acceptedMinecraftVersions = "[1.7.10,1.8)",
     dependencies = "required-after:Forge@[10.13.1.1217,);"
     + "after:BuildCraft|Core[5.0,);"
     + "after:BuildCraft|Energy;"
     + "after:BuildCraft|Builders;"
     + "after:BuildCraft|Factory;"
     + "after:BuildCraftAPI|gates[2.0,);"
     + "after:BuildCraftAPI|power[1.1,);"
     + "after:Forestry;"
     + "after:Thaumcraft;"
     + "after:IC2@[2.0.140,)")
public final class Railcraft {

    public static final String MOD_ID = "Railcraft";
    public static final String VERSION = "@VERSION@";
    public static final String MC_VERSION = "[1.7.10,1.8)";
    @Instance("Railcraft")
    public static Railcraft instance;
    private File configFolder;
//    public int totalMultiBlockUpdates = 0;
//    public int ticksSinceLastMultiBlockPrint = 0;
    @SidedProxy(clientSide = "mods.railcraft.client.core.ClientProxy", serverSide = "mods.railcraft.common.core.CommonProxy")
    public static CommonProxy proxy;

    public static CommonProxy getProxy() {
        return proxy;
    }

    public static Railcraft getMod() {
        return instance;
    }

    public static String getModId() {
        return MOD_ID;
    }

    public static String getVersion() {
        return VERSION;
    }

    public File getConfigFolder() {
        return configFolder;
    }

    @Mod.EventHandler
    public void processIMCRequests(FMLInterModComms.IMCEvent event) {
        Splitter splitter = Splitter.on("@").trimResults();
        for (FMLInterModComms.IMCMessage mess : event.getMessages()) {
            if (mess.key.equals("ballast")) {
                String[] tokens = Iterables.toArray(splitter.split(mess.getStringValue()), String.class);
                if (tokens.length != 2) {
                    Game.log(Level.WARN, String.format("Mod %s attempted to register a ballast, but failed: %s", mess.getSender(), mess.getStringValue()));
                    continue;
                }
                String blockName = tokens[0];
                Integer metadata = Ints.tryParse(tokens[1]);
                if (blockName == null || metadata == null) {
                    Game.log(Level.WARN, String.format("Mod %s attempted to register a ballast, but failed: %s", mess.getSender(), mess.getStringValue()));
                    continue;
                }
                BallastRegistry.registerBallast(Block.getBlockFromName(blockName), metadata);
                Game.log(Level.INFO, String.format("Mod %s registered %s as a valid ballast", mess.getSender(), mess.getStringValue()));
            } else if (mess.key.equals("boiler-fuel-liquid")) {
                String[] tokens = Iterables.toArray(splitter.split(mess.getStringValue()), String.class);
                if (tokens.length != 2) {
                    Game.log(Level.WARN, String.format("Mod %s attempted to register a liquid Boiler fuel, but failed: %s", mess.getSender(), mess.getStringValue()));
                    continue;
                }
                Fluid fluid = FluidRegistry.getFluid(tokens[0]);
                Integer fuel = Ints.tryParse(tokens[1]);
                if (fluid == null || fuel == null) {
                    Game.log(Level.WARN, String.format("Mod %s attempted to register a liquid Boiler fuel, but failed: %s", mess.getSender(), mess.getStringValue()));
                    continue;
                }
                FuelManager.addBoilerFuel(fluid, fuel);
                Game.log(Level.INFO, String.format("Mod %s registered %s as a valid liquid Boiler fuel", mess.getSender(), mess.getStringValue()));
            } else if (mess.key.equals("rock-crusher")) {
               NBTTagCompound nbt = mess.getNBTValue();
      ItemStack input = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("input"));
      IRockCrusherRecipe recipe = RailcraftCraftingManager.rockCrusher.createNewRecipe(input, nbt.getBoolean("matchMeta"), nbt.getBoolean("matchNBT"));
      for (int i = 0; i < 9; i++)
        if (nbt.hasKey("output" + i)) {
             NBTTagCompound outputNBT = nbt.getCompoundTag("output" + i);
          recipe.addOutput(ItemStack.loadItemStackFromNBT(outputNBT), outputNBT.getFloat("chance"));
        }
            }
        }
    }

    @Mod.EventHandler
    public void fingerprintError(FMLFingerprintViolationEvent event) {
        if (Game.isObfuscated()) {
            Game.logErrorFingerprint(MOD_ID);
            FMLCommonHandler.instance().exitJava(1, false);
        }
    }

    @Mod.EventHandler
    public void preInit(FMLPreInitializationEvent event) {
//        Game.log(Level.FINE, "Pre-Init Phase");

        configFolder = new File(event.getModConfigurationDirectory(), "railcraft");
        RailcraftConfig.preInit();

        PacketHandler.init();

        StartupChecks.checkForNewVersion();

        StackFilter.initialize();

        ModuleManager.preInit();

        proxy.preInitClient();

        FMLInterModComms.sendMessage("OpenBlocks", "donateUrl", "http://www.railcraft.info/donate/");
    }

    @Mod.EventHandler
    public void init(FMLInitializationEvent event) {
//        Game.log(Level.FINE, "Init Phase");

        ModuleManager.init();

        FMLCommonHandler.instance().bus().register(new BlinkTick());

        // Finish initializing ItemRegistry
        for (EnumMachineAlpha type : EnumMachineAlpha.values()) {
            if (type.isAvaliable())
                ItemRegistry.registerItemStack(type.getTag(), type.getItem());
        }

        for (EnumMachineBeta type : EnumMachineBeta.values()) {
            if (type.isAvaliable())
                ItemRegistry.registerItemStack(type.getTag(), type.getItem());
        }

        for (EnumMachineGamma type : EnumMachineGamma.values()) {
            if (type.isAvaliable())
                ItemRegistry.registerItemStack(type.getTag(), type.getItem());
        }

        for (EnumMachineDelta type : EnumMachineDelta.values()) {
            if (type.isAvaliable())
                ItemRegistry.registerItemStack(type.getTag(), type.getItem());
        }

        for (EnumMachineEpsilon type : EnumMachineEpsilon.values()) {
            if (type.isAvaliable())
                ItemRegistry.registerItemStack(type.getTag(), type.getItem());
        }

        for (EnumSignal type : EnumSignal.values()) {
            if (type.isEnabled())
                ItemRegistry.registerItemStack(type.getTag(), type.getItem());
        }

        for (EnumCube type : EnumCube.values()) {
            if (type.isEnabled())
                ItemRegistry.registerItemStack(type.getTag(), type.getItem());
        }

        for (EnumPost type : EnumPost.values()) {
            if (type.isEnabled())
                ItemRegistry.registerItemStack(type.getTag(), type.getItem());
        }
    }

    @Mod.EventHandler
    public void postInit(FMLPostInitializationEvent event) {
//        Game.log(Level.FINE, "Post-Init Phase");
        ModuleManager.postInit();

        proxy.initClient();

        CraftGuidePlugin.init();

        RailcraftConfig.postInit();
    }

    @Mod.EventHandler
    public void serverCleanUp(FMLServerStoppingEvent event) {
        LinkageManager.reset();
    }

    @Mod.EventHandler
    public void missingMapping(FMLMissingMappingsEvent event) {
        for (FMLMissingMappingsEvent.MissingMapping mapping : event.get()) {
            if (mapping.type == GameRegistry.Type.BLOCK) {
                if (mapping.name.equals("Railcraft:tile.railcraft.block.fluid.creosote") && RailcraftFluids.CREOSOTE.getBlock() != null)
                    mapping.remap(RailcraftFluids.CREOSOTE.getBlock());
                else if (mapping.name.equals("Railcraft:tile.railcraft.block.fluid.steam") && RailcraftFluids.STEAM.getBlock() != null)
                    mapping.remap(RailcraftFluids.STEAM.getBlock());
                else if (mapping.name.equals("Railcraft:tile.block.firestone.recharge") && BlockFirestoneRecharge.getBlock() != null)
                    mapping.remap(BlockFirestoneRecharge.getBlock());
                else if (mapping.name.equals("Railcraft:tile.railcraft.block.anvil") && BlockRCAnvil.getBlock() != null)
                    mapping.remap(BlockRCAnvil.getBlock());
                else if (mapping.name.equals("Railcraft:tile.railcraft.hidden"))
                    mapping.ignore();
            } else if (mapping.type == GameRegistry.Type.ITEM) {
                if (mapping.name.equals("Railcraft:tool.mag.glass") && ItemMagnifyingGlass.item != null)
                    mapping.remap(ItemMagnifyingGlass.item);
                else if (mapping.name.equals("Railcraft:tile.railcraft.block.fluid.creosote") && RailcraftFluids.CREOSOTE.getBlock() != null)
                    mapping.remap(Item.getItemFromBlock(RailcraftFluids.CREOSOTE.getBlock()));
                else if (mapping.name.equals("Railcraft:tile.railcraft.block.fluid.steam") && RailcraftFluids.STEAM.getBlock() != null)
                    mapping.remap(Item.getItemFromBlock(RailcraftFluids.STEAM.getBlock()));
                else if (mapping.name.equals("Railcraft:tile.block.firestone.recharge") && BlockFirestoneRecharge.getBlock() != null)
                    mapping.remap(Item.getItemFromBlock(BlockFirestoneRecharge.getBlock()));
                else if (mapping.name.equals("Railcraft:tile.railcraft.block.anvil") && BlockRCAnvil.getBlock() != null)
                    mapping.remap(Item.getItemFromBlock(BlockRCAnvil.getBlock()));
                else if (mapping.name.equals("Railcraft:tile.railcraft.hidden"))
                    mapping.ignore();
            }
        }
    }

}
TOP

Related Classes of mods.railcraft.common.core.Railcraft

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.