2019-07-29 01:34:38 +02:00
|
|
|
package me.ryandw11.ultrachat.formatting;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.HashSet;
|
|
|
|
|
2020-06-25 11:47:08 +02:00
|
|
|
import me.ryandw11.ultrachat.util.ChatUtil;
|
2019-07-29 01:34:38 +02:00
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.ChatColor;
|
|
|
|
import org.bukkit.entity.Entity;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.event.EventHandler;
|
2020-06-25 11:47:08 +02:00
|
|
|
import org.bukkit.event.EventPriority;
|
2019-07-29 01:34:38 +02:00
|
|
|
import org.bukkit.event.Listener;
|
|
|
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
|
|
|
|
|
|
|
import me.ryandw11.ultrachat.UltraChat;
|
|
|
|
import me.ryandw11.ultrachat.api.ChatType;
|
|
|
|
import me.ryandw11.ultrachat.api.events.UltraChatEvent;
|
|
|
|
import me.ryandw11.ultrachat.api.events.properties.RangeProperties;
|
|
|
|
import me.ryandw11.ultrachat.api.events.properties.RangeType;
|
|
|
|
import me.ryandw11.ultrachat.api.managers.JComponentManager;
|
|
|
|
import net.md_5.bungee.api.chat.ComponentBuilder;
|
|
|
|
import net.md_5.bungee.api.chat.TextComponent;
|
|
|
|
|
|
|
|
public class RangeJSON implements Listener {
|
|
|
|
|
|
|
|
private UltraChat plugin;
|
|
|
|
|
|
|
|
public RangeJSON() {
|
|
|
|
this.plugin = UltraChat.plugin;
|
|
|
|
}
|
|
|
|
|
2020-06-25 11:47:08 +02:00
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
2019-07-29 01:34:38 +02:00
|
|
|
public void onChat(AsyncPlayerChatEvent e) {
|
|
|
|
Player p = e.getPlayer();
|
|
|
|
PlayerFormatting pf = new PlayerFormatting(p);
|
|
|
|
e.getRecipients().removeAll(Bukkit.getOnlinePlayers());
|
|
|
|
e.getRecipients().addAll(getNearbyPlayers(p));
|
|
|
|
e.getRecipients().add(p);
|
|
|
|
|
|
|
|
RangeProperties rp = new RangeProperties(true, RangeType.LOCAL);
|
|
|
|
|
2020-06-25 11:47:08 +02:00
|
|
|
UltraChatEvent uce = new UltraChatEvent(p, e.getMessage(), new HashSet<>(e.getRecipients()), ChatType.RANGE, rp);
|
2019-07-29 01:34:38 +02:00
|
|
|
Bukkit.getServer().getPluginManager().callEvent(uce);
|
2020-06-25 11:47:08 +02:00
|
|
|
e.getRecipients().clear();
|
2019-07-29 01:34:38 +02:00
|
|
|
if (!uce.isCancelled()) {
|
|
|
|
for (Player pl : uce.getRecipients()) {
|
|
|
|
|
2020-06-25 11:47:08 +02:00
|
|
|
String formats = pf.getLocal()
|
2019-07-29 01:34:38 +02:00
|
|
|
.replace("%player%", p.getDisplayName())
|
|
|
|
.replace("%prefix%", pf.getPrefix())
|
|
|
|
.replace("%suffix%", pf.getSuffix())
|
|
|
|
+ pf.getColor();
|
2020-06-25 11:47:08 +02:00
|
|
|
|
2019-07-29 01:34:38 +02:00
|
|
|
ComponentBuilder cb = new ComponentBuilder("");
|
2020-06-25 11:47:08 +02:00
|
|
|
cb.append(JComponentManager.formatComponents(formats, p));
|
2020-06-26 04:13:07 +02:00
|
|
|
cb.append(new TextComponent(TextComponent.fromLegacyText(plugin.chatColorUtil.translateChatColor(uce.getMessage()), pf.getColor())), ComponentBuilder.FormatRetention.NONE);
|
2019-07-29 01:34:38 +02:00
|
|
|
pl.spigot().sendMessage(cb.create());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private ArrayList<Player> getNearbyPlayers(Player pl) {
|
|
|
|
ArrayList<Player> nearby = new ArrayList<Player>();
|
|
|
|
double range = plugin.getConfig().getDouble("Local.range");
|
|
|
|
for (Entity e : pl.getNearbyEntities(range, range, range)) {
|
|
|
|
if (e instanceof Player) {
|
|
|
|
nearby.add((Player) e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return nearby;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|