gpt4 book ai didi

java - 如何添加聊天颜色?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:57 26 4
gpt4 key购买 nike

我想为我的插件添加颜色格式(就像 essentials 在聊天中有颜色一样)。例如,&6test 将变成金色的“test”

我几乎添加了那些颜色,但我遇到了问题。它删除整个消息并留下绿色测试消息。如何添加颜色?

现在我正在使用这个:

public void onPlayerChat(AsyncPlayerChatEvent chatevent){
for (String word : chatevent.getMessage().split(" ")){
word = word.replaceAll("&2", "§2test");
chatevent.setMessage(word);
if(SysMng.getConfig().getStringList("badwords").contains(word)){
if (!chatevent.getPlayer().hasPermission("bypassbadwords")){
chatevent.setCancelled(true);
chatevent.getPlayer().sendMessage(ChatColor.RED + "Dont use dirty or swear words!");
}
}
}
}

但是,正如我所说,它会删除整条消息并留下绿色测试消息。这是由以下原因引起的:

word = word.replaceAll("&2", "§2test");
chatevent.setMessage(word);

忽略“脏话”部分,它只是为了防止人们使用脏话。我该如何解决这个问题,以便玩家可以在聊天中使用颜色代码?

最佳答案

如果您想翻译颜色代码(例如,来自 & 符号),您可以使用 ChatColor.translateAlternateColorCodes

ChatColor.translateAlternateColorCodes('&', str);

这会自动将所有 & 颜色代码转换为带有 § 符号的颜色代码,并因此转换为相应的 ChatColor

所以,例如,如果你使用

String original = "&atest";
String formatted = ChatColor.translateAlternateColorCodes('&', original);

formatted 将等于 "§atest",等于 ChatColor.GREEN + "test"

如果你想让玩家使用 & 颜色代码聊天,你可以先监听 AsyncPlayerChatEvent(在 implements Listener 的类中),然后使用 .translateAlternateColorCodes

将消息设置为正确颜色的消息
@EventHandler
public void playerChat(AsyncPlayerChatEvent e){
//get the chat message
String original = e.getMessage();

//format the chat message with &colorCodes
String formatted = ChatColor.translateAlternateColorCodes('&', original);

//set the message to the formatted message
e.setMessage(formatted);
}

使用它,如果玩家输入类似"&6Hello, &aWorld!" 的内容,它将被翻译成ChatColor.GOLD + "Hello, "+ ChatColor.GREEN + "World! ".

整个消息被 “§2test” 替换的原因是因为您正在拆分字符串,而不是重建它。

相反,您应该在 使用 translateAlternateColorCodes 后拆分字符串, 然后使用 ChatColor.stripColor(String) 从字符串中去除颜色在检查它是否是诅咒词之前(这将防止玩家通过在诅咒词前面放置颜色代码来绕过审查)

关于java - 如何添加聊天颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31079636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com