/** * Copyright (c) Lambda Innovation, 2013-2016 * This file is part of the AcademyCraft mod. * https://github.com/LambdaInnovation/AcademyCraft * Licensed under GPLv3, see project root for more information. */ package cn.academy.misc.tutorial; import cn.academy.ability.ModuleAbility; import cn.academy.core.Resources; import cn.academy.core.registry.ACRecipeNamesRegistration.RegACRecipeNames; import cn.academy.crafting.ModuleCrafting; import cn.academy.energy.ModuleEnergy; import cn.academy.misc.tutorial.client.GuiTutorial; import cn.academy.support.rf.RFSupport; import cn.academy.terminal.App; import cn.academy.terminal.AppEnvironment; import cn.academy.terminal.AppRegistry; import cn.academy.terminal.ModuleTerminal; import cn.academy.terminal.item.ItemApp; import cn.lambdalib.annoreg.core.Registrant; import cn.lambdalib.annoreg.mc.RegItem; import cn.lambdalib.annoreg.mc.RegPostInitCallback; import cn.lambdalib.crafting.CustomMappingHelper.RecipeName; import cn.lambdalib.util.generic.RandUtils; import cn.lambdalib.util.helper.Color; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.util.ResourceLocation; import static cn.academy.misc.tutorial.Conditions.*; import static cn.academy.misc.tutorial.ViewGroups.*; @Registrant @RegACRecipeNames public class ModuleTutorial { @RegItem @RecipeName("tutorial") public static ItemTutorial itemTutorial; private static ACTutorial defnTut(String name) { return TutorialRegistry.addTutorial(name); } @RegPostInitCallback private static void initConditions() { defnTut("welcome"); defnTut("ores") .addCondition(itemObtained(ModuleCrafting.oreConstraintMetal)) .addCondition(itemObtained(ModuleCrafting.oreImagSil)) .addCondition(itemObtained(ModuleCrafting.oreImagCrystal)) .addCondition(itemObtained(ModuleCrafting.oreResoCrystal)) .addPreview(drawsBlock(ModuleCrafting.oreConstraintMetal)) .addPreview(drawsBlock(ModuleCrafting.oreImagSil)) .addPreview(drawsBlock(ModuleCrafting.oreImagCrystal)) .addPreview(drawsBlock(ModuleCrafting.oreResoCrystal)) .addPreview(displayIcon("items/matter_unit/phase_liquid_mat", 0, 0, 1, Color.white())) .addPreview(recipes(ModuleCrafting.constPlate)) .addPreview(recipes(ModuleCrafting.ingotImagSil)) .addPreview(recipes(ModuleCrafting.wafer)) .addPreview(recipes(ModuleCrafting.silPiece)); defnTut("phase_generator") .addCondition(itemObtained(ModuleEnergy.phaseGen)) .addPreview(recipes(ModuleEnergy.phaseGen)); defnTut("solar_generator") .addCondition(itemObtained(ModuleEnergy.solarGen)) .addPreview(recipes(ModuleEnergy.solarGen)); defnTut("wind_generator") .addCondition(itemObtained(ModuleEnergy.windgenBase)) .addCondition(itemObtained(ModuleEnergy.windgenFan)) .addCondition(itemObtained(ModuleEnergy.windgenMain)) .addCondition(itemObtained(ModuleEnergy.windgenPillar)) .addPreview(recipes(ModuleEnergy.windgenBase)) .addPreview(recipes(ModuleEnergy.windgenPillar)) .addPreview(recipes(ModuleEnergy.windgenMain)) .addPreview(recipes(ModuleEnergy.windgenFan)); defnTut("metal_former") .addCondition(itemObtained(ModuleCrafting.metalFormer)) .addPreview(recipes(ModuleCrafting.metalFormer)); defnTut("imag_fusor") .addCondition(itemObtained(ModuleCrafting.imagFusor)) .addPreview(recipes(ModuleCrafting.imagFusor)); ACTutorial tutorialTerminal = defnTut("terminal") .addCondition(itemObtained(ModuleTerminal.terminalInstaller)) .addPreview(recipes(ModuleTerminal.terminalInstaller)); for(App app : AppRegistry.enumeration()) { if(!app.isPreInstalled()) { tutorialTerminal.addCondition(itemObtained(ItemApp.getItemForApp(app))); tutorialTerminal.addPreview(recipes(ItemApp.getItemForApp(app))); } } defnTut("ability_developer") .addCondition(itemObtained(ModuleAbility.developerPortable)) .addCondition(itemObtained(ModuleAbility.developerNormal)) .addCondition(itemObtained(ModuleAbility.developerAdvanced)) .addPreview(recipes(ModuleAbility.developerPortable)) .addPreview(recipes(ModuleAbility.developerNormal)) .addPreview(recipes(ModuleAbility.developerAdvanced)); defnTut("ability_basis"); defnTut("energy_bridge") .addCondition(itemObtained(RFSupport.rfInput)) .addCondition(itemObtained(RFSupport.rfOutput)) .addPreview(recipes(RFSupport.rfInput)) .addPreview(recipes(RFSupport.rfOutput)); defnTut("misc"); defnTut("develop_ability"); defnTut("wireless_network"); // Add app for tutorial AppRegistry.register(new App("tutorial") { @Override public AppEnvironment createEnvironment() { return new AppEnvironment() { @Override @SideOnly(Side.CLIENT) public void onStart() { Minecraft.getMinecraft().displayGuiScreen(new GuiTutorial()); } }; } // Random gives icon for more fun >) @Override public ResourceLocation getIcon() { float rand = RandUtils.nextFloat(); if (rand < 0.2f) { return icon(0); } else if (rand < 0.3f) { return icon(1); } else { return icon(2); } } private ResourceLocation icon(int id) { return Resources.preloadMipmapTexture("guis/apps/tutorial/icon_" + id); } }.setPreInstalled()); } }