package org.xfurkanadenia.toplu.utils; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.xfurkanadenia.toplu.Toplu; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Utils { private final Toplu plugin; static public final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))"; public Utils(Toplu plugin) { this.plugin = plugin; } // Renk kodlarını çeviren fonksiyon public static String translateColorCodes(String text){ String[] texts = text.split(String.format(WITH_DELIMITER, "&")); StringBuilder finalText = new StringBuilder(); for (int i = 0; i < texts.length; i++){ if (texts[i].equalsIgnoreCase("&")){ //get the next string i++; if (texts[i].charAt(0) == '#'){ finalText.append(net.md_5.bungee.api.ChatColor.of(texts[i].substring(0, 7)) + texts[i].substring(7)); }else{ finalText.append(ChatColor.translateAlternateColorCodes('&', "&" + texts[i])); } }else{ finalText.append(texts[i]); } } return finalText.toString(); } // Tıklanabilir mesajları parse eden fonksiyon public static TextComponent parseClickableMessage(String message) { // formatına uyan regex Pattern pattern = Pattern.compile(""); Matcher matcher = pattern.matcher(message); if (matcher.find()) { String url = matcher.group(1); // Link kısmı String clickableText = matcher.group(2); // Tıklanabilir metin // Renk kodlarını çevirmek için translateColorCodes fonksiyonunu kullan clickableText = translateColorCodes(clickableText); // Tıklanabilir TextComponent oluştur TextComponent clickableMessage = new TextComponent(clickableText); clickableMessage.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, url)); // Mesajı tıklanabilir hale getir String[] parts = message.split(""); // Link harici kısımları ayır TextComponent finalMessage = new TextComponent(); // Boş bir TextComponent başlat // Hex kodlarını ve renk kodlarını düzgün işlemek için önceki kısmı işle if (parts.length > 0) { finalMessage.addExtra(new TextComponent(translateColorCodes(parts[0]))); } // Tıklanabilir mesajı ekle finalMessage.addExtra(clickableMessage); // Eğer link sonrası başka metin varsa ekle if (parts.length > 1) { finalMessage.addExtra(new TextComponent(translateColorCodes(parts[1]))); } return finalMessage; } // Eğer eşleşme yoksa sadece renk kodlarını çevir ve mesajı döndür return new TextComponent(translateColorCodes(message)); } // Placeholderları değiştirir public String placeholders(String message) { return message.replaceAll("%prefix%", plugin.getConfig().getString("prefix")); } }