Java tutorial
/* 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); } }; }