3维地图

时间:2015-02-26 22:19:23

标签: maps bukkit dimensional

我有这段代码:

File folder = new File(getDataFolder() + "/messages");
        String[] fileNames = folder.list();
        for (int i = 0; i < fileNames.length; i++) {
            configManager.loadConfigFile("messages/" + fileNames[i]);
            String lang = fileNames[i].substring(8, fileNames[i].length() - 4);
            YamlConfiguration messagesConfig = configManager.getConfig("messages/" + fileNames[i]);
            messagesConfigs.put(lang, messagesConfig);
        }
private static Map<String, Map<String, String>> messages = new HashMap<String, Map<String, String>>();

    public void loadMessages(String lang) {
        for (String mes : PluginBase.plugin.messagesConfigs.get(lang).getKeys(false)) {
            messages.put(lang, new HashMap<String, String>().put(mes, PluginBase.plugin.messagesConfigs.get(lang).getString(mes)));
        }
    }

    public static String getMessage(String lang, String id) {
        return messages.get(lang).get(id);
    }

我有语言,来电者和留言员(&#34;我们&#34; - &gt;&#34; nopermission&#34; - &gt;&#34;您没有权限!&#34;)。当我致电getMessage(String lang, String caller)时,我想收到语言lang和来电者caller的消息。当前代码在第messages.put(lang, new HashMap<String, String>().put(mes, PluginBase.plugin.messagesConfigs.get(lang).getString(mes)));

处获得错误

非常感谢。

1 个答案:

答案 0 :(得分:0)

您收到该错误是因为HashMap.put()未在空地图中返回任何内容。

如果你想解决这个问题,而不是使用:

messages
  .put(
    lang,
    new HashMap<String, String>()
      .put(
        mes, 
        PluginBase.plugin.messagesConfigs.get(lang).getString(mes)
      )
  );

您应该使用:

Map<String, String> message = new HashMap<String, String>();
message.put(mes, PluginBase.plugin.messagesConfigs.get(lang).getString(mes));

messages.put(lang, message);