package com.nisovin.magicspells.spells.buff; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import com.nisovin.magicspells.events.SpellCastEvent; import com.nisovin.magicspells.spells.BuffSpell; import com.nisovin.magicspells.util.MagicConfig; public class ClaritySpell extends BuffSpell { float multiplier; Set<String> spells; Map<String, Float> buffed = new HashMap<String, Float>(); public ClaritySpell(MagicConfig config, String spellName) { super(config, spellName); multiplier = getConfigFloat("multiplier", 0.5F); List<String> list = getConfigStringList("spells", null); if (list != null && list.size() > 0) { spells = new HashSet<String>(); spells.addAll(list); } } @Override public boolean castBuff(Player player, float power, String[] args) { buffed.put(player.getName(), power); return true; } @EventHandler(ignoreCancelled = true) public void onSpellCast(SpellCastEvent event) { if (buffed.containsKey(event.getCaster().getName()) && (spells == null || spells.contains(event.getSpell().getInternalName()))) { float power = buffed.get(event.getCaster().getName()); float mod = multiplier; if (multiplier < 1) { mod *= (1/power); } else if (multiplier > 1) { mod *= power; } event.setReagents(event.getReagents().multiply(mod)); addUseAndChargeCost(event.getCaster()); } } @Override public boolean isActive(Player player) { return buffed.containsKey(player.getName()); } @Override protected void turnOffBuff(Player player) { buffed.remove(player.getName()); } @Override protected void turnOff() { buffed.clear(); } }