2017-01-28 10 views
-2

コンソール154Javaのbukkit - 文字列message.replaceでエラー(「&」、「§」)

//files 
    //mensagens.yml 
    ServerTag: '&0[&cServer&0] ' 
    SugVipAnotada: '&aSua sugestao foi recebida e anotada! e por ser vip sera lida primeiro!' 


//Code: 
    //in onEnable: 
       File file1 = new File(getDataFolder(), "mensagens.yml"); 
     if (!file1.exists()) { 
      try{ 
       saveResource("mensagens.yml", false); 
      } 
      catch (Exception localException) {} 
      } 

    //in onCommand: 

     try { 
      config.load(configL); 
     } catch (IOException | InvalidConfigurationException e1) { 
      e1.printStackTrace(); 
     } 
/*ERROR*/sender.sendMessage(config.getString("ServerTag").replace("&", "§") + config.getString("SugVipAnotada").replace("&", "§")); 

ラインにエラーメッセージを送信し、私はエラーが発生しました理由のアイデアを持っていません

観察:私はブラジルだ、なぜプラグインがポルトガル語に翻訳されて:)(テキストの完全な複数行のためである)

+0

完全なエラーとスタックトレースを表示してください。 – Li357

+0

154行はどれですか? –

答えて

1

将来的には、可能な限り必須のディテールとして提供してください。設定項目ServerTagまたはSugVipAnotadaが見つからないため、NullPointerExceptionがgetString()によってスローされている可能性があります。

結果がヌルかどうか最初にチェックするか、デフォルト値を指定する必要があります。例えば。色変換(§から&)に関しては

String serverTag = config.getString("ServerTag"); 
if (serverTag == null) { 
    // Bark some error or throw exception if value is expected 
} 

または

String serverTag = config.getString("SeverTag", "some def value"); 

replace()は確かにあなたが望むものではないこと§ておき&を交換する一方。場合によっては、などのメッセージに&が含まれている場合があります。Baitへようこそ&タックreplaceAll()を使用し、regexを利用する方が変換が必要なものだけを変換する方が良いです。

msg.replaceAll("(?i)&([0-9A-FK-OR])", "§$1") 

あなたは生のテキストを取得するために、任意の色の注釈を削除したい場合は、私は、これはあなたが行くことができますし、取得を望む

msg.replaceAll("(?i)(&|§)[0-9A-FK-OR]", "") 

を使用することができます。プラグイン翻訳の残りの部分に最適です。