/**
* 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;
import cn.academy.ability.ModuleAbility;
import cn.academy.energy.api.IFItemManager;
import cn.lambdalib.annoreg.core.Registrant;
import cn.lambdalib.util.datapart.DataPart;
import cn.lambdalib.util.datapart.EntityData;
import cn.lambdalib.util.datapart.RegDataPart;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
/**
* The Developer instance for portable developer attached one per player.
* @author WeAthFolD
*/
@Registrant
@RegDataPart(EntityPlayer.class)
public class PortableDevData extends DataPart<EntityPlayer> implements IDeveloper {
public static PortableDevData get(EntityPlayer player) {
return EntityData.get(player).getPart(PortableDevData.class);
}
private ItemStack stack() {
ItemStack stack = getEntity().getCurrentEquippedItem();
return stack != null && stack.getItem() == ModuleAbility.developerPortable ? stack : null;
}
@Override
public DeveloperType getType() {
return DeveloperType.PORTABLE;
}
@Override
public boolean tryPullEnergy(double amount) {
ItemStack stack = stack();
if(stack == null)
return false;
return IFItemManager.instance.pull(stack, amount, true) == amount;
}
@Override
public double getEnergy() {
ItemStack stack = stack();
return stack == null ? 0 : IFItemManager.instance.getEnergy(stack);
}
@Override
public double getMaxEnergy() {
ItemStack stack = stack();
return stack == null ? 0 : IFItemManager.instance.getMaxEnergy(stack);
}
}