package de.tobiyas.racesandclasses.playermanagement.spellmanagement.mana.impl;
import java.lang.reflect.Method;
import org.bukkit.entity.Player;
import com.nisovin.magicspells.MagicSpells;
import com.nisovin.magicspells.mana.ManaBar;
import com.nisovin.magicspells.mana.ManaChangeReason;
import de.tobiyas.racesandclasses.playermanagement.player.RaCPlayer;
import de.tobiyas.racesandclasses.playermanagement.spellmanagement.mana.ManaFoodBarRunner;
public class MagicSpellsManaManager extends AbstractManaManager {
/**
* The runner for the Mana food bar.
*/
private final ManaFoodBarRunner foodBar;
public MagicSpellsManaManager(RaCPlayer racPlayer) {
super(racPlayer);
foodBar = new ManaFoodBarRunner(this);
foodBar.start();
}
@Override
public double fillMana(double value) {
MagicSpells.getManaHandler().addMana(racPlayer.getPlayer(), (int)value, ManaChangeReason.OTHER);
return getCurrentMana();
}
@Override
public double drownMana(double value) {
MagicSpells.getManaHandler().removeMana(racPlayer.getPlayer(), (int)value, ManaChangeReason.OTHER);
return getCurrentMana();
}
@Override
public double getMaxMana() {
return MagicSpells.getManaHandler().getMaxMana(racPlayer.getPlayer());
}
@Override
public double getCurrentMana() {
ManaBar bar = getBar();
if(bar == null) return 0;
return bar.getMana();
}
private ManaBar getBar(){
try{
Method method = MagicSpells.getManaHandler().getClass().getDeclaredMethod("getManaBar", Player.class);
method.setAccessible(true);
return (ManaBar) method.invoke(MagicSpells.getManaHandler(), racPlayer.getPlayer());
}catch(Throwable exp){
exp.printStackTrace();
return null;
}
}
@Override
protected void applyMaxManaBonus(double bonus) {}
}