Untitled
unknown
java
2 years ago
6.8 kB
14
Indexable
package com.trexmine.chat.listeners;
import com.trexmine.chat.configuration.Configuration;
import com.trexmine.chat.utils.Utils;
import com.trexmine.chat.utils.VanishCheck;
import me.clip.placeholderapi.PlaceholderAPI;
import net.luckperms.api.LuckPerms;
import net.luckperms.api.cacheddata.CachedMetaData;
import net.luckperms.api.model.group.Group;
import net.luckperms.api.model.user.User;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import java.util.Collection;
public final class AsyncPlayerChatListener implements Listener {
private static final LuckPerms LP = Bukkit.getServicesManager().getRegistration(LuckPerms.class).getProvider();
private final boolean placeholderApiEnabled = Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI");
@EventHandler(priority = EventPriority.LOWEST)
public void onAsyncPlayerChat(AsyncPlayerChatEvent event) {
Player player = event.getPlayer();
String message = event.getMessage();
// if (player.hasPermission("chat.color")) {
// message = color(message);
// }
// if (player.hasPermission("chat.format")) {
// message = format(message);
// }
if (player.hasPermission("chat.emoji")) {
String lastColor = ChatColor.getLastColors(message);
if (lastColor.isEmpty()) {
lastColor = Configuration.DEFAULT_MESSAGE_COLOR;
}
message = Configuration.DEFAULT_MESSAGE_COLOR + message
.replace("<3", ChatColor.RED + "❤" + lastColor)
.replace("o/", ChatColor.LIGHT_PURPLE + "( ゚◡゚)/" + lastColor)
.replace("O_O", ChatColor.BLUE + "◎" + ChatColor.YELLOW + "_" + ChatColor.BLUE + "◎" + lastColor)
.replace("h/", ChatColor.GOLD + "ヽ(^◇^*)/" + lastColor)
.replace(":gg:", ChatColor.GOLD + "" + ChatColor.BOLD + "GG" + lastColor)
.replace("^-^", ChatColor.GREEN + "^-^" + lastColor)
.replace(":gimme:", ChatColor.AQUA + "༼つ ◕_◕ ༽つ" + lastColor)
.replace(":shrug:", ChatColor.YELLOW + "¯\\_(ツ)_/¯" + lastColor)
.replace(":tableflip:", ChatColor.RED + "(╯°□°)╯" + ChatColor.GRAY + "︵ ┻━┻" + lastColor)
.replace(":yey:", ChatColor.GREEN + "ヽ (◕◡◕) ノ" + lastColor);
}
Collection<? extends Player> players = Bukkit.getOnlinePlayers();
for (Player eachPlayer : players) {
if (eachPlayer != player && !VanishCheck.isVanished(eachPlayer)) {
String name = eachPlayer.getName();
if (message.contains(name)) {
String lastColor = ChatColor.getLastColors(message);
if (lastColor.isEmpty()) {
lastColor = Configuration.DEFAULT_MESSAGE_COLOR;
}
message = message.replace(name, ChatColor.GREEN + name + lastColor);
eachPlayer.playSound(eachPlayer.getLocation(),
Sound.valueOf(Utils.MC_VERSION > 12 ? "BLOCK_NOTE_BLOCK_PLING" : "NOTE_PLING"),
1F, 1F);
}
}
}
if (Configuration.WORLD_WHITELIST_ENABLED && !Configuration.WORLD_WHITELIST_WORLDS.contains(player.getWorld().getName())) {
event.setMessage(message);
return;
}
//
// String group = loadUser(player).getPrimaryGroup();
// String format = Configuration.GROUP_FORMATS.getOrDefault(group, Configuration.CHAT_FORMAT)
// .replace("{name}", player.getName())
// .replace("{world}", player.getWorld().getName())
// .replace("{prefix}", getPrefix(player))
// .replace("{suffix}", getSuffix(player))
// .replace("{username-color}", getUsernameColor(player, group))
// .replace("{message-color}", getMessageColor(player, group));
//
// format = Utils.color(placeholderApiEnabled ? PlaceholderAPI.setPlaceholders(player, format) : format);
//
// event.setFormat(format.replace("{message}", message).replace("%", "%%"));
}
private String color(String text) {
char[] array = text.toCharArray();
for (int i = 0; i < array.length - 1; i++) {
if (array[i] == '&' && "0123456789AaBbCcDdEeFfRr".indexOf(array[i + 1]) != -1) {
array[i] = 167;
array[i + 1] = Character.toLowerCase(array[i + 1]);
}
}
return new String(array);
}
private String format(String text) {
char[] array = text.toCharArray();
for (int i = 0; i < array.length - 1; i++) {
if (array[i] == '&' && "LlMmNnOoKkRr".indexOf(array[i + 1]) != -1) {
array[i] = 167;
array[i + 1] = Character.toLowerCase(array[i + 1]);
}
}
return new String(array);
}
private String getPrefix(Player player) {
String prefix = getPlayerMeta(player).getPrefix();
return prefix != null ? prefix : "";
}
private String getSuffix(Player player) {
String suffix = getPlayerMeta(player).getSuffix();
return suffix != null ? suffix : "";
}
private String getUsernameColor(Player player, String group) {
String playerColor = getPlayerMeta(player).getMetaValue("username-color");
if (playerColor != null) return playerColor;
String rankColor = getGroupMeta(group).getMetaValue("username-color");
return rankColor != null ? rankColor : "";
}
private String getMessageColor(Player player, String group) {
String playerColor = getPlayerMeta(player).getMetaValue("message-color");
if (playerColor != null) return playerColor;
String rankColor = getGroupMeta(group).getMetaValue("message-color");
return rankColor != null ? rankColor : "";
}
private CachedMetaData getPlayerMeta(Player player) {
return loadUser(player).getCachedData().getMetaData(LP.getContextManager().getQueryOptions(player));
}
private CachedMetaData getGroupMeta(final String group) {
return loadGroup(group).getCachedData().getMetaData(LP.getContextManager().getStaticQueryOptions());
}
private User loadUser(Player player) {
return LP.getUserManager().getUser(player.getUniqueId());
}
private Group loadGroup(String group) {
return LP.getGroupManager().getGroup(group);
}
}Editor is loading...
Leave a Comment