Помогите Мyльти-локация

Статус
Закрыто для дальнейших ответов.

DJhunter

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
DJhunter
Такой вопрос, как сохранять и доставать из конфига мульти локацию. Например создал генератор - он сохранился в конфиге. И мне захотелось изменить что-то в нем, зашел в конфиг и там поменял или вовсе yдалил.
 
Config.set("Локация", "Значение")

Разве не так?
 
Такой вопрос, как сохранять и доставать из конфига мульти локацию. Например создал генератор - он сохранился в конфиге. И мне захотелось изменить что-то в нем, зашел в конфиг и там поменял или вовсе yдалил.
Как вариант, сохранять в конфиг список этих локаций.
Так как большинства коллекций и обьектов баккита сериализуются в yaml, их можно спокойно сохранять например так:

List<Location> locations = new ArrayList<Location>();
locations.add(new Location(world, 1, 2, 3));

config.set("path", locations);

А чтобы достать из конфига:

List<Location> locations = (List<Location>) config.getList("path");

Однако такой вариант не совсем подходит для обычных пользователей или тех кто собирается настроить конфиг.
 
Сохраняй в конфиге локацию строкой, например: world;20;90;20
И когда нужно достаешь значение и создаёшь локацию.
 
Все еще нyжна помощь... Выше ответы - это и так все ясно было
 
Все еще нyжна помощь... Выше ответы - это и так все ясно было
Код:
    public String l2s(Location l) {
        if (l == null) {
            return null;
        }
        return new StringBuilder().append(l.getWorld().getName()).append("~").append(l.getX()).append("~").append(l.getY()).append("~").append(l.getZ()).append("~").append(l.getYaw()).append("~").append(l.getPitch()).toString();
    }
   
    public Location s2l(String s) {
        if (s == null) {
            return null;
        }
        String[] split = s.split("~");
        return new Location(Bukkit.getWorld(split[0]), Double.parseDouble(split[1]), Double.parseDouble(split[2]), Double.parseDouble(split[3]), Float.parseFloat(split[4]), Float.parseFloat(split[5]));
    }
 
https://pastebin.com/MGE1tyaX
Вот мой код, и каждый новый генератор перезаписывает старый
Дак храни список локаций где то.
Ты сейчас каждый раз в команде создаешь новый список и добавляешь туда локацию, конечно оно будет перезаписывать.

Создай в классе переменную списка и добавляй в нее локацию.
Когда надо сохранить, просто используй тот список и сохраняй.

А так же, лучше создать один раз шедулер, который будет использовать ту самую переменную чтобы дропать предметы.
 
https://pastebin.com/MGE1tyaX
Вот мой код, и каждый новый генератор перезаписывает старый
Код:
List<Location> loc = (List<Location>) Generator.get().getList("locations");
if(loc==null){
     List<Location> locations = new ArrayList<Location>();
     locations.add(location);
     Generator.get().set("locations", locations);
}else{
     loc.add(location);
     Generator.get().set("locations", loc);
}
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх