// Path: src/com/jaquadro/minecraft/chameleon/resources/IItemMeshMapper.java
// public interface IItemMeshMapper
// {
//     List<Pair<ItemStack, ModelResourceLocation>> getMeshMappings ();
// }


import com.jaquadro.minecraft.chameleon.resources.IItemMeshMapper;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import org.apache.commons.lang3.tuple.Pair;
import java.util.ArrayList;
import java.util.List;
package com.jaquadro.minecraft.chameleon.resources.register;



public abstract class DefaultRegister<T extends Block> implements IUnifiedRegister
{
    private final T block;

    public DefaultRegister (T block) {
        this.block = block;
    }

    @Override
    public Item getItem () {
        return Item.getItemFromBlock(block);
    }

    @Override
    public List<ItemStack> getItemVariants () {
        Item item = getItem();
        NonNullList<ItemStack> variants = NonNullList.create();

// Path: src/com/jaquadro/minecraft/chameleon/resources/IItemMeshMapper.java
// public interface IItemMeshMapper
// {
//     List<Pair<ItemStack, ModelResourceLocation>> getMeshMappings ();
// }


// Path: src/com/jaquadro/minecraft/chameleon/resources/register/DefaultRegister.java
import com.jaquadro.minecraft.chameleon.resources.IItemMeshMapper;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import org.apache.commons.lang3.tuple.Pair;
import java.util.ArrayList;
import java.util.List;

package com.jaquadro.minecraft.chameleon.resources.register;



public abstract class DefaultRegister<T extends Block> implements IUnifiedRegister
{
    private final T block;

    public DefaultRegister (T block) {
        this.block = block;
    }

    @Override
    public Item getItem () {
        return Item.getItemFromBlock(block);
    }

    @Override
    public List<ItemStack> getItemVariants () {
        Item item = getItem();
        NonNullList<ItemStack> variants = NonNullList.create();

        if (item instanceof IItemMeshMapper) {