public GuiAspectFormer(EntityPlayer ep, TileEntityAspectFormer te) {
   super(new CoreContainer(ep, te), ep, te);
   list.addAll(ReikaThaumHelper.getAllDiscoveredAspects(ep));
   ReikaThaumHelper.sortAspectList(list);
   ySize = 74;
   tile = te;
   mode = te.getMode();
 }
 @Override
 @ModDependent(ModList.THAUMCRAFT)
 public ItemStack onWandRightClick(World world, ItemStack wandstack, EntityPlayer player) {
   player.setItemInUse(wandstack, Integer.MAX_VALUE);
   ReikaThaumHelper.setWandInUse(wandstack, this);
   return wandstack;
 }
  public static void addRecipes() {
    int i = -2;
    String ref =
        FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT
            ? ChromaDescriptions.getParentPage() + "thaum.xml"
            : "";
    for (TieredOres t : items.keySet()) {
      WandType wt = items.get(t);
      AspectList al = new AspectList();
      int n = t == TieredOres.FOCAL ? 2 : 1;
      al.add(Aspect.ORDER, 20 * n);
      Aspect a = wt.aspects.get(0);
      al.add(a, 50 * n);
      Object[] recipe = {"AAA", "A A", 'A', wt.raw};
      ShapedArcaneRecipe ir = ThaumcraftApi.addArcaneCraftingRecipe("", wt.item, al, recipe);
      String id = "CAP_TIEREDCAP_" + t.name();
      String desc = "Novel caps";

      MathExpression cost =
          new MathExpression() {
            @Override
            public double evaluate(double arg) throws ArithmeticException {
              return arg / 5D;
            }

            @Override
            public double getBaseValue() {
              return 0;
            }

            @Override
            public String toString() {
              return "/5";
            }
          };

      ReikaThaumHelper.addArcaneRecipeBookEntryViaXML(
          id, desc, "chromaticraft", ir, cost, 2, i, ChromatiCraft.class, ref);
      i++;
    }
  }
 @Override
 @ModDependent(ModList.THAUMCRAFT)
 public void onUsingWandTick(ItemStack wandstack, EntityPlayer player, int count) {
   if (!worldObj.isRemote && this.canConduct() && player.ticksExisted % 5 == 0) {
     if (!ChromaOptions.HARDTHAUM.getState()
         || ReikaThaumHelper.isResearchComplete(player, "NODETAPPER2")) {
       AspectList al = ReikaThaumHelper.decompose(this.getAspects());
       for (Aspect a : al.aspects.keySet()) {
         int amt = 2;
         if (ReikaThaumHelper.isResearchComplete(player, "NODETAPPER1")) amt *= 2;
         if (ReikaThaumHelper.isResearchComplete(player, "NODETAPPER2")) amt *= 2;
         amt = Math.min(amt, al.getAmount(a));
         amt = Math.min(amt, ReikaThaumHelper.getWandSpaceFor(wandstack, a));
         int ret = ReikaThaumHelper.addVisToWand(wandstack, a, amt);
         int added = amt - ret;
         if (added > 0) {
           this.drain(color, Math.min(energy, energy - added * 48));
         }
       }
     }
   }
 }