2017-01-28 2 views
-2

la console envoyer un message d'erreur dans la ligne 154java bukkit - erreur dans la chaîne 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("&", "§")); 

je n'ai pas idée des raisons pour lesquelles l'erreur se est produite

observation

: le plug-in est traduit pour le portugais pourquoi je suis du Brésil :) (est pour plus des lignes complètes de texte)

+0

S'il vous plaît montrer l'erreur complète et stacktrace. – Li357

+0

Quelle est la ligne 154 ?? –

Répondre

1

à l'avenir, s'il vous plaît fournir que doit préciser que possible. Les chances sont qu'une exception NullPointerException est lancée par getString() car elle ne peut pas trouver l'élément de configuration ServerTag ou SugVipAnotada.

Vous devez vérifier si le résultat est null en premier ou fournir une valeur par défaut. Par exemple.

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

ou

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

En ce qui concerne la conversion des couleurs (&-§): alors que replace() va en effet remplacer tous les & avec § ce n'est pas ce que vous voulez. Il y a des cas où & fait partie du message tel que Bienvenue à l'appât & Tackle. Il est préférable d'utiliser replaceAll() et de tirer parti de regex pour convertir uniquement ce qui doit être converti.

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

Si vous souhaitez supprimer toute annotation de couleur pour obtenir du texte brut, vous pouvez utiliser

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

J'espère que cela vous aide et se passe. Bonne chance avec le reste de la traduction du plugin.