private static void getItems() {
   Config.tcFilledJar = ItemInterface.getItem(Name, "BlockJarFilledItem");
   Config.tcMiscResource = ItemInterface.getItem(Name, "ItemResource");
   // Config.tcEssentiaBottle = ItemInterface.getItem(Name,
   // "BlockJarFilledItem");
   Config.tcShard = ItemInterface.getItem(Name, "ItemShard");
   Config.tcGolem = ItemInterface.getItem(Name, "ItemGolemPlacer");
   // Config.tcWispEssence = ItemApi.getItem("itemWispEssence",
   // 0).getItem();
   Config.tcNuggets = ItemInterface.getItem(Name, "ItemNugget");
   Config.tcShard = ItemInterface.getItem(Name, "ItemShard");
   Config.tcNuggetChicken = ItemInterface.getItem(Name, "ItemNuggetChicken");
   Config.tcNuggetBeef = ItemInterface.getItem(Name, "ItemNuggetBeef");
   Config.tcNuggetPork = ItemInterface.getItem(Name, "ItemNuggetPork");
 }
  private static void setupItemAspects() {
    ItemStack item;
    AspectList list;

    ThaumcraftApi.registerObjectTag(
        new ItemStack(Items.clock),
        new AspectList(new ItemStack(Items.clock)).add((Aspect) aspectTime, 4));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Items.repeater),
        new AspectList(new ItemStack(Items.repeater)).add((Aspect) aspectTime, 2));

    list = new AspectList(new ItemStack(Blocks.log));
    for (int i = 1; i <= 8; i++) {
      item = ItemInterface.getItemStack("log" + i);
      if (item != null) {
        ThaumcraftApi.registerObjectTag(item, list);
      }
    }

    list = new AspectList(new ItemStack(Blocks.planks));
    for (int i = 1; i <= 2; i++) {
      item = ItemInterface.getItemStack("planks" + i);
      if (item != null) {
        ThaumcraftApi.registerObjectTag(item, list);
      }
    }

    list = new AspectList().add(Aspect.ORDER, 5).add(Aspect.ARMOR, 2).add(Aspect.BEAST, 1);
    item = new ItemStack(Config.fHiveBlock);
    ThaumcraftApi.registerObjectTag(item, list);
    ThaumcraftApi.registerObjectTag(new ItemStack(Config.hive), list);

    list = new AspectList().add(Aspect.LIGHT, 1);
    item = new ItemStack(BlockInterface.getBlock(ForestryHelper.Name, "candle"));
    ThaumcraftApi.registerObjectTag(item, new int[] {item.getItemDamage()}, list);

    list = new AspectList().add(Aspect.DARKNESS, 1);
    item = new ItemStack(BlockInterface.getBlock(ForestryHelper.Name, "stump"));
    ThaumcraftApi.registerObjectTag(item, new int[] {item.getItemDamage()}, list);

    list = new AspectList(new ItemStack(Blocks.glass)).add(Aspect.SENSES, 1);
    item = new ItemStack(BlockInterface.getBlock(ForestryHelper.Name, "glass"));
    ThaumcraftApi.registerObjectTag(item, list);

    list = new AspectList().add(Aspect.EARTH, 2).add(Aspect.WATER, 2);
    item = new ItemStack(BlockInterface.getBlock(ForestryHelper.Name, "soil"));
    ThaumcraftApi.registerObjectTag(item, new int[] {1}, list);

    list = new AspectList(new ItemStack(Blocks.leaves));
    item = ItemInterface.getItemStack(ForestryHelper.Name, "candle");
    ThaumcraftApi.registerObjectTag(item, new int[] {item.getItemDamage()}, list);

    list = new AspectList(new ItemStack(Blocks.sapling));
    item = ItemInterface.getItemStack(ForestryHelper.Name, "candle");
    ThaumcraftApi.registerObjectTag(item, list);

    list = new AspectList() /* .add(Aspect.SEED, 1) */.add(Aspect.PLANT, 1);
    item = ItemInterface.getItemStack(ForestryHelper.Name, "candle");
    ThaumcraftApi.registerObjectTag(item, list);

    list = new AspectList().add(Aspect.CRYSTAL, 1).add(Aspect.EARTH, 2);
    item = ItemInterface.getItemStack(ForestryHelper.Name, "candle");
    ThaumcraftApi.registerObjectTag(
        new ItemStack(item.getItem(), 1, ForestryHelper.BlockResource.APATITE.ordinal()),
        list.copy());
    item = ItemInterface.getItemStack(ForestryHelper.Name, "apatite");
    ThaumcraftApi.registerObjectTag(
        new ItemStack(item.getItem(), 1, item.getItemDamage()), list.copy().add(Aspect.CRYSTAL, 2));

    list = new AspectList().add(Aspect.MOTION, 2).add(Aspect.FLIGHT, 1);
    item = ItemInterface.getItemStack("beeDroneGE");
    ThaumcraftApi.registerObjectTag(item, list);
    list = list.copy().add(Aspect.GREED, 2).add(Aspect.EXCHANGE, 1);
    item = ItemInterface.getItemStack("beePrincessGE");
    ThaumcraftApi.registerObjectTag(item, list);
    item = ItemInterface.getItemStack("beeQueenGE");
    ThaumcraftApi.registerObjectTag(item, list);
    list = new AspectList().add(Aspect.LIFE, 2).add(Aspect.EXCHANGE, 5);
    item = ItemInterface.getItemStack("beeLarvaeGE");
    ThaumcraftApi.registerObjectTag(item, list);

    item = ItemInterface.getItemStack("scoop");
    list = new AspectList(new ItemStack(item.getItem(), 1, 0)).add(Aspect.TOOL, 2);
    ThaumcraftApi.registerComplexObjectTag(item, list);

    item = ItemInterface.getItemStack("grafter");
    list =
        new AspectList(new ItemStack(item.getItem(), 1, item.getItemDamage())).add(Aspect.TOOL, 2);
    ThaumcraftApi.registerComplexObjectTag(item, list);

    item = ItemInterface.getItemStack("grafterProven");
    list = list.copy().add(Aspect.TOOL, 2).add(Aspect.EXCHANGE, 3);
    ThaumcraftApi.registerObjectTag(new ItemStack(item.getItem(), 1, item.getItemDamage()), list);

    list = new AspectList().add(Aspect.TRAP, 2);
    ThaumcraftApi.registerObjectTag("beeComb", list);

    list = new AspectList().add(Aspect.SLIME, 1);
    item = ItemInterface.getItemStack("propolis");
    ThaumcraftApi.registerObjectTag(
        new ItemStack(item.getItem(), 1, ForestryHelper.Propolis.NORMAL.ordinal()), list);
    ThaumcraftApi.registerObjectTag(
        new ItemStack(item.getItem(), 1, ForestryHelper.Propolis.SILKY.ordinal()),
        list.copy().add(Aspect.SLIME, 2));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(item.getItem(), 1, ForestryHelper.Propolis.PULSATING.ordinal()),
        list.copy().add(Aspect.ELDRITCH, 2));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Config.propolis, 1, PropolisType.UNSTABLE.ordinal()),
        list.copy().add(Aspect.ENTROPY, 1).add(Aspect.EXCHANGE, 1));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Config.propolis, 1, PropolisType.AIR.ordinal()),
        list.copy().add(Aspect.AIR, 2));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Config.propolis, 1, PropolisType.WATER.ordinal()),
        list.copy().add(Aspect.WATER, 2));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Config.propolis, 1, PropolisType.FIRE.ordinal()),
        list.copy().add(Aspect.FIRE, 2));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Config.propolis, 1, PropolisType.EARTH.ordinal()),
        list.copy().add(Aspect.EARTH, 2));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Config.propolis, 1, PropolisType.ORDER.ordinal()),
        list.copy().add(Aspect.ORDER, 2));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Config.propolis, 1, PropolisType.CHAOS.ordinal()),
        list.copy().add(Aspect.ENTROPY, 2));

    list = new AspectList().add(Aspect.PLANT, 2);
    item = ItemInterface.getItemStack("pollen");
    ThaumcraftApi.registerObjectTag(
        new ItemStack(item.getItem(), 1, ForestryHelper.Pollen.NORMAL.ordinal()), list);
    ThaumcraftApi.registerObjectTag(
        new ItemStack(item.getItem(), 1, ForestryHelper.Pollen.CRYSTALLINE.ordinal()), list.copy());
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Config.pollen, 1, PollenType.UNUSUAL.ordinal()),
        list.copy().add(Aspect.MAGIC, 2));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Config.pollen, 1, PollenType.PHASED.ordinal()),
        list.copy().add((Aspect) aspectTime, 2));

    list = new AspectList().add(Aspect.ORDER, 1);
    item = ItemInterface.getItemStack("beeswax");
    ThaumcraftApi.registerObjectTag(
        item, new int[] {item.getItemDamage()}, list.copy().add(Aspect.ORDER, 2));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Config.wax, 1, WaxType.MAGIC.ordinal()), list.copy().add(Aspect.MAGIC, 2));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Config.wax, 1, WaxType.SOUL.ordinal()), list.copy().add(Aspect.SOUL, 2));
    ThaumcraftApi.registerObjectTag(
        new ItemStack(Config.wax, 1, WaxType.AMNESIC.ordinal()), list.copy().add(Aspect.MIND, 2));

    list = new AspectList().add(Aspect.EXCHANGE, 2).add(Aspect.LIFE, 2);
    item = ItemInterface.getItemStack("honeyDrop");
    ThaumcraftApi.registerObjectTag(item, new int[] {item.getItemDamage()}, list);

    list = new AspectList().add(Aspect.LIFE, 2).add(Aspect.ENERGY, 2);
    item = ItemInterface.getItemStack("honeydew");
    ThaumcraftApi.registerObjectTag(item, new int[] {item.getItemDamage()}, list);

    list = new AspectList().add(Aspect.GREED, 1).add(Aspect.LIFE, 4);
    item = ItemInterface.getItemStack("royalJelly");
    ThaumcraftApi.registerObjectTag(item, new int[] {item.getItemDamage()}, list);

    list = new AspectList().add(Aspect.FIRE, 1).add(Aspect.TRAP, 2);
    item = ItemInterface.getItemStack("phosphor");
    ThaumcraftApi.registerObjectTag(item, new int[] {item.getItemDamage()}, list);

    item = Config.miscResources.getStackForType(ResourceType.ESSENCE_FALSE_LIFE);
    ThaumcraftApi.registerObjectTag(
        item, new int[] {item.getItemDamage()}, new AspectList().add(Aspect.LIFE, 6));

    item = Config.miscResources.getStackForType(ResourceType.ESSENCE_SHALLOW_GRAVE);
    ThaumcraftApi.registerObjectTag(
        item, new int[] {item.getItemDamage()}, new AspectList().add(Aspect.DEATH, 6));

    item = Config.miscResources.getStackForType(ResourceType.ESSENCE_EVERLASTING_DURABILITY);
    ThaumcraftApi.registerObjectTag(
        item, new int[] {item.getItemDamage()}, new AspectList().add(Aspect.ARMOR, 6));

    item = Config.miscResources.getStackForType(ResourceType.ESSENCE_LOST_TIME);
    ThaumcraftApi.registerObjectTag(
        item,
        new int[] {item.getItemDamage()},
        new AspectList().add(Aspect.VOID, 6).add((Aspect) aspectTime, 8));
  }
  private static void setupResearch() {

    ArrayList<Object> list;
    ItemStack input;
    IRecipe recipe;
    String category = "MAGICBEES";
    ResearchCategories.registerCategory(
        category,
        new ResourceLocation(CommonProxy.DOMAIN, CommonProxy.ITEM_TEXTURE + "beeInfusion.png"),
        new ResourceLocation("thaumcraft", "textures/gui/gui_researchback.png"));

    new ResearchItem(
            "MB_Root",
            category,
            new AspectList(),
            0,
            0,
            0,
            Config.miscResources.getStackForType(ResourceType.RESEARCH_BEEINFUSION))
        .setRound()
        .setStub()
        .setAutoUnlock()
        .setPages(getResearchPage("MB_Root.1"), getResearchPage("MB_Root.2"))
        .registerResearchItem();

    list = new ArrayList<Object>(4);
    list.add(Config.miscResources.getStackForType(ResourceType.LORE_FRAGMENT));
    list.add(Config.miscResources.getStackForType(ResourceType.LORE_FRAGMENT));
    list.add(Config.miscResources.getStackForType(ResourceType.LORE_FRAGMENT));
    list.add(Config.miscResources.getStackForType(ResourceType.LORE_FRAGMENT));
    recipe =
        new ShapelessRecipes(
            new ItemStack(Config.tcMiscResource, 1, MiscResource.KNOWLEDGE_FRAGMENT.ordinal()),
            list);

    new ResearchItem(
            "MB_LoreFragment",
            category,
            new AspectList(),
            0,
            -3,
            1,
            Config.miscResources.getStackForType(ResourceType.LORE_FRAGMENT))
        .setPages(getResearchPage("MB_LoreFragment.1"), new ResearchPage(recipe))
        .setParents("MB_Root")
        .setStub()
        .setAutoUnlock()
        .setRound()
        .registerResearchItem();

    new ResearchItem(
            "MB_Scoop",
            category,
            new AspectList().add(Aspect.TOOL, 1).add(Aspect.MAGIC, 1).add(Aspect.AIR, 1),
            -2,
            -3,
            1,
            new ItemStack(Config.thaumiumScoop))
        .setPages(getResearchPage("MB_Scoop.1"), new ResearchPage((IArcaneRecipe) thaumScoop))
        .setParentsHidden("THAUMIUM")
        .registerResearchItem();

    new ResearchItem(
            "MB_Grafter",
            category,
            new AspectList().add(Aspect.TOOL, 1).add(Aspect.TREE, 1).add(Aspect.GREED, 1),
            -2,
            -1,
            2,
            new ItemStack(Config.thaumiumGrafter))
        .setPages(getResearchPage("MB_Grafter.1"), new ResearchPage((IArcaneRecipe) thaumGrafter))
        .setParents("MB_Scoop")
        .registerResearchItem();

    new ResearchItem(
            "MB_FrameMagic",
            category,
            new AspectList().add(Aspect.TOOL, 1).add(Aspect.ARMOR, 1),
            -2,
            1,
            1,
            new ItemStack(Config.hiveFrameMagic))
        .setPages(getResearchPage("MB_FrameMagic"), new ResearchPage((IArcaneRecipe) frameMagic))
        .registerResearchItem();

    input = new ItemStack(Config.hiveFrameMagic);
    list = new ArrayList<Object>(2);
    list.add(Config.miscResources.getStackForType(ResourceType.ESSENCE_FALSE_LIFE));
    list.add(input);
    recipe = new ShapelessRecipes(new ItemStack(Config.hiveFrameGentle), list);

    new ResearchItem(
            "MB_EssenceLife",
            category,
            new AspectList().add(Aspect.LIFE, 1).add(Aspect.MAGIC, 1),
            2,
            -1,
            1,
            Config.miscResources.getStackForType(ResourceType.ESSENCE_FALSE_LIFE))
        .setPages(
            getResearchPage("MB_EssenceLife.1"),
            new ResearchPage((CrucibleRecipe) essenceLife),
            new ResearchPage(recipe))
        .setParentsHidden("CRUCIBLE")
        .registerResearchItem();

    list = new ArrayList<Object>(2);
    list.add(Config.miscResources.getStackForType(ResourceType.ESSENCE_EVERLASTING_DURABILITY));
    list.add(input);
    recipe = new ShapelessRecipes(new ItemStack(Config.hiveFrameResilient), list);

    new ResearchItem(
            "MB_EssenceArmor",
            category,
            new AspectList().add(Aspect.ARMOR, 1).add(Aspect.MAGIC, 1),
            5,
            0,
            2,
            Config.miscResources.getStackForType(ResourceType.ESSENCE_EVERLASTING_DURABILITY))
        .setPages(
            getResearchPage("MB_EssenceArmor.1"),
            new ResearchPage((CrucibleRecipe) essenceArmor),
            new ResearchPage(recipe))
        .setParents("MB_EssenceLife")
        .registerResearchItem();

    list = new ArrayList<Object>(2);
    list.add(Config.miscResources.getStackForType(ResourceType.ESSENCE_FICKLE_PERMANENCE));
    list.add(input);
    recipe = new ShapelessRecipes(new ItemStack(Config.hiveFrameMetabolic), list);

    new ResearchItem(
            "MB_EssenceUnstable",
            category,
            new AspectList().add(Aspect.ENTROPY, 1).add(Aspect.ORDER, 1),
            3,
            1,
            2,
            Config.miscResources.getStackForType(ResourceType.ESSENCE_FICKLE_PERMANENCE))
        .setPages(
            getResearchPage("MB_EssenceUnstable.1"),
            new ResearchPage((CrucibleRecipe) essenceUnstableA),
            new ResearchPage((CrucibleRecipe) essenceUnstableB),
            new ResearchPage(recipe))
        .setParents("MB_EssenceLife")
        .setConcealed()
        .registerResearchItem();

    list = new ArrayList<Object>(2);
    list.add(Config.miscResources.getStackForType(ResourceType.ESSENCE_SHALLOW_GRAVE));
    list.add(input);
    recipe = new ShapelessRecipes(new ItemStack(Config.hiveFrameNecrotic), list);

    new ResearchItem(
            "MB_EssenceDeath",
            category,
            new AspectList().add(Aspect.DEATH, 1).add(Aspect.MAGIC, 1),
            2,
            3,
            1,
            Config.miscResources.getStackForType(ResourceType.ESSENCE_SHALLOW_GRAVE))
        .setPages(
            getResearchPage("MB_EssenceDeath.1"),
            new ResearchPage((CrucibleRecipe) essenceDeath),
            new ResearchPage(recipe))
        .setParents("MB_EssenceUnstable")
        .setConcealed()
        .registerResearchItem();

    list = new ArrayList<Object>(2);
    list.add(Config.miscResources.getStackForType(ResourceType.ESSENCE_LOST_TIME));
    list.add(input);
    recipe = new ShapelessRecipes(new ItemStack(Config.hiveFrameTemporal), list);

    new ResearchItem(
            "MB_EssenceTime",
            category,
            new AspectList().add((Aspect) aspectTime, 1).add(Aspect.MAGIC, 1),
            0,
            2,
            2,
            Config.miscResources.getStackForType(ResourceType.ESSENCE_LOST_TIME))
        .setPages(
            getResearchPage("MB_EssenceTime.1"),
            new ResearchPage((CrucibleRecipe) essenceTime),
            new ResearchPage(recipe))
        .setParents("MB_EssenceUnstable")
        .setConcealed()
        .registerResearchItem();

    new ResearchItem(
            "MB_DimensionalSingularity",
            category,
            new AspectList()
                .add(Aspect.ELDRITCH, 1)
                .add((Aspect) aspectTime, 1)
                .add(Aspect.VOID, 1),
            -1,
            4,
            3,
            Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY))
        .setPages(
            getResearchPage("MB_DimensionalSingularity.1"),
            new ResearchPage((InfusionRecipe) singularityA),
            new ResearchPage((InfusionRecipe) singularityB))
        .setParents("MB_FrameMagic", "MB_EssenceTime", "MB_EssenceDeath")
        .setConcealed()
        .setSpecial()
        .registerResearchItem();

    list = new ArrayList<Object>(2);
    list.add(Config.miscResources.getStackForType(ResourceType.ESSENCE_SCORNFUL_OBLIVION));
    list.add(ItemInterface.getItemStack("frameProven"));
    recipe = new ShapelessRecipes(new ItemStack(Config.hiveFrameOblivion), list);

    new ResearchItem(
            "MB_EssenceOblivion",
            category,
            new AspectList().add(Aspect.VOID, 1).add(Aspect.HUNGER, 1).add((Aspect) aspectTime, 1),
            -3,
            3,
            3,
            Config.miscResources.getStackForType(ResourceType.ESSENCE_SCORNFUL_OBLIVION))
        .setPages(
            getResearchPage("MB_EssenceOblivion.1"),
            new ResearchPage((IArcaneRecipe) essenceOblivion),
            new ResearchPage(recipe))
        .setParents("MB_DimensionalSingularity")
        .setConcealed()
        .registerResearchItem();

    new ResearchItem(
            "MB_VisAuraProvider",
            category,
            new AspectList().add(Aspect.MAGIC, 1).add(Aspect.ENERGY, 1).add(Aspect.AURA, 1),
            -5,
            5,
            3,
            new ItemStack(Config.visAuraProvider))
        .setPages(
            getResearchPage("MB_VisAuraProvider.1"),
            new ResearchPage((IArcaneRecipe) visAuraProvider))
        .setParentsHidden("VISPOWER")
        .registerResearchItem();
  }