package com.nisovin.magicspells.spells.buff;
import java.util.HashSet;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import com.nisovin.magicspells.events.ManaChangeEvent;
import com.nisovin.magicspells.mana.ManaChangeReason;
import com.nisovin.magicspells.spells.BuffSpell;
import com.nisovin.magicspells.util.MagicConfig;
public class ManaRegenSpell extends BuffSpell {
private int regenModAmt;
private HashSet<String> regenning;
public ManaRegenSpell(MagicConfig config, String spellName) {
super(config, spellName);
regenModAmt = getConfigInt("regen-mod-amt", 3);
regenning = new HashSet<String>();
}
@Override
public boolean castBuff(Player player, float power, String[] args) {
regenning.add(player.getName());
return true;
}
@EventHandler(priority=EventPriority.MONITOR)
public void onManaRegenTick(ManaChangeEvent event) {
Player p = event.getPlayer();
if(!isExpired(p) && isActive(p) && event.getReason().equals(ManaChangeReason.REGEN)) {
int newAmt = event.getNewAmount() + regenModAmt;
if (newAmt > event.getMaxMana()) {
newAmt = event.getMaxMana();
} else if (newAmt < 0) {
newAmt = 0;
}
event.setNewAmount(newAmt);
addUseAndChargeCost(p);
}
}
@Override
public void turnOffBuff(Player player) {
regenning.remove(player.getName());
}
@Override
protected void turnOff() {
regenning.clear();
}
@Override
public boolean isActive(Player player) {
return regenning.contains(player.getName());
}
}