2014-07-12 69 views
0

所以我有一個插件即時消息,讓他們在消息中被踢。我希望該消息的顏色是在config.yml中設置的。繼承人我的代碼:Bukkit編碼 - 在config.yml中設置顏色代碼的踢消息

 } 
    if (l == 2) { 
     settings.getData().set("" + target.getName() + "", null); 
     settings.saveData(); 
     target.kickPlayer(this.getConfig().getString("BanMessage")); 
     target.setBanned(true); 
     Bukkit.getServer().broadcastMessage(ChatColor.RED + target.getName() + " " + "Has been tempbanned for 25 Minutes by " + sender.getName() + "" + "(3/3)");   
     Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() { 
       public void run() { 
         target.setBanned(false); 
       } 
     }, 1500 * 20); 
     return true; 


    } 

繼承人我config.yml:

BanMessage: You have been temp banned for 25 Minutes 

回答

1

你可以使用ChatColor.translateAlternateColorCodes()

String kickMessage = plugin.getConfig().getString("BanMessage"); 
kickMessage = ChatColor.translateAlternateColorCodes('&', kickMessage); 
target.kickPlayer(kickMessage); 
target.setBanned(true); 

您可以在配置文件中使用these color codes

因此,把在& 6You已經禁止& 4Spamming會給你ChatColor.GOLD + 「您已被禁止」 + ChatColor.DARK_RED + 「垃圾郵件」

,如果你願意喜歡讓它們在加入時得到同樣的信息,如果他們被禁止,你可以使用:

@EventHandler 
public void playerJoin(PlayerJoinEvent e){ 
    if(myMethodToCheckIfAPlayerIsTempBanned(e.getPlayer()){ 
    String msg = myMethodToGetPlayersBanMessage(e.getPlayer()); 
    e.getPlayer().kickPlayer(msg); 
    } 
} 
-1

這應該工作:

String kickMessage = this.getConfig().getString("BanMessage"); 
kickMessage.replaceAll("(?i)&([a-f0-9])", "\u00A7$1"); 
target.kickPlayer(kickMessage); 
target.setBanned(true); 

然後,你應該能夠在你的配置使用these color codes

ex。

BanMessage:& 3You & 0have被禁止& 1對於3分鐘

將顯示爲

You have been temp banned for 25 Minutes