/** * 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.ability.develop.action; import cn.academy.ability.api.Category; import cn.academy.ability.api.CategoryManager; import cn.academy.ability.api.data.AbilityData; import cn.academy.ability.develop.IDeveloper; import cn.academy.ability.develop.LearningHelper; import cn.academy.ability.item.ItemInductionFactor; import cn.lambdalib.util.generic.RandUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import java.util.Arrays; import java.util.Optional; /** * @author WeAthFolD */ public class DevelopActionLevel implements IDevelopAction { @Override public int getStimulations(EntityPlayer player) { return 5 * (AbilityData.get(player).getLevel() + 1); } @Override public boolean validate(EntityPlayer player, IDeveloper developer) { return LearningHelper.canLevelUp(developer.getType(), AbilityData.get(player)); } @Override public void onLearned(EntityPlayer player) { AbilityData aData = AbilityData.get(player); if(!aData.hasCategory()) { aData.setCategory(chooseCategory(player)); } else { aData.setLevel(aData.getLevel() + 1); } } private Category chooseCategory(EntityPlayer player) { Optional<ItemStack> inductedCategory = DevelopActionReset.getFactor(player); if (inductedCategory.isPresent()) { ItemStack factor = inductedCategory.get(); int factorIdx = Arrays.asList(player.inventory.mainInventory).indexOf(factor); player.inventory.mainInventory[factorIdx] = null; return ItemInductionFactor.getCategory(factor); } else { CategoryManager man = CategoryManager.INSTANCE; return man.getCategory(RandUtils.nextInt(man.getCategoryCount())); } } }