package dev.tilera.auracore.helper;

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import dev.tilera.auracore.api.Aspects;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionHelper;
import thaumcraft.api.ThaumcraftApi;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.common.config.ConfigBlocks;
import thaumcraft.common.config.ConfigItems;

public class LegacyAspects {

    public static void initAspects() {
        ThaumcraftApi.registerObjectTag("cobblestone", new AspectList().add(Aspects.ROCK, 1).add(Aspects.DESTRUCTION, 1));
        ThaumcraftApi.registerObjectTag("stone", new AspectList().add(Aspects.ROCK, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.end_stone), new AspectList().add(Aspect.EARTH, 1).add(Aspects.ROCK, 1).add(Aspect.DARKNESS, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.sand, 1, 32767), new AspectList().add(Aspect.EARTH, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.dirt, 1, 32767), new AspectList().add(Aspect.EARTH, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.grass), new AspectList().add(Aspect.EARTH, 2).add(Aspect.PLANT, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.gravel), new AspectList().add(Aspect.EARTH, 1).add(Aspects.ROCK, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.mycelium), new AspectList().add(Aspect.EARTH, 2).add(Aspects.FUNGUS, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.clay_ball, 1, 32767), new AspectList().add(Aspect.EARTH, 2).add(Aspect.WATER, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.clay, 1, 32767), new AspectList().add(Aspect.EARTH, 6).add(Aspect.WATER, 3));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.gold_nugget), new AspectList().add(Aspect.METAL, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemNugget, 1, 32767), new AspectList().add(Aspect.METAL, 1)); // TODO: ?
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.brick, 1, 32767), new AspectList().add(Aspect.EARTH, 2).add(Aspect.FIRE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.soul_sand, 1, 32767), new AspectList().add(Aspect.EARTH, 1).add(Aspect.TRAP, 1).add(Aspect.SOUL, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.netherrack, 1, 32767), new AspectList().add(Aspect.EARTH, 1).add(Aspects.ROCK, 1).add(Aspect.FIRE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.nether_brick), new AspectList().add(Aspects.ROCK, 2).add(Aspect.FIRE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.glass, 1, 32767), new AspectList().add(Aspect.CRYSTAL, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.snowball, 1, 32767), new AspectList().add(Aspect.COLD, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.tallgrass, 1, 32767), new AspectList().add(Aspect.PLANT, 1).add(Aspect.AIR, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.waterlily, 1, 32767), new AspectList().add(Aspect.PLANT, 2).add(Aspect.WATER, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.deadbush, 1, 32767), new AspectList().add(Aspect.PLANT, 1).add(Aspect.AIR, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.vine, 1, 32767), new AspectList().add(Aspect.PLANT, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.wheat_seeds, 1, 32767), new AspectList().add(Aspect.PLANT, 1).add(Aspect.EXCHANGE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.melon_seeds, 1, 32767), new AspectList().add(Aspect.PLANT, 1).add(Aspect.EXCHANGE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.pumpkin_seeds, 1, 32767), new AspectList().add(Aspect.PLANT, 1).add(Aspect.EXCHANGE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.melon, 1, 32767), new AspectList().add(Aspect.LIFE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.nether_wart), new AspectList().add(Aspects.FUNGUS, 1).add(Aspects.FLUX, 1).add(Aspect.FIRE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.dye), new AspectList().add(Aspect.DARKNESS, 1).add(Aspect.FLESH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.dye, 1, 2), new AspectList().add(Aspect.PLANT, 3));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.dye, 1, 3), new AspectList().add(Aspect.PLANT, 1).add(Aspect.ENERGY, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.dye, 1, 4), new AspectList().add(Aspects.VALUABLE, 1).add(Aspects.ROCK, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.cookie), new AspectList().add(Aspect.LIFE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.potionitem), new AspectList().add(Aspect.WATER, 1).add(Aspect.CRYSTAL, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.torch, 1, 32767), new AspectList().add(Aspect.LIGHT, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.mossy_cobblestone, 1, 32767), new AspectList().add(Aspects.ROCK, 2).add(Aspect.PLANT, 1).add(Aspects.FLUX, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.ice, 1, 32767), new AspectList().add(Aspect.COLD, 2).add(Aspect.CRYSTAL, 1).add(Aspect.WATER, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.red_flower), new AspectList().add(Aspects.FLOWER, 4).add(Aspect.FIRE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.yellow_flower), new AspectList().add(Aspects.FLOWER, 4).add(Aspect.LIGHT, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.cactus), new AspectList().add(Aspect.PLANT, 4).add(Aspect.WATER, 1).add(Aspect.WEAPON, 1));
        ThaumcraftApi.registerObjectTag("treeSapling", new AspectList().add(Aspect.PLANT, 2).add(Aspect.TREE, 2));
        ThaumcraftApi.registerObjectTag("logWood", (new AspectList()).add(Aspect.TREE, 4));
        ThaumcraftApi.registerObjectTag("plankWood", (new AspectList()).add(Aspect.TREE, 1));
        ThaumcraftApi.registerObjectTag("slabWood", (new AspectList()).add(Aspect.TREE, 1));
        ThaumcraftApi.registerObjectTag("stairWood", (new AspectList()).add(Aspect.TREE, 1));
        ThaumcraftApi.registerObjectTag("stickWood", (new AspectList()).add(Aspect.TREE, 1));
        ThaumcraftApi.registerObjectTag("treeLeaves", (new AspectList()).add(Aspect.PLANT, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.brown_mushroom), new AspectList().add(Aspects.FUNGUS, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.red_mushroom), new AspectList().add(Aspects.FUNGUS, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.brown_mushroom_block, 1, 32767), new AspectList().add(Aspects.FUNGUS, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.red_mushroom_block, 1, 32767), new AspectList().add(Aspects.FUNGUS, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.reeds), new AspectList().add(Aspect.CROP, 2).add(Aspect.WATER, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.wheat), new AspectList().add(Aspect.CROP, 2).add(Aspect.LIFE, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.apple), new AspectList().add(Aspect.CROP, 2).add(Aspect.LIFE, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.coal_ore), new AspectList().add(Aspects.ROCK, 3).add(Aspect.ENERGY, 1).add(Aspect.FIRE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.coal), new AspectList().add(Aspects.ROCK, 1).add(Aspect.ENERGY, 2).add(Aspect.FIRE, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.coal, 1, 1), new AspectList().add(Aspect.TREE, 1).add(Aspect.ENERGY, 2).add(Aspect.FIRE, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.redstone_ore), new AspectList().add(Aspect.EARTH, 2).add(Aspect.ENERGY, 1).add(Aspect.MECHANISM, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.redstone), new AspectList().add(Aspect.ENERGY, 2).add(Aspect.MECHANISM, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.glowstone_dust), new AspectList().add(Aspects.VISION, 1).add(Aspect.LIGHT, 3));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.glowstone), new AspectList().add(Aspects.VISION, 3).add(Aspect.LIGHT, 10));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.web), new AspectList().add(Aspect.TRAP, 2).add(Aspects.INSECT, 1).add(Aspect.CLOTH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.flint), new AspectList().add(Aspects.ROCK, 1).add(Aspect.TOOL, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.string), new AspectList().add(Aspects.INSECT, 1).add(Aspect.CLOTH, 1).add(Aspect.TRAP, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.carrot), new AspectList().add(Aspect.CROP, 2).add(Aspects.VISION, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.potato), new AspectList().add(Aspect.CROP, 2).add(Aspect.EARTH, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.baked_potato), new AspectList().add(Aspect.CROP, 2).add(Aspect.LIFE, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.poisonous_potato), new AspectList().add(Aspect.CROP, 2).add(Aspect.POISON, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.slime_ball), new AspectList().add(Aspects.CONTROL, 1).add(Aspect.WATER, 1).add(Aspects.FLUX, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.leather), new AspectList().add(Aspect.FLESH, 1).add(Aspect.CLOTH, 1).add(Aspect.BEAST, 1).add(Aspect.ARMOR, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.rotten_flesh), new AspectList().add(Aspect.DEATH, 1).add(Aspect.FLESH, 3));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.feather), new AspectList().add(Aspect.FLIGHT, 2).add(Aspect.AIR, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.bone), new AspectList().add(Aspect.DEATH, 3).add(Aspect.FLESH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.egg), new AspectList().add(Aspect.EXCHANGE, 2).add(Aspect.FLESH, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.spider_eye), new AspectList().add(Aspects.VISION, 2).add(Aspects.INSECT, 2).add(Aspect.POISON, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.quartz_ore), new AspectList().add(Aspects.ROCK, 2).add(Aspect.CRYSTAL, 1).add(Aspects.TIME, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.quartz), new AspectList().add(Aspects.ROCK, 1).add(Aspect.CRYSTAL, 1).add(Aspects.PURE, 1).add(Aspects.VISION, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.obsidian, 1, 32767), new AspectList().add(Aspects.ROCK, 5).add(Aspect.DARKNESS, 1).add(Aspect.FIRE, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.iron_ore), new AspectList().add(Aspect.METAL, 6).add(Aspects.ROCK, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.iron_ingot), new AspectList().add(Aspect.METAL, 8));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.pumpkin, 1, 32767), new AspectList().add(Aspect.CROP, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.gunpowder), new AspectList().add(Aspect.FIRE, 4).add(Aspects.DESTRUCTION, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.wool), new AspectList().add(Aspect.CLOTH, 4).add(Aspect.BEAST, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.fish), new AspectList().add(Aspect.FLESH, 4).add(Aspect.LIFE, 2).add(Aspect.WATER, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.cooked_fished), new AspectList().add(Aspect.FIRE, 1).add(Aspect.FLESH, 4).add(Aspect.LIFE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.chicken), new AspectList().add(Aspect.FLESH, 4).add(Aspect.LIFE, 2).add(Aspect.BEAST, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.cooked_chicken), new AspectList().add(Aspect.FIRE, 1).add(Aspect.FLESH, 4).add(Aspect.LIFE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.porkchop), new AspectList().add(Aspect.FLESH, 4).add(Aspect.LIFE, 2).add(Aspect.BEAST, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.cooked_porkchop), new AspectList().add(Aspect.FIRE, 1).add(Aspect.FLESH, 4).add(Aspect.LIFE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.beef), new AspectList().add(Aspect.FLESH, 4).add(Aspect.LIFE, 2).add(Aspect.BEAST, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.cooked_beef), new AspectList().add(Aspect.FIRE, 1).add(Aspect.FLESH, 4).add(Aspect.LIFE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.blaze_rod), new AspectList().add(Aspect.FIRE, 6).add(Aspect.MAGIC, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.lapis_ore), new AspectList().add(Aspects.VALUABLE, 4).add(Aspects.ROCK, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.gold_ore), new AspectList().add(Aspect.METAL, 6).add(Aspects.ROCK, 2).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.gold_ingot), new AspectList().add(Aspect.METAL, 8).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.saddle), new AspectList().add(Aspects.CONTROL, 4).add(Aspect.CLOTH, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.ender_pearl), new AspectList().add(Aspect.ELDRITCH, 4).add(Aspect.MAGIC, 4).add(Aspect.CRYSTAL, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.diamond_ore), new AspectList().add(Aspect.CRYSTAL, 10).add(Aspects.ROCK, 4).add(Aspects.VALUABLE, 2).add(Aspects.PURE, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.diamond), new AspectList().add(Aspect.CRYSTAL, 12).add(Aspects.VALUABLE, 4).add(Aspects.PURE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.ghast_tear), new AspectList().add(Aspect.WATER, 4).add(Aspect.DEATH, 4).add(Aspects.EVIL, 4).add(Aspect.SOUL, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.skull, 1, 32767), new AspectList().add(Aspect.DEATH, 8).add(Aspect.SOUL, 4).add(Aspects.EVIL, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.emerald_ore), new AspectList().add(Aspect.CRYSTAL, 9).add(Aspects.ROCK, 4).add(Aspect.EXCHANGE, 3).add(Aspect.MAGIC, 3).add(Aspects.VALUABLE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.emerald), new AspectList().add(Aspect.CRYSTAL, 10).add(Aspect.EXCHANGE, 4).add(Aspect.MAGIC, 4).add(Aspects.VALUABLE, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.record_11), new AspectList().add(Aspects.SOUND, 12).add(Aspect.FIRE, 4).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.record_13), new AspectList().add(Aspects.SOUND, 12).add(Aspect.WATER, 4).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.record_cat), new AspectList().add(Aspects.SOUND, 12).add(Aspect.BEAST, 4).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.record_chirp), new AspectList().add(Aspects.SOUND, 12).add(Aspect.EARTH, 4).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.record_far), new AspectList().add(Aspects.SOUND, 12).add(Aspect.ELDRITCH, 4).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.record_mall), new AspectList().add(Aspects.SOUND, 12).add(Aspect.EXCHANGE, 4).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.record_mellohi), new AspectList().add(Aspects.SOUND, 12).add(Aspect.MOTION, 4).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.record_stal), new AspectList().add(Aspects.SOUND, 12).add(Aspects.EVIL, 4).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.record_strad), new AspectList().add(Aspects.SOUND, 12).add(Aspects.CONTROL, 4).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.record_ward), new AspectList().add(Aspects.SOUND, 12).add(Aspect.MAGIC, 4).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.record_blocks), new AspectList().add(Aspects.SOUND, 12).add(Aspect.CRAFT, 4).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.record_wait), new AspectList().add(Aspects.SOUND, 12).add(Aspect.TRAP, 4).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.nether_star), new AspectList().add(Aspect.ELDRITCH, 16).add(Aspect.MAGIC, 16).add(Aspects.PURE, 16).add(Aspect.DARKNESS, 16));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.chainmail_chestplate, 1, 32767), new AspectList().add(Aspect.METAL, 30));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.chainmail_chestplate, 1, 32767), new AspectList().add(Aspect.METAL, 50));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.chainmail_leggings, 1, 32767), new AspectList().add(Aspect.METAL, 45));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.chainmail_boots, 1, 32767), new AspectList().add(Aspect.METAL, 25));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.paper), new AspectList().add(Aspect.MIND, 2).add(Aspect.CROP, 2).add(Aspect.WATER, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.book), new AspectList().add(Aspect.MIND, 5).add(Aspect.CROP, 5).add(Aspect.WATER, 5).add(Aspect.BEAST, 2).add(Aspect.FLESH, 2));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.stonebrick), new AspectList());
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.stonebrick, 1, 1), new AspectList(new ItemStack(Blocks.stonebrick)).remove(Aspects.ROCK, 1).add(Aspect.PLANT, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.stonebrick, 1, 2), new AspectList(new ItemStack(Blocks.stonebrick)).remove(Aspects.ROCK, 1).add(Aspects.DESTRUCTION, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.stonebrick, 1, 3), new AspectList(new ItemStack(Blocks.stonebrick)).remove(Aspects.ROCK, 1).add(Aspects.VALUABLE, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.sandstone, 1, 32767), new AspectList().add(Aspects.ROCK, 2).remove(Aspect.EARTH, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.sandstone, 1, 1), new AspectList(new ItemStack(Blocks.sandstone)).remove(Aspect.EARTH, 1).add(Aspect.MAGIC, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.sandstone, 1, 2), new AspectList(new ItemStack(Blocks.sandstone)).remove(Aspect.EARTH, 1).add(Aspects.VALUABLE, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.melon_block, 1, 32767), new AspectList().add(Aspect.CROP, 2).remove(Aspect.LIFE, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.ender_eye), new AspectList().add(Aspects.VISION, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.arrow), new AspectList().add(Aspect.WEAPON, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.glass_bottle), new AspectList().add(Aspect.VOID, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.chest), new AspectList().add(Aspect.VOID, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.golden_apple), new AspectList().add(Aspect.MAGIC, 2).add(Aspect.HEAL, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.golden_apple, 1, 1), new AspectList().add(Aspect.MAGIC, 4).add(Aspect.HEAL, 8));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.bowl), new AspectList().add(Aspect.VOID, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.mushroom_stew), new AspectList().add(Aspect.LIFE, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.minecart), new AspectList().add(Aspect.MECHANISM, 2).add(Aspect.MOTION, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.iron_door), new AspectList().add(Aspect.MECHANISM, 2).add(Aspect.MOTION, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.wooden_door), new AspectList().add(Aspect.MECHANISM, 1).add(Aspect.MOTION, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.boat), new AspectList().add(Aspect.WATER, 4).add(Aspect.MOTION, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.flint_and_steel, 1, 32767), new AspectList().add(Aspect.FIRE, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.fishing_rod, 1, 32767), new AspectList().add(Aspect.WATER, 1).add(Aspect.TOOL, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.bucket), new AspectList().add(Aspect.METAL, 13).add(Aspect.VOID, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.water_bucket), new AspectList(new ItemStack(Items.bucket)).add(Aspect.WATER, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.lava_bucket), new AspectList(new ItemStack(Items.bucket)).add(Aspect.FIRE, 6).add(Aspects.ROCK, 2).add(Aspect.WATER, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.milk_bucket), new AspectList(new ItemStack(Items.bucket)).add(Aspect.LIFE, 2).add(Aspect.HEAL, 2).add(Aspect.WATER, 2));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.brewing_stand), new AspectList().add(Aspect.MAGIC, 2).add(Aspect.WATER, 2));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.stone_button), new AspectList().add(Aspect.MECHANISM, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.detector_rail), new AspectList().add(Aspect.MECHANISM, 2).add(Aspects.VISION, 2));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.golden_rail), new AspectList().add(Aspect.MECHANISM, 2));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.fence_gate), new AspectList().add(Aspect.MECHANISM, 1).add(Aspect.MOTION, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.wooden_pressure_plate), new AspectList().add(Aspect.MECHANISM, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.stone_pressure_plate), new AspectList().add(Aspect.MECHANISM, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.lever), new AspectList().add(Aspects.CONTROL, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.redstone_torch), new AspectList().add(Aspect.MECHANISM, 2));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.piston), new AspectList().add(Aspect.MECHANISM, 2).add(Aspect.MOTION, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.sticky_piston), new AspectList(new ItemStack(Blocks.piston)).add(Aspect.EXCHANGE, 3).add(Aspect.WATER, 1).add(Aspect.FLESH, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.jukebox), new AspectList().add(Aspects.SOUND, 8).add(Aspect.MECHANISM, 2));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.noteblock), new AspectList().add(Aspects.SOUND, 4).add(Aspect.MECHANISM, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.trapdoor), new AspectList().add(Aspect.MOTION, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.furnace), new AspectList().add(Aspect.FIRE, 2));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.enchanting_table), new AspectList().add(Aspect.MAGIC, 8));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.crafting_table), new AspectList().add(Aspect.CRAFT, 4).add(Aspect.TREE, 3));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.clock), new AspectList().add(Aspects.TIME, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.repeater, 1, 32767), new AspectList().add(Aspects.TIME, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.written_book, 1, 32767), new AspectList(new ItemStack(Items.book)).add(Aspects.TIME, 1).remove(Aspect.BEAST, 2));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.beacon), new AspectList().add(Aspects.CONTROL, 2).add(Aspect.MAGIC, 2));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.anvil), new AspectList().add(Aspect.CRAFT, 2).add(Aspect.TOOL, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.anvil, 1, 1), new AspectList(new ItemStack(Blocks.anvil)).remove(Aspect.CRAFT, 1).remove(Aspect.METAL, 20));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.anvil, 1, 2), new AspectList(new ItemStack(Blocks.anvil)).remove(Aspect.CRAFT, 1).remove(Aspect.TOOL, 1).remove(Aspect.METAL, 40));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.wooden_button), new AspectList().add(Aspect.MECHANISM, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.carrot_on_a_stick), new AspectList().add(Aspects.CONTROL, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.flower_pot), new AspectList().add(Aspect.VOID, 1).add(Aspect.LIFE, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Items.golden_carrot), new AspectList().add(Aspect.MAGIC, 2));
        Map lhm = new LinkedHashMap();
        for(int var4 = 1; var4 <= 32767; ++var4) {
            List var5 = PotionHelper.getPotionEffects(var4, false);
            if (var5 != null && !var5.isEmpty()) {
                lhm.put(var5, var4);
            }
        }
        Iterator var6 = lhm.values().iterator();

        while(var6.hasNext()) {
            int var7 = (Integer)var6.next();
            ThaumcraftApi.registerObjectTag(new ItemStack(Items.potionitem, 1, var7), new AspectList(new ItemStack(Items.potionitem)));
        }
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemWispEssence, 1, 0), (new AspectList()).add(Aspect.AURA, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemEssence), new AspectList().add(Aspect.VOID, 1).add(Aspect.CRYSTAL, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemNugget, 1, 31), new AspectList().add(Aspect.METAL, 12).add(Aspects.ROCK, 2).add(Aspects.VALUABLE, 8));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemNugget, 1, 16), new AspectList().add(Aspect.METAL, 12).add(Aspects.ROCK, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCosmeticSolid), new AspectList().add(Aspects.ROCK, 4).add(Aspect.DARKNESS, 2).add(Aspect.FIRE, 2).add(Aspect.ELDRITCH, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockMagicalLog), new AspectList().add(Aspect.TREE, 5).add(Aspect.MAGIC, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockMagicalLog, 1, 1), new AspectList().add(Aspect.TREE, 4).add(Aspect.MAGIC, 2).add(Aspects.PURE, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockMagicalLeaves), new AspectList().add(Aspect.PLANT, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockMagicalLeaves, 1, 1), new AspectList().add(Aspect.PLANT, 1).add(Aspects.PURE, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomPlant), new AspectList().add(Aspect.PLANT, 2).add(Aspect.TREE, 2).add(Aspect.MAGIC, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomPlant, 1, 1), new AspectList().add(Aspect.PLANT, 2).add(Aspect.TREE, 2).add(Aspect.MAGIC, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomPlant, 1, 2), new AspectList().add(Aspects.FLOWER, 2).add(Aspect.EXCHANGE, 2).add(Aspect.MAGIC, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomPlant, 1, 3), new AspectList().add(Aspects.FLOWER, 2).add(Aspect.FIRE, 2).add(Aspect.MAGIC, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomOre), new AspectList().add(Aspects.ROCK, 2).add(Aspect.METAL, 3).add(Aspects.VISION, 3));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomOre, 1, 7), new AspectList().add(Aspects.ROCK, 2).add(Aspect.TRAP, 3).add(Aspect.TREE, 1).add(Aspect.CRYSTAL, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemResource, 1, 3), new AspectList().add(Aspect.MOTION, 1).add(Aspect.METAL, 4).add(Aspect.POISON, 1).add(Aspects.VISION, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemZombieBrain), new AspectList().add(Aspect.FLESH, 2).add(Aspect.MIND, 4).add(Aspects.EVIL, 2).add(Aspect.DEATH, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemResource, 1, 6), new AspectList().add(Aspect.TRAP, 4).add(Aspect.TREE, 2).add(Aspect.CRYSTAL, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemResource, 1, 9), new AspectList().add(Aspect.MIND, 16));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemNuggetBeef, 1, 32767), new AspectList().add(Aspect.FLESH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemNuggetChicken, 1, 32767), new AspectList().add(Aspect.FLESH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemNuggetPork, 1, 32767), new AspectList().add(Aspect.FLESH, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(ConfigItems.itemTripleMeatTreat, 1, 32767), new AspectList().add(Aspect.HEAL, 1).remove(Aspect.CROP, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(ConfigItems.itemThaumometer, 1, 32767), new AspectList().add(Aspect.MAGIC, 4).add(Aspect.MIND, 4).add(Aspects.VISION, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(ConfigItems.itemGoggles, 1, 32767), new AspectList().add(Aspects.VISION, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(ConfigBlocks.blockTable, 1, 32767), new AspectList().add(Aspect.TOOL, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockTable, 1, 15), new AspectList(new ItemStack(ConfigBlocks.blockTable)).add(Aspect.CRAFT, 4).add(Aspect.MAGIC, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockMetalDevice), new AspectList(new ItemStack(Items.cauldron, 1, 32767)).add(Aspect.CRAFT, 4).add(Aspect.MAGIC, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCandle), new AspectList().add(Aspect.LIGHT, 4).add(Aspect.FLESH, 3).add(Aspect.CLOTH, 1).add(Aspect.MAGIC, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemThaumonomicon, 1, 32767), new AspectList(new ItemStack(Blocks.bookshelf)).add(Aspect.MAGIC, 4).merge(Aspect.MIND, 8));
        // TC4 additions
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.dragon_egg), (new AspectList()).add(Aspect.ELDRITCH, 8).add(Aspect.BEAST, 8).add(Aspect.MAGIC, 8));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.portal, 1, 32767), (new AspectList()).add(Aspect.FIRE, 4).add(Aspect.TRAVEL, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.end_portal, 1, 32767), (new AspectList()).add(Aspect.ELDRITCH, 4).add(Aspect.TRAVEL, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.end_portal_frame, 1, 32767), (new AspectList()).add(Aspect.ELDRITCH, 4).add(Aspect.MECHANISM, 4).add(Aspect.TRAVEL, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.mob_spawner, 1, 32767), (new AspectList()).add(Aspect.BEAST, 4).add(Aspect.TRAVEL, 4).add(Aspect.UNDEAD, 4).add(Aspect.MAGIC, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(Items.cake, 32767), (new AspectList()).add(Aspect.WATER, 4).add(Aspect.HUNGER, 4).add(Aspect.LIFE, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.light_weighted_pressure_plate, 1, 32767), (new AspectList()).add(Aspect.MECHANISM, 1).add(Aspect.SENSES, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.heavy_weighted_pressure_plate, 1, 32767), (new AspectList()).add(Aspect.MECHANISM, 1).add(Aspect.SENSES, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.ender_chest, 1, 32767), (new AspectList()).merge(Aspect.EXCHANGE, 2).merge(Aspect.TRAVEL, 2).merge(Aspect.VOID, 4));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.daylight_detector, 1, 32767), (new AspectList()).merge(Aspects.VISION, 2).merge(Aspect.LIGHT, 3).merge(Aspect.MECHANISM, 3));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockTable, 1, 2), (new AspectList(new ItemStack(ConfigBlocks.blockTable))).add(Aspect.MIND, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockTaint, 1, 0), (new AspectList()).add(Aspect.TREE, 1).add(Aspect.TAINT, 3));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockTaint, 1, 1), (new AspectList()).add(Aspect.EARTH, 1).add(Aspect.TAINT, 3));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockTaintFibres, 1, 0), (new AspectList()).add(Aspect.LIFE, 1).add(Aspect.TAINT, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockTaintFibres, 1, 1), (new AspectList()).add(Aspect.PLANT, 1).add(Aspect.TAINT, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockTaintFibres, 1, 2), (new AspectList()).add(Aspect.PLANT, 1).add(Aspect.TAINT, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockTaintFibres, 1, 3), (new AspectList()).add(Aspect.BEAST, 1).add(Aspect.PLANT, 1).add(Aspect.TAINT, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockTaintFibres, 1, 4), (new AspectList()).add(Aspect.BEAST, 1).add(Aspect.PLANT, 1).add(Aspect.TAINT, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomPlant, 1, 5), (new AspectList()).add(Aspects.FUNGUS, 2).add(Aspect.POISON, 1).add(Aspect.MAGIC, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemResource, 1, 11), (new AspectList()).add(Aspect.TAINT, 3).add(Aspect.SLIME, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemResource, 1, 12), (new AspectList()).add(Aspect.TAINT, 2).add(Aspect.GREED, 1).add(Aspect.HUNGER, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemResource, 1, 18), (new AspectList()).add(Aspect.GREED, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemLootbag, 1, 0), (new AspectList()).add(Aspect.GREED, 8));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemLootbag, 1, 1), (new AspectList()).add(Aspect.GREED, 16));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemLootbag, 1, 2), (new AspectList()).add(Aspect.GREED, 32));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemNuggetBeef, 1, 32767), (new AspectList()).add(Aspect.HUNGER, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemNuggetChicken, 1, 32767), (new AspectList()).add(Aspect.HUNGER, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemNuggetPork, 1, 32767), (new AspectList()).add(Aspect.HUNGER, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemNuggetFish, 1, 32767), (new AspectList()).add(Aspect.HUNGER, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemResource, 1, 14), (new AspectList(new ItemStack(ConfigItems.itemShard, 1, 6))).add(Aspect.MAGIC, 2).remove(Aspect.CRYSTAL));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockAiry, 1, 2), (new AspectList()).add(Aspect.LIGHT, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockAiry, 1, 3), (new AspectList()).add(Aspect.LIGHT, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemBaubleBlanks, 1, 3), (new AspectList()).add(Aspect.MAGIC, 5));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemFocusPech), (new AspectList()).add(Aspect.MAGIC, 5).add(Aspect.POISON, 5).add(Aspect.ENTROPY, 5).add(Aspect.ELDRITCH, 5).add(Aspect.WEAPON, 5));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemChestCultistPlate, 1, 32767), (new AspectList()).add(Aspect.METAL, 5).add(Aspect.ELDRITCH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemChestCultistRobe, 1, 32767), (new AspectList()).add(Aspect.METAL, 3).add(Aspect.CLOTH, 2).add(Aspect.ELDRITCH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemChestCultistLeaderPlate, 1, 32767), (new AspectList()).add(Aspect.METAL, 5).add(Aspect.ELDRITCH, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemLegsCultistPlate, 1, 32767), (new AspectList()).add(Aspect.METAL, 5).add(Aspect.ELDRITCH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemLegsCultistLeaderPlate, 1, 32767), (new AspectList()).add(Aspect.METAL, 5).add(Aspect.ELDRITCH, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemLegsCultistRobe, 1, 32767), (new AspectList()).add(Aspect.METAL, 3).add(Aspect.CLOTH, 2).add(Aspect.ELDRITCH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemHelmetCultistPlate, 1, 32767), (new AspectList()).add(Aspect.METAL, 5).add(Aspect.ELDRITCH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemHelmetCultistLeaderPlate, 1, 32767), (new AspectList()).add(Aspect.METAL, 5).add(Aspect.ELDRITCH, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemHelmetCultistRobe, 1, 32767), (new AspectList()).add(Aspect.METAL, 3).add(Aspect.CLOTH, 2).add(Aspect.ELDRITCH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemBootsCultist, 1, 32767), (new AspectList()).add(Aspect.METAL, 4).add(Aspect.ELDRITCH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockWoodenDevice, 1, 8), (new AspectList()).add(Aspect.ELDRITCH, 1).add(Aspect.TREE, 2).add(Aspect.CLOTH, 3));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemEldritchObject, 1, 0), (new AspectList()).add(Aspect.ELDRITCH, 5).add(Aspect.AURA, 3).add(Aspect.MAGIC, 3).add(Aspect.SENSES, 3).add(Aspect.SOUL, 3));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemEldritchObject, 1, 1), (new AspectList()).add(Aspect.MIND, 5).add(Aspect.MAGIC, 3).add(Aspect.ELDRITCH, 3).add(Aspect.SOUL, 3));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemEldritchObject, 1, 2), (new AspectList()).add(Aspect.TRAP, 4).add(Aspect.MIND, 4).add(Aspect.MECHANISM, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigItems.itemEldritchObject, 1, 3), (new AspectList()).add(Aspect.AIR, 16).add(Aspect.EARTH, 16).add(Aspect.FIRE, 16).add(Aspect.WATER, 16).add(Aspect.ORDER, 16).add(Aspect.ENTROPY, 16));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockEldritch, 1, 32767), (new AspectList()).add(Aspect.VOID, 8).add(Aspect.ELDRITCH, 8).add(Aspect.SENSES, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockEldritchPortal), (new AspectList()).add(Aspect.VOID, 8).add(Aspect.ELDRITCH, 8).add(Aspect.TRAVEL, 8));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockEldritch, 1, 3), (new AspectList()).add(Aspect.VOID, 4).add(Aspect.ELDRITCH, 4));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockEldritch, 1, 4), (new AspectList()).add(Aspect.LIGHT, 1).add(Aspect.EARTH, 1).add(Aspect.ELDRITCH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockEldritch, 1, 5), (new AspectList()).add(Aspect.MIND, 2).add(Aspect.EARTH, 1).add(Aspect.ELDRITCH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockEldritch, 1, 6), (new AspectList()).add(Aspect.METAL, 2).add(Aspect.MECHANISM, 2).add(Aspect.ELDRITCH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCosmeticSolid, 1, 11), (new AspectList()).add(Aspect.EARTH, 1).add(Aspect.ELDRITCH, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCosmeticSolid, 1, 12), (new AspectList()).add(Aspect.EARTH, 1).add(Aspect.ELDRITCH, 1));
        ThaumcraftApi.registerComplexObjectTag(new ItemStack(ConfigItems.itemPrimalArrow), (new AspectList()).add(Aspect.WEAPON, 1));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomOre, 1, 1), (new AspectList()).add(Aspect.EARTH, 1).add(Aspect.AIR, 3).add(Aspect.CRYSTAL, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomOre, 1, 2), (new AspectList()).add(Aspect.EARTH, 1).add(Aspect.FIRE, 3).add(Aspect.CRYSTAL, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomOre, 1, 3), (new AspectList()).add(Aspect.EARTH, 1).add(Aspect.WATER, 3).add(Aspect.CRYSTAL, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomOre, 1, 4), (new AspectList()).add(Aspect.EARTH, 1).add(Aspect.EARTH, 3).add(Aspect.CRYSTAL, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomOre, 1, 5), (new AspectList()).add(Aspect.EARTH, 1).add(Aspect.ORDER, 3).add(Aspect.CRYSTAL, 2));
        ThaumcraftApi.registerObjectTag(new ItemStack(ConfigBlocks.blockCustomOre, 1, 6), (new AspectList()).add(Aspect.EARTH, 1).add(Aspect.ENTROPY, 3).add(Aspect.CRYSTAL, 2));
        // Oredict
        ThaumcraftApi.registerObjectTag("nuggetIron", new AspectList().add(Aspect.METAL, 1));
        ThaumcraftApi.registerObjectTag("nuggetTin", new AspectList().add(Aspect.METAL, 1));
        ThaumcraftApi.registerObjectTag("nuggetCopper", new AspectList().add(Aspect.METAL, 1));
        ThaumcraftApi.registerObjectTag("nuggetSilver", new AspectList().add(Aspect.METAL, 1));
        ThaumcraftApi.registerObjectTag("nuggetLead", new AspectList().add(Aspect.METAL, 1));

        ThaumcraftApi.registerObjectTag("dustIron", new AspectList().add(Aspect.METAL, 7).add(Aspects.DESTRUCTION, 1));
        ThaumcraftApi.registerObjectTag("dustGold", new AspectList().add(Aspect.METAL, 7).add(Aspects.VALUABLE, 4).add(Aspects.DESTRUCTION, 1));
        ThaumcraftApi.registerObjectTag("dustCopper", new AspectList().add(Aspect.METAL, 5).add(Aspect.LIFE, 2).add(Aspects.DESTRUCTION, 1));
        ThaumcraftApi.registerObjectTag("dustTin", new AspectList().add(Aspect.METAL, 5).add(Aspect.CRYSTAL, 2).add(Aspects.DESTRUCTION, 1));
        ThaumcraftApi.registerObjectTag("dustSilver", new AspectList().add(Aspect.METAL, 5).add(Aspect.EXCHANGE, 2).add(Aspects.DESTRUCTION, 1));
        ThaumcraftApi.registerObjectTag("dustBrass", new AspectList().add(Aspect.METAL, 5).add(Aspects.CONTROL, 1).add(Aspect.EXCHANGE, 1).add(Aspects.DESTRUCTION, 1));
        ThaumcraftApi.registerObjectTag("dustBronze", new AspectList().add(Aspect.METAL, 5).add(Aspects.CONTROL, 1).add(Aspect.EXCHANGE, 1).add(Aspects.DESTRUCTION, 1));
        ThaumcraftApi.registerObjectTag("dustLead", new AspectList().add(Aspect.METAL, 5).add(Aspect.VOID, 2).add(Aspects.DESTRUCTION, 1));

        ThaumcraftApi.registerObjectTag("ingotCopper", new AspectList().add(Aspect.METAL, 6).add(Aspect.LIFE, 2));
        ThaumcraftApi.registerObjectTag("ingotTin", new AspectList().add(Aspect.METAL, 6).add(Aspect.CRYSTAL, 2));
        ThaumcraftApi.registerObjectTag("ingotSilver", new AspectList().add(Aspect.METAL, 6).add(Aspect.EXCHANGE, 2));
        ThaumcraftApi.registerObjectTag("ingotLead", new AspectList().add(Aspect.METAL, 6).add(Aspect.VOID, 2));
        ThaumcraftApi.registerObjectTag("ingotBrass", new AspectList().add(Aspect.METAL, 6).add(Aspects.CONTROL, 1).add(Aspect.EXCHANGE, 1));
        ThaumcraftApi.registerObjectTag("ingotBronze", new AspectList().add(Aspect.METAL, 6).add(Aspects.CONTROL, 1).add(Aspect.EXCHANGE, 1));
        ThaumcraftApi.registerObjectTag("ingotRefinedIron", new AspectList().add(Aspect.METAL, 7).add(Aspects.PURE, 1));
        ThaumcraftApi.registerObjectTag("ingotSteel", new AspectList().add(Aspect.METAL, 7).add(Aspect.CRAFT, 1));
        ThaumcraftApi.registerObjectTag("ingotUranium", new AspectList().add(Aspect.METAL, 6).add(Aspect.POISON, 4).add(Aspect.ENERGY, 6));

        ThaumcraftApi.registerObjectTag("oreUranium", new AspectList().add(Aspect.METAL, 6).add(Aspect.POISON, 4).add(Aspect.ENERGY, 6));
        ThaumcraftApi.registerObjectTag("oreCopper", new AspectList().add(Aspect.METAL, 5).add(Aspect.EXCHANGE, 1).add(Aspects.ROCK, 2));
        ThaumcraftApi.registerObjectTag("oreTin", new AspectList().add(Aspect.METAL, 5).add(Aspects.CONTROL, 1).add(Aspects.ROCK, 2));
        ThaumcraftApi.registerObjectTag("oreSilver", new AspectList().add(Aspect.METAL, 5).add(Aspect.EXCHANGE, 1).add(Aspects.ROCK, 2));

        ThaumcraftApi.registerObjectTag("dustNikolite", new AspectList().add(Aspect.ENERGY, 2).add(Aspect.MECHANISM, 2));
        ThaumcraftApi.registerObjectTag("dustSulfur", new AspectList().add(Aspect.LIFE, 2).add(Aspect.FIRE, 1));

        ThaumcraftApi.registerObjectTag("gemRuby", new AspectList().add(Aspect.CRYSTAL, 8).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag("gemGreenSapphire", new AspectList().add(Aspect.CRYSTAL, 8).add(Aspects.VALUABLE, 4));
        ThaumcraftApi.registerObjectTag("gemSapphire", new AspectList().add(Aspect.CRYSTAL, 8).add(Aspects.VALUABLE, 4));

        ThaumcraftApi.registerObjectTag("woodRubber", new AspectList().add(Aspect.TREE, 6).add(Aspect.MOTION, 1).add(Aspect.TOOL, 1));
        ThaumcraftApi.registerObjectTag("itemRubber", new AspectList().add(Aspect.MOTION, 2).add(Aspects.CONTROL, 2));
        ThaumcraftApi.registerObjectTag("dropUranium", new AspectList().add(Aspect.METAL, 6).add(Aspect.POISON, 4).add(Aspect.ENERGY, 6));
    }

}
