- Баллы
- 173
Как работает ConfigurationSerializable? Как сделать метод deserialize()? Почему у меня очищается конфиг при старте плагина? Нигде не нашёл примера.
Вот мой код:
Вот мой код:
Код:
package ru.serega6531.NearlySpawns;
import java.util.ArrayList;
import org.bukkit.Location;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.serialization.ConfigurationSerialization;
import org.bukkit.plugin.java.JavaPlugin;
public class NearlySpawns extends JavaPlugin {
private static FileConfiguration config;
private static ArrayList<Spawn> spawns = new ArrayList<Spawn>();
public void onEnable(){
ConfigurationSerialization.registerClass(Spawn.class);
config = getConfig();
for(String key : config.getConfigurationSection("spawns").getKeys(false)) {
getLogger().info("Loading spawn named " + key);
spawns.add(new Spawn(config.getConfigurationSection("spawns." + key).getValues(false)));
}
getCommand("addspawn").setExecutor(new CommandManager());
}
public void onDisable(){
saveConfig();
}
}
Код:
package ru.serega6531.NearlySpawns;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
public class Spawn implements ConfigurationSerializable {
private Location location;
private String name;
public Spawn(Location location, String name){
this.location = location;
this.name = name;
}
public Location getLocation() {
return location;
}
public String getName() {
return name;
}
@Override
public Map<String, Object> serialize() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", name);
map.put("loc.x", location.getBlockX());
map.put("loc.y", location.getBlockY());
map.put("loc.z", location.getBlockZ());
return map;
}
public Spawn(Map<String, Object> map){
this(new Location(Bukkit.getWorlds().get(0), (int)map.get("loc.x"), (int)map.get("loc.y"), (int)map.get("loc.z")), (String)map.get("name"));
}
}