package com.nisovin.magicspells.spells.buff;
import java.util.HashSet;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import com.nisovin.magicspells.events.SpellTargetEvent;
import com.nisovin.magicspells.spells.BuffSpell;
import com.nisovin.magicspells.util.MagicConfig;
public class ReflectSpell extends BuffSpell {
private HashSet<String> reflectors;
public ReflectSpell(MagicConfig config, String spellName) {
super(config, spellName);
reflectors = new HashSet<String>();
}
@Override
public boolean castBuff(Player player, float power, String[] args) {
reflectors.add(player.getName());
return true;
}
@EventHandler
public void onSpellTarget(SpellTargetEvent event) {
if (event.isCancelled()) return;
if (event.getTarget() instanceof Player) {
Player target = (Player)event.getTarget();
if (isActive(target)) {
boolean ok = chargeUseCost(target);
if (ok) {
event.setTarget(event.getCaster());
addUse(target);
}
}
}
}
@Override
public void turnOffBuff(Player player) {
reflectors.remove(player.getName());
}
@Override
protected void turnOff() {
reflectors.clear();
}
@Override
public boolean isActive(Player player) {
return reflectors.contains(player.getName());
}
}