package crazypants.enderio.thaumcraft; import java.util.ArrayList; import java.util.List; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; import thaumcraft.api.ThaumcraftApi; import thaumcraft.api.ThaumcraftApiHelper; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.AspectList; import cpw.mods.fml.common.Loader; import crazypants.enderio.EnderIO; import crazypants.enderio.item.darksteel.upgrade.IDarkSteelUpgrade; import crazypants.enderio.item.skull.BlockEndermanSkull.SkullType; import crazypants.enderio.material.Alloy; import crazypants.enderio.material.BlockFusedQuartz; import crazypants.enderio.material.FrankenSkull; import crazypants.enderio.material.Material; import crazypants.enderio.power.Capacitors; public class ThaumcraftCompat { public static void load() { if(Loader.isModLoaded("Thaumcraft")) { loadAspects(); } } private static void loadAspects() { ThaumcraftApi.registerObjectTag("dustCoal", new AspectList().add(getAspects(Items.coal))); ThaumcraftApi.registerObjectTag("itemSilicon", new AspectList().add(Aspect.FIRE, 1).add(Aspect.ORDER, 1).add(Aspect.SENSES, 1)); ThaumcraftApi.registerObjectTag(Alloy.ELECTRICAL_STEEL.getOreIngot(), new AspectList() .add(getAspects("dustCoal")) .add(getAspects(Items.iron_ingot)) .add(getAspects("itemSilicon"))); ThaumcraftApi.registerObjectTag(Alloy.ENERGETIC_ALLOY.getOreIngot(), new AspectList() .add(getAspects(Items.glowstone_dust)) .add(getAspects(Items.redstone)) .add(getAspects(Items.gold_ingot))); ThaumcraftApi.registerObjectTag(Alloy.PHASED_GOLD.getOreIngot(), new AspectList() .add(getAspects(Items.ender_pearl)) .add(getAspects("ingotEnergeticAlloy"))); ThaumcraftApi.registerObjectTag(Alloy.REDSTONE_ALLOY.getOreIngot(), new AspectList() .add(getAspects(Items.redstone)) .add(getAspects("itemSilicon"))); ThaumcraftApi.registerObjectTag(Alloy.CONDUCTIVE_IRON.getOreIngot(), new AspectList() .add(getAspects(Items.redstone)) .add(getAspects(Items.iron_ingot))); ThaumcraftApi.registerObjectTag(Alloy.PHASED_IRON.getOreIngot(), new AspectList() .add(getAspects(Items.ender_pearl)) .add(getAspects(Items.iron_ingot))); ThaumcraftApi.registerObjectTag(Alloy.DARK_STEEL.getOreIngot(), new AspectList() .add(getAspects(Items.iron_ingot)) .add(getAspects("dustCoal")) .add(getAspects(Blocks.obsidian))); ThaumcraftApi.registerObjectTag(Alloy.SOULARIUM.getOreIngot(), new AspectList() .add(getAspects(Blocks.soul_sand)) .add(getAspects(Items.gold_ingot))); ThaumcraftApi.registerObjectTag(new ItemStack(EnderIO.blockEndermanSkull), new AspectList() .add(Aspect.MAGIC, 3) .add(Aspect.TRAVEL, 4) .add(Aspect.ELDRITCH, 4)); ThaumcraftApi.registerObjectTag(new ItemStack(EnderIO.blockEndermanSkull, 1, SkullType.TORMENTED.ordinal()), new AspectList() .add(getAspects(EnderIO.blockEndermanSkull)) .add(getAspects(Items.potionitem)).add(getAspects(Items.potionitem)) .add(getAspects(new ItemStack(EnderIO.itemBasicCapacitor, 1, Capacitors.BASIC_CAPACITOR.ordinal()))) .add(getAspects(Alloy.SOULARIUM.getOreIngot())).add(getAspects(Alloy.SOULARIUM.getOreIngot()))); ThaumcraftApi.registerObjectTag(new ItemStack(EnderIO.itemFrankenSkull, 1, FrankenSkull.ZOMBIE_ELECTRODE.ordinal()), new AspectList() .add(getAspects(new ItemStack(Items.skull, 1, 2))) .add(getAspects("itemSilicon")).add(getAspects("itemSilicon")) .add(getAspects(new ItemStack(EnderIO.itemBasicCapacitor, 1, Capacitors.BASIC_CAPACITOR.ordinal()))) .add(getAspects(Alloy.ENERGETIC_ALLOY.getOreIngot())).add(getAspects(Alloy.ENERGETIC_ALLOY.getOreIngot()))); ThaumcraftApi.registerObjectTag(new ItemStack(EnderIO.itemFrankenSkull, 1, FrankenSkull.ZOMBIE_CONTROLLER.ordinal()), new AspectList() .add(getAspects(new ItemStack(Items.skull, 1, 2))) .add(getAspects("itemSilicon")).add(getAspects("itemSilicon")) .add(getAspects(new ItemStack(EnderIO.itemBasicCapacitor, 1, Capacitors.BASIC_CAPACITOR.ordinal()))) .add(getAspects(Alloy.SOULARIUM.getOreIngot())).add(getAspects(Alloy.SOULARIUM.getOreIngot()))); ThaumcraftApi.registerObjectTag(new ItemStack(EnderIO.itemFrankenSkull, 1, FrankenSkull.FRANKEN_ZOMBIE.ordinal()), new AspectList() .add(Aspect.UNDEAD, 2) .add(Aspect.MAN, 1) .add(Aspect.EARTH, 1) .add(getAspects(new ItemStack(EnderIO.itemFrankenSkull, 1, FrankenSkull.ZOMBIE_CONTROLLER.ordinal())))); ThaumcraftApi.registerObjectTag(new ItemStack(EnderIO.itemFrankenSkull, 1, FrankenSkull.ENDER_RESONATOR.ordinal()), new AspectList() .add(getAspects(EnderIO.blockEndermanSkull)) .add(getAspects("itemSilicon")).add(getAspects("itemSilicon")) .add(getAspects(Alloy.PHASED_GOLD.getOreIngot())) .add(getAspects(Alloy.SOULARIUM.getOreIngot())).add(getAspects(Alloy.SOULARIUM.getOreIngot()))); ThaumcraftApi.registerObjectTag(new ItemStack(EnderIO.itemMaterial, 1, Material.ENDER_CRYSTAL.ordinal()), new AspectList() .add(Aspect.AIR, 2) .add(Aspect.ELDRITCH, 4) .add(Aspect.TRAVEL, 2) .add(getAspects(Items.emerald))); ThaumcraftApi.registerObjectTag(new ItemStack(EnderIO.itemMaterial, 1, Material.ATTRACTOR_CRYSTAL.ordinal()), new AspectList() .add(Aspect.AIR, 2) .add(Aspect.MAN, 3) .add(getAspects(new ItemStack(EnderIO.itemMaterial, 1, Material.VIBRANT_CYSTAL.ordinal())))); ThaumcraftApi.registerObjectTag(new ItemStack(EnderIO.blockFusedQuartz, 1, BlockFusedQuartz.Type.FUSED_QUARTZ.ordinal()), new AspectList() .add(getAspects(new ItemStack(Items.quartz, 4))) .add(Aspect.CRYSTAL, 1)); ThaumcraftApi.registerObjectTag(new ItemStack(EnderIO.blockFusedQuartz, 1, BlockFusedQuartz.Type.GLASS.ordinal()), new AspectList() .add(Aspect.CRYSTAL, 2)); ThaumcraftApi.registerObjectTag(new ItemStack(EnderIO.blockFusedQuartz, 1, BlockFusedQuartz.Type.ENLIGHTENED_FUSED_QUARTZ.ordinal()), new AspectList() .add(getAspects(new ItemStack(Items.quartz, 4))) .add(Aspect.LIGHT, 8) .add(Aspect.SENSES, 2)); ThaumcraftApi.registerObjectTag(new ItemStack(EnderIO.blockFusedQuartz, 1, BlockFusedQuartz.Type.ENLIGHTENED_GLASS.ordinal()), new AspectList() .add(Aspect.CRYSTAL, 2) .add(Aspect.LIGHT, 8) .add(Aspect.SENSES, 2)); // This is a horrible hack due to the fact that I am assembling my aspects after TC does recipe parsing // Therefore I redo all EIO items for (Object o : Item.itemRegistry.getKeys()) { if(o instanceof String) { String ownermod = ((String) o).substring(0, ((String) o).indexOf(':')); if(EnderIO.MODID.equals(ownermod)) { for (int idx = 0; idx < 16; idx++) { addAspectsFromRecipes((Item) Item.itemRegistry.getObject((String) o), idx); } } } } } private static AspectList getAspects(Block block) { return getAspects(Item.getItemFromBlock(block)); } private static AspectList getAspects(String ore) { ArrayList<ItemStack> ores = OreDictionary.getOres(ore); return ores.isEmpty() ? new AspectList() : getAspects(ores.get(0)); } private static AspectList getAspects(Item item) { return getAspects(new ItemStack(item)); } private static AspectList getAspects(ItemStack item) { return new AspectList(item); } private static void addAspectsFromRecipes(Item item, int meta) { ThaumcraftApi.registerObjectTag(new ItemStack(item, 1, meta), ThaumcraftApiHelper.generateTags(item, meta)); } public static void loadUpgrades(List<IDarkSteelUpgrade> upgrades) { upgrades.add(GogglesOfRevealingUpgrade.INSTANCE); } }