Работа с YAML-файлами

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

SoKnight

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
SoKnight_
В общем, пишу небольшой плагин для лифтов на командах типа /ce level [Этаж], команда работает только тогда, когда игрок находится в заранее созданном регионе лифта. И тут сама проблема: Не знаю как загрузить в необходимый файл (например elevators.yml) информацию о регионе в нужном формате, а также как эту информацию потом получать, когда игрок будет использовать команду. Сам формат примерно такой:
Код:
hotel: //Имя лифта, полученное от команды /ce create [Имя лифта]
  region:
    pos1:
      x: 1 //Координата X первой точки региона
      y: 1
      z: 1
    pos2:
      x: 1 //Координата X второй точки региона
      y: 1
      z: 1
  levels:
    total: 5 //Число этажей в лифте
    list:
      1:
        x: 1 //Координата X точки телепортирования на первый этаж
        y: 1
        z: 1
 
В чём конкретно проблема?
Получение значения из конфига - config.get()
Установка - config.set()
Сохранение - config.save()
Структура лифтов в памяти:
Elevator:
Cuboid + List<Location>
В Cuboid две штуки Location.
Количество этажей указывать не обязательно, для перебора значений есть config.getConfigurationSection().get keys(false).
Список лифтов хранить где-нибудь в виде HashMap<String, Elevator> //имя, лифт
Для перебора:
for(Map.Entry<String, Elevator> entry : elevatorsMap.entrySet()) {
String n = entry.getKey();
Elevator e = entry.getValue();
}
 
Последнее редактирование:
Screenshot_1.png
me7z85
В чём конкретно проблема?
Получение значения из конфига - config.get()
Установка - config.set()
Сохранение - config.save()
Структура лифтов в памяти:
Elevator:
Cuboid + List<Location>
В Cuboid две штуки Location.
Количество этажей указывать не обязательно, для перебора значений есть config.getConfigurationSection().get keys(false).
Список лифтов хранить где-нибудь в виде HashMap<String, Elevator> //имя, лифт
Для перебора:
for(Map.Entry<String, Elevator> entry : elevatorsMap.entrySet()) {
String n = entry.getKey();
Elevator e = entry.getValue();
}
Я пока что сомневаюсь, что это то, но если я правильно понял, то чтобы получить например координаты лифта я использую метод, помеченный как "Чтение", а чтобы записать новые координаты - метод "Запись", так?
 
Последнее редактирование:
Посмотреть вложение 53045
me7z85

Я пока что сомневаюсь, что это то, но если я правильно понял, то чтобы получить например координаты лифта я использую метод, помеченный как "Чтение", а чтобы записать новые координаты - метод "Запись", так?
Да, методом ConfigurationSection#set(key, object) * грубо говоря, YamlConfigration - ConfigurationSection * можно установить значение «object» в конфиге с доступом по «key».
ConfigurationSection#get{Object}(key) получит занчение типа Object (#getString, #getInt etc.), которое располагается под ключом «key».

Пример исспользования:
PHP:
# yaml config
version: 0.4

players:
  SoKnight: 'Hello, SoKnight'
  NyanGuyMF: 'Bye, NyanGuyMF'

greeting: 'Hi, {player}'
PHP:
// Java code
YamlConfiguration config = YamlConfiguration.load(new File("path to file"));
/* Получаем строки из конфига */
String greeting = config.getString("greeting");
String nyan = config.getString("players.NyanGuyMF");
/* Добавляем значения в конфиг */
config.set("players.Notch", "Omg, Notch! >:o");
config.set("version", .5);

Bukkit wiki по конфигурациями
Bukkit docs для YamlConfiguration
 
Да, методом ConfigurationSection#set(key, object) * грубо говоря, YamlConfigration - ConfigurationSection * можно установить значение «object» в конфиге с доступом по «key».
ConfigurationSection#get{Object}(key) получит занчение типа Object (#getString, #getInt etc.), которое располагается под ключом «key».

Пример исспользования:
PHP:
# yaml config
version: 0.4

players:
  SoKnight: 'Hello, SoKnight'
  NyanGuyMF: 'Bye, NyanGuyMF'

greeting: 'Hi, {player}'
PHP:
// Java code
YamlConfiguration config = YamlConfiguration.load(new File("path to file"));
/* Получаем строки из конфига */
String greeting = config.getString("greeting");
String nyan = config.getString("players.NyanGuyMF");
/* Добавляем значения в конфиг */
config.set("players.Notch", "Omg, Notch! >:o");
config.set("version", .5);

Bukkit wiki по конфигурациями
Bukkit docs для YamlConfiguration
I'm press F =) Ответ получен, тему закрываю. Всем спасибо за помощь.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх