com.minestellar.core.MinestellarCore.java Source code

Java tutorial

Introduction

Here is the source code for com.minestellar.core.MinestellarCore.java

Source

/**
 * Copyright (c) 22/Feb/2015 Davide Cossu & Matthew Albrecht.
 *
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 3 of the License, or (at your option) any
 * later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, see <http://www.gnu.org/licenses>.
 */

package com.minestellar.core;

import com.google.common.base.Stopwatch;
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.*;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;

import com.minestellar.api.data.wireless.WirelessDataNetwork;
import com.minestellar.core.blocks.CoreBlocks;
import com.minestellar.core.blocks.tile.*;
import com.minestellar.core.gui.PlanetMover;
import com.minestellar.core.handler.GuiHandler;
import com.minestellar.core.items.CoreItems;
import com.minestellar.core.network.NetworkHandler;
import com.minestellar.core.proxy.CommonProxyCore;
import com.minestellar.core.recipe.RecipeManagerCore;
import com.minestellar.core.util.ConfigManagerCore;
import com.minestellar.core.util.MinestellarCreativeTab;
import com.minestellar.core.world.gen.OverworldGenerator;
import com.minestellar.test.blocks.TestDataBlock;
import com.minestellar.test.blocks.TestDataTE;
import com.minestellar.utils.LogHelper;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;

@Mod(modid = MinestellarCore.MOD_ID, name = MinestellarCore.MOD_NAME, version = Constants.VERSION)
public class MinestellarCore {

    public static final String MOD_ID = "MinestellarCore";
    public static final String MOD_NAME = "Minestellar Core";

    public static final String ASSET_PREFIX = "minestellar_core";
    public static final String TEXTURE_PREFIX = MinestellarCore.ASSET_PREFIX + ":";

    public static CreativeTabs stellarBlocksTab;
    public static CreativeTabs stellarItemsTab;

    public static LogHelper log = new LogHelper(MinestellarCore.MOD_ID);

    public static HashMap<String, ItemStack> blocksList = new HashMap<String, ItemStack>();
    public static HashMap<String, ItemStack> itemList = new HashMap<String, ItemStack>();

    public static ArrayList<PlanetMover> planetMovers = new ArrayList<PlanetMover>();

    @Instance(MinestellarCore.MOD_ID)
    public static MinestellarCore instance = new MinestellarCore();

    @SidedProxy(clientSide = "com.minestellar.core.proxy.ClientProxyCore", serverSide = "com.minestellar.core.proxy.CommonProxyCore")
    public static CommonProxyCore proxy;

    public static void registerBlock(Block block, Class<? extends ItemBlock> itemBlockClass) {
        GameRegistry.registerBlock(block, itemBlockClass, block.getUnlocalizedName().replace("tile.", ""));
    }

    public static void registerItem(Item item) {
        GameRegistry.registerItem(item, item.getUnlocalizedName().replace("item.", ""));
    }

    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        Stopwatch stopwatch = Stopwatch.createStarted();

        new ConfigManagerCore(new File(event.getModConfigurationDirectory(), "Minestellar/blocks.cfg"));

        CoreBlocks.init();
        CoreItems.init();

        GameRegistry.registerBlock(new TestDataBlock("testDataBlock"), "testDataBlock");

        MinestellarCore.proxy.preInit(event);

        log.info("PreInitialization Completed in " + stopwatch.elapsed(TimeUnit.MILLISECONDS) + " ms.");
    }

    @EventHandler
    public void init(FMLInitializationEvent event) {
        Stopwatch stopwatch = Stopwatch.createStarted();

        NetworkHandler.init();

        MinestellarCore.stellarBlocksTab = new MinestellarCreativeTab(CreativeTabs.getNextID(), "MinestellarBlocks",
                Item.getItemFromBlock(CoreBlocks.coreOreBlocks), 0);
        MinestellarCore.stellarItemsTab = new MinestellarCreativeTab(CreativeTabs.getNextID(), "MinestellarItems",
                CoreItems.coreBasicItems, 0);

        GameRegistry.registerWorldGenerator(new OverworldGenerator(CoreBlocks.coreOreBlocks, 0, 24, 0, 200, 7), 6);
        GameRegistry.registerWorldGenerator(new OverworldGenerator(CoreBlocks.coreOreBlocks, 1, 22, 0, 200, 7), 4);
        GameRegistry.registerWorldGenerator(new OverworldGenerator(CoreBlocks.coreOreBlocks, 2, 12, 0, 200, 3), 4);
        GameRegistry.registerWorldGenerator(new OverworldGenerator(CoreBlocks.coreOreBlocks, 3, 12, 0, 200, 3), 2);
        GameRegistry.registerWorldGenerator(new OverworldGenerator(CoreBlocks.coreOreBlocks, 4, 24, 0, 200, 7), 4);
        GameRegistry.registerWorldGenerator(new OverworldGenerator(CoreBlocks.coreOreBlocks, 5, 22, 0, 200, 7), 4);
        GameRegistry.registerWorldGenerator(new OverworldGenerator(CoreBlocks.coreOreBlocks, 6, 12, 0, 200, 3), 7);

        GameRegistry.registerWorldGenerator(new OverworldGenerator(CoreBlocks.oilFluidBlock, 0, 25, 20, 75, 3), 20);

        RecipeManagerCore.loadRecipes();

        this.registerTileEntities();
        this.registerCreatures();
        this.registerOtherEntities();

        NetworkRegistry.INSTANCE.registerGuiHandler(this, new GuiHandler());

        MinestellarCore.proxy.init(event);

        log.info("Initialization Completed in " + stopwatch.elapsed(TimeUnit.MILLISECONDS) + " ms.");
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event) {
        Stopwatch stopwatch = Stopwatch.createStarted();

        MinestellarCore.proxy.postInit(event);

        log.info("PostInitialization Completed in " + stopwatch.elapsed(TimeUnit.MILLISECONDS) + " ms.");
    }

    private void registerTileEntities() {
        GameRegistry.registerTileEntity(TestDataTE.class, "testData");
        GameRegistry.registerTileEntity(TileEntityCable.class, "cable");
        GameRegistry.registerTileEntity(TileEntityPipe.class, "pipe");
        GameRegistry.registerTileEntity(TileEntityOxygenCollector.class, "oxygen_collector");
        GameRegistry.registerTileEntity(TileEntitySolarGenerator.class, "solar_generator");
        GameRegistry.registerTileEntity(TileEntityGasSink.class, "gas_sink");
        GameRegistry.registerTileEntity(TileEntityComputer.class, "computer");
        GameRegistry.registerTileEntity(TileEntityRadioAntenna.class, "radio_antenna");
    }

    private void registerCreatures() {
    }

    private void registerOtherEntities() {
    }

    @EventHandler
    public void serverStopping(FMLServerStoppingEvent event) {
        WirelessDataNetwork.clearQueue(); //Clears the queue of packets
    }

    @EventHandler
    public void serverStarting(FMLServerStartingEvent event) {
        WirelessDataNetwork wirelessDataNetwork = new WirelessDataNetwork();
        wirelessDataNetwork.initTimer(); //Initialises the timer for the wireless network
    }

}