XFactHD.thermalreactors.ThermalReactors.java Source code

Java tutorial

Introduction

Here is the source code for XFactHD.thermalreactors.ThermalReactors.java

Source

/*  Copyright (C) <2015>  <XFactHD, DrakoAlcarus>
    
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU 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 XFactHD.thermalreactors;

import XFactHD.thermalreactors.common.CommonProxy;
import XFactHD.thermalreactors.common.TRContent;
import XFactHD.thermalreactors.common.net.PacketFissionControllerButtonClick;
import XFactHD.thermalreactors.common.util.*;

import com.google.common.base.Function;
import com.google.common.collect.Ordering;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLInterModComms;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
import cpw.mods.fml.relauncher.Side;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

@SuppressWarnings("unused")
@Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.VERSION, dependencies = Reference.DEPENDENCIES)
public class ThermalReactors {
    public static SimpleNetworkWrapper TRNetWrapper;
    private static Comparator<ItemStack> tabSorter;

    @Mod.Instance(Reference.MOD_ID)
    public static ThermalReactors instance;

    @SidedProxy(serverSide = Reference.PROXY_SERVER, clientSide = Reference.PROXY_CLIENT)
    private static CommonProxy proxy;

    @Mod.EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        LogHelper.info("Hello Minecraft!");
        if (Loader.isModLoaded("Optifine")) {
            LogHelper.warn("Optifine is loaded, this is not supported!!!");
        }
        TRNetWrapper = NetworkRegistry.INSTANCE.newSimpleChannel("TRNetWrapper");
        TRNetWrapper.registerMessage(
                PacketFissionControllerButtonClick.HandlerPacketFissionControllerButtonClick.class,
                PacketFissionControllerButtonClick.class, 0, Side.SERVER);
        proxy.preInit(event);
        LogHelper.info("PreInit complete");
    }

    @Mod.EventHandler
    public void init(FMLInitializationEvent event) {
        proxy.init(event);
        initTabSorter();
        LogHelper.info("Init complete");
    }

    @Mod.EventHandler
    public void postInit(FMLPostInitializationEvent event) {
        proxy.postInit(event);
        LogHelper.info("PostInit complete");
    }

    @Mod.EventHandler
    public void imc(FMLInterModComms.IMCEvent event) {
        IMCHandler.handleIMC(event);
    }

    private static void initTabSorter() {
        List<Item> order = Arrays.asList(Item.getItemFromBlock(TRContent.blockOre),
                Item.getItemFromBlock(TRContent.blockBuilding), Item.getItemFromBlock(TRContent.blockConcrete),
                TRContent.itemSteamBucket, TRContent.itemMaterial, TRContent.itemFusionCell,
                TRContent.itemFuelRodUranium, TRContent.itemFuelRodMOX, TRContent.itemTRAugment,
                TRContent.itemRadHelmet, TRContent.itemRadChestplate, TRContent.itemRadPants,
                TRContent.itemRadBoots, Item.getItemFromBlock(TRContent.blockReactorComponent),
                Item.getItemFromBlock(TRContent.blockTurbineComponent), TRContent.itemTurbineBlade,
                /*Item.getItemFromBlock(TRContent.blockFusionComponent),*/ Item
                        .getItemFromBlock(TRContent.blockRFHandler));
        tabSorter = Ordering.explicit(order).onResultOf(new Function<ItemStack, Item>() {
            @Override
            public Item apply(ItemStack input) {
                return input.getItem();
            }
        });
    }

    public static CreativeTabs creativeTab = new CreativeTabs(Reference.MOD_ID) {
        @Override
        public Item getTabIconItem() {
            return null;
        }

        @Override
        public ItemStack getIconItemStack() {
            return new ItemStack(TRContent.blockOre, 1, 0);
        }

        @Override
        public void displayAllReleventItems(List list) {
            super.displayAllReleventItems(list);
            Collections.sort(list, tabSorter);
        }
    };
}