public static void addArcaneRecipeBookEntryViaXML(
     String id,
     String desc,
     String category,
     IArcaneRecipe ir,
     MathExpression cost,
     int row,
     int col,
     Class root,
     String path) {
   ItemStack out = ir.getRecipeOutput();
   AspectList aspects = new AspectList();
   for (Aspect a : ir.getAspects().aspects.keySet()) {
     aspects.add(a, Math.max(1, (int) (cost.evaluate(ir.getAspects().getAmount(a)))));
   }
   String name = out.getDisplayName();
   CustomThaumResearch res =
       new CustomThaumResearch(id, category, aspects, col, row, 0, out).setName(name);
   res.setDescription(desc);
   XMLResearch xml = new XMLResearch(id.toLowerCase(Locale.ENGLISH), root, path, ir, 2);
   res.setPages(xml.getPages());
   res.registerResearchItem();
 }
Beispiel #2
0
 /** @param recipe an arcane worktable crafting recipe. */
 public ResearchPage(IArcaneRecipe recipe) {
   this.type = PageType.ARCANE_CRAFTING;
   this.recipe = recipe;
   this.recipeOutput = recipe.getRecipeOutput();
 }
  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();
  }