public static void PerformDrafting(EntityPlayer player) {
   LogHelper.info("Performing Drafting");
   IDrafter drafter = DraftingProvider.get(player);
   if (drafter == null) return;
   IDraftable toDraft = DraftableReg.GetDraftable(drafter.GetSelectedDraftable());
   if (toDraft == null) return;
   ItemStack held = player.getHeldItem();
   LogHelper.info("attempting draft of " + toDraft.GetName());
   if (held == null) {
     if (drafter.AttemptDrafting(toDraft.GetCost())) {
       convertCostToExperience(drafter, toDraft.GetCost());
       ItemStack drafted = toDraft.CreateItem();
       LogHelper.info(((IDraftable) drafted.getItem()).GetName() + " Created");
       player.setCurrentItemOrArmor(player.inventory.currentItem, drafted);
     } else drafter.MakeSick();
     try {
       drafter.dataChanged(player);
     } catch (Exception e) {
       LogHelper.warn("Drafting errored");
       System.out.println(e.getMessage());
     }
   }
 }
 private static void convertCostToExperience(IDrafter drafter, HashMap<String, Float> costs) {
   for (String luxin : costs.keySet()) drafter.GrantExperience(luxin, costs.get(luxin));
 }