Newer
Older
Beeriffic / src / main / java / com / watschman / beeriffic / util / RegistryHandler.java
package com.watschman.beeriffic.util;

import com.watschman.beeriffic.Beeriffic;
import com.watschman.beeriffic.bees.EnumBranches;
import com.watschman.beeriffic.bees.EnumSpecies;
import com.watschman.beeriffic.blocks.hives.BlockHive;
import com.watschman.beeriffic.blocks.itemblocks.ItemBlockHive;
import com.watschman.beeriffic.items.ItemComb;
import com.watschman.beeriffic.util.interfaces.IHasOreDictionary;
import forestry.api.apiculture.hives.HiveManager;
import forestry.api.genetics.AlleleManager;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.renderer.block.statemap.IStateMapper;
import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.oredict.OreDictionary;

public class RegistryHandler {
    /* Common Stuff */


    public static void registerHiveGen() {
        for (Block block : Beeriffic.MOD_BLOCKS) {
            if (block instanceof BlockHive) {
                Beeriffic.LOGGER.info("Registering: " + block.getRegistryName().toString());
                HiveManager.hiveRegistry.registerHive(block.getRegistryName().toString(), ((BlockHive) block).getHiveDescription());
                HiveManager.hiveRegistry.addDrops(block.getRegistryName().toString(), ((BlockHive) block).getHiveDrops());
            }
        }
    }

    public static void registerBeeBranches() {
        for(EnumBranches beeBranch : EnumBranches.values()) {
            AlleleManager.alleleRegistry.getClassification("family.apidae").addMemberGroup(beeBranch.getClassification());
        }
    }

    public static void registerBees() {
        for (EnumSpecies enumSpecies : EnumSpecies.values()) {
            enumSpecies.registerGeneTemplate();
        }
    }

    public static void registerOreDictEntries() {
        for (Item item : Beeriffic.MOD_ITEMS) {
            if(item instanceof IHasOreDictionary) {
                if(((IHasOreDictionary) item).getOreDictionaryEntries() != null) {
                    for(String oreDictEntry : ((IHasOreDictionary) item).getOreDictionaryEntries()) {
                        OreDictionary.registerOre(oreDictEntry, item);
                    }
                }
            }

            if(item instanceof ItemBlock) {
                Block block = ((ItemBlock) item).getBlock();
                if(block instanceof IHasOreDictionary) {
                    if(((IHasOreDictionary) block).getOreDictionaryEntries() != null) {
                        for (String oreDictEntry : ((IHasOreDictionary) block).getOreDictionaryEntries()) {
                            OreDictionary.registerOre(oreDictEntry, item);
                        }
                    }
                }
            }
        }
    }

    /* Client Stuff */

    @SideOnly(Side.CLIENT)
    public static void registerBlockModels() {
        for(Block block : Beeriffic.MOD_BLOCKS) {
            if(block instanceof IStateMapper) {
                ModelLoader.setCustomStateMapper(block, (IStateMapper)block);
            }
        }
    }

    @SideOnly(Side.CLIENT)
    public static void registerItemModels() {
        for(Item item : Beeriffic.MOD_ITEMS) {
            String path;
            if(item instanceof ItemComb) {
                path = Beeriffic.MOD_ID + ":bee_comb";
            } else if(item instanceof ItemBlockHive) {
                path = Beeriffic.MOD_ID + ":bee_hive";
            } else {
                path = Beeriffic.MOD_ID + ":" + item.getRegistryName();
            }
            ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(path));
        }
    }

    @SideOnly(Side.CLIENT)
    public static void registerColorHandlers() {
        for(Item item : Beeriffic.MOD_ITEMS) {
            if(item instanceof IItemColor) {
                Minecraft.getMinecraft().getItemColors().registerItemColorHandler((IItemColor)item, item);
            }
        }

        for(Block block : Beeriffic.MOD_BLOCKS) {
            if(block instanceof IBlockColor) {
                Minecraft.getMinecraft().getBlockColors().registerBlockColorHandler((IBlockColor)block, block);
            }
        }
    }
}