package com.nisovin.magicspells.spelleffects; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import com.nisovin.magicspells.MagicSpells; public class BroadcastEffect extends SpellEffect { String message = ""; int range = 0; int rangeSq = 0; boolean targeted = false; @Override public void loadFromString(String string) { message = string; } @Override public void loadFromConfig(ConfigurationSection config) { message = config.getString("message", message); range = config.getInt("range", range); rangeSq = range * range; targeted = config.getBoolean("targeted", targeted); } @Override public void playEffectLocation(Location location) { broadcast(location, message); } @Override public void playEffectEntity(Entity entity) { if (targeted) { if (entity != null && entity instanceof Player) { MagicSpells.sendMessage((Player)entity, message); } } else { String msg = message; if (entity != null && entity instanceof Player) { msg = msg.replace("%a", ((Player)entity).getDisplayName()).replace("%t", ((Player)entity).getDisplayName()).replace("%n", ((Player)entity).getName()); } broadcast(entity == null ? null : entity.getLocation(), msg); } } private void broadcast(Location location, String message) { if (range <= 0) { for (Player player : Bukkit.getOnlinePlayers()) { MagicSpells.sendMessage(player, message); } } else if (location != null) { for (Player player : Bukkit.getOnlinePlayers()) { if (player.getWorld().equals(location.getWorld()) && player.getLocation().distanceSquared(location) <= rangeSq) { MagicSpells.sendMessage(player, message); } } } } }