Search in sources :

Example 1 with ITintedItem

use of crazypants.enderio.base.render.ITintedItem in project EnderIO by SleepyTrousers.

the class SmartModelAttacher method registerColoredBlocksAndItems.

@SideOnly(Side.CLIENT)
public static void registerColoredBlocksAndItems() {
    NNList<Block> blocklist = new NNList<Block>();
    NNList<Item> itemlist = new NNList<Item>();
    for (RegistrationHolder<?, ?> holder : blocks) {
        Block block = holder.block;
        Item item = Item.getItemFromBlock(block);
        if (block instanceof IPaintable || block instanceof ITintedBlock || block instanceof ITintedItem || item instanceof ITintedItem) {
            blocklist.add(block);
            if (item != Items.AIR) {
                itemlist.add(item);
            }
        } else {
            if (block instanceof IBlockColor) {
                Minecraft.getMinecraft().getBlockColors().registerBlockColorHandler((IBlockColor) block, block);
            }
            if (item instanceof IItemColor) {
                Minecraft.getMinecraft().getItemColors().registerItemColorHandler((IItemColor) item, item);
            }
        }
    }
    PaintTintHandler handler = new PaintTintHandler();
    Minecraft.getMinecraft().getBlockColors().registerBlockColorHandler(handler, blocklist.toArray(new Block[0]));
    Minecraft.getMinecraft().getItemColors().registerItemColorHandler(handler, itemlist.toArray(new Item[0]));
}
Also used : IItemColor(net.minecraft.client.renderer.color.IItemColor) Item(net.minecraft.item.Item) ITintedItem(crazypants.enderio.base.render.ITintedItem) IBlockColor(net.minecraft.client.renderer.color.IBlockColor) ITintedItem(crazypants.enderio.base.render.ITintedItem) IPaintable(crazypants.enderio.base.paint.IPaintable) NNList(com.enderio.core.common.util.NNList) ITintedBlock(crazypants.enderio.base.render.ITintedBlock) Block(net.minecraft.block.Block) ITintedBlock(crazypants.enderio.base.render.ITintedBlock) SideOnly(net.minecraftforge.fml.relauncher.SideOnly)

Example 2 with ITintedItem

use of crazypants.enderio.base.render.ITintedItem in project EnderIO by SleepyTrousers.

the class PaintTintHandler method colorMultiplier.

@Override
public int colorMultiplier(@Nonnull ItemStack stack, int tintIndex) {
    if (Prep.isInvalid(stack)) {
        return -1;
    }
    Item item = stack.getItem();
    Block block = Block.getBlockFromItem(item);
    if (block instanceof IPaintable) {
        IBlockState paintSource = ((IPaintable) block).getPaintSource(block, stack);
        if (paintSource != null) {
            final ItemStack paintStack = new ItemStack(paintSource.getBlock(), 1, paintSource.getBlock().getMetaFromState(paintSource));
            if (paintStack.getItem() != item) {
                return Minecraft.getMinecraft().getItemColors().colorMultiplier(paintStack, tintIndex);
            }
        }
    }
    if (item instanceof IItemColor) {
        return ((IItemColor) item).colorMultiplier(stack, tintIndex);
    }
    if (item instanceof ITintedItem) {
        return ((ITintedItem) item).getItemTint(stack, tintIndex);
    }
    if (block instanceof IItemColor) {
        return ((IItemColor) block).colorMultiplier(stack, tintIndex);
    }
    if (block instanceof ITintedItem) {
        return ((ITintedItem) block).getItemTint(stack, tintIndex);
    }
    return -1;
}
Also used : IItemColor(net.minecraft.client.renderer.color.IItemColor) Item(net.minecraft.item.Item) ITintedItem(crazypants.enderio.base.render.ITintedItem) IBlockState(net.minecraft.block.state.IBlockState) ITintedItem(crazypants.enderio.base.render.ITintedItem) IPaintable(crazypants.enderio.base.paint.IPaintable) ITintedBlock(crazypants.enderio.base.render.ITintedBlock) Block(net.minecraft.block.Block) ItemStack(net.minecraft.item.ItemStack)

Aggregations

IPaintable (crazypants.enderio.base.paint.IPaintable)2 ITintedBlock (crazypants.enderio.base.render.ITintedBlock)2 ITintedItem (crazypants.enderio.base.render.ITintedItem)2 Block (net.minecraft.block.Block)2 IItemColor (net.minecraft.client.renderer.color.IItemColor)2 Item (net.minecraft.item.Item)2 NNList (com.enderio.core.common.util.NNList)1 IBlockState (net.minecraft.block.state.IBlockState)1 IBlockColor (net.minecraft.client.renderer.color.IBlockColor)1 ItemStack (net.minecraft.item.ItemStack)1 SideOnly (net.minecraftforge.fml.relauncher.SideOnly)1