public boolean apply(SpellCastEvent event) { Player player = event.getCaster(); boolean check = condition.check(player); if (check == false && type == ModifierType.REQUIRED) { event.setCancelled(true); return false; } else if (check == true && type == ModifierType.DENIED) { event.setCancelled(true); return false; } else if (check == true) { if (type == ModifierType.STOP) { return false; } else if (type == ModifierType.POWER) { event.increasePower(modifierVarFloat); } else if (type == ModifierType.ADD_POWER) { event.setPower(event.getPower() + modifierVarFloat); } else if (type == ModifierType.COOLDOWN) { event.setCooldown(modifierVarFloat); } else if (type == ModifierType.REAGENTS) { event.setReagents(event.getReagents().multiply(modifierVarFloat)); } else if (type == ModifierType.CAST_TIME) { event.setCastTime(modifierVarInt); } } else if (check == false && type == ModifierType.CONTINUE) { return false; } else if (check == true && type == ModifierType.CAST) { Spell spell = MagicSpells.getSpellByInternalName(modifierVar); if (spell != null) { spell.cast(event.getCaster(), event.getPower(), event.getSpellArgs()); } } else if (check == true && type == ModifierType.CAST_INSTEAD) { Spell spell = MagicSpells.getSpellByInternalName(modifierVar); if (spell != null) { spell.cast(event.getCaster(), event.getPower(), event.getSpellArgs()); } event.setCancelled(true); } return true; }