2015-10-14 113 views
-1

我开发了Minecraft Bukkit插件,我想将信息保存在配置文件中。我想在我的yaml配置文件中保存一个数组并加载数据。这是我的YAML文件:从YAML获取数组

# Locations 
Locations: 
    - name: "Survival" 
    position: 5 
    - 
    - name: "PVP" 
    position: 3 

这是代码试图加载数组:

List<String> locations = config.getConfig().getStringList("Locations"); 
for(int i = 0; i < locations.size(); i++) { 
    String[] location = locations.toArray(new String[0]); 
    player.sendMessage("Name" + location[0] + ", Position" + location[1]); 
} 

但我没有得到一个聊天信息。如果我通过for发送邮件,我收到一条消息。

回答

0

您可以使用此:

FileUtil.loadYamlFromResource("myLocationFile.yml", Location.class); 

Location.getLocation("location1").getSomething() 

而且有这个Location.class

public class Location implements Serializable { 

    private static final long serialVersionUID = -2360488391508732184L; 

    private Map<String, Map<String, Double>> locations = new HashMap<>(); 

    public Float getLocation(String location) throws LocationNotFoundException { 
      return locations.get(location); 
    } 

    /** 
    * @return the locations 
    */ 
    public Map<String, Map<String, Double>> getLocations() { 
     return locations ; 
    } 

    public void setLocations (Map<String, Map<String, Double>> locations) { 
     this.locations = locations ; 
    } 
} 

而且在FileUtil.class

public static <T> T loadYamlFromResource(String resourcePath, Class<T> yamlClazz) { 

    Yaml yaml = null; 

    yaml = new Yaml(new CustomClassLoaderConstructor(yamlClazz.getClassLoader())); 

    InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(resourcePath); 

    return yaml.loadAs(in, yamlClazz); 
}