Bukkit - отображение нулевого значения при получении строки из файла конфигурации

Поэтому я работаю над настраиваемой функцией для моего сервера minecraft, одна из вещей, которую мне нужно сделать, - получить публичный void playerJoin (событие PlayerJoinEvent) @EventHandler {Main main = Main.getPlugin (Main.class); Player player = event.getPlayer (); UUID uuid = player.getUniqueId (); if (! main.getDataFolder (). существует ()) main.getDataFolder (). mkdirs (); Файл file = new File (main.getDataFolder (), "players.yml"); FileConfiguration config = YamlConfiguration.loadConfiguration (файл); if (! config.contains («Пользователи.» + uuid + «.Username»)) {try {System.out.println («Создание записи для« + игрока + »(« + uuid + »)»); config.set («Пользователи.» + uuid + «.Username», игрок); config.set («Пользователи.» + uuid + «.Packages.Common», 0); config.set («Пользователи.» + uuid + «.Packages.Rare», 0); config.set («Пользователи.» + uuid + «.Packages.Epic», 0); config.set («Пользователи.» + uuid + «.Packages.Legendary», 0); config.set («Пользователи.» + uuid + «.Packages.Exotic», 0); config.save (файл); System.out.println («Успешно создана запись для« + »(« + uuid + »)»); } catch (исключение e) {}}} из конфигурационного файла, специфичного для каждого UUID uuid = player.getUniqueId (); Инвентарь inv = Bukkit.createInventory (null, 27, (inventoryname)); ItemStack common = новый ItemStack (Material.INK_SACK); common.setDurability ((byte) 8); ItemMeta commonMeta = common.getItemMeta (); commonMeta.setDisplayName (Utils.chat («& fCommon Packages & 8A» & f & l »+ Main.pl.getFileControl (). getConfig (). getString (« Пользователи. »+ uuid +« .Packages.Common »))); common.setItemMeta (commonMeta); inv.setItem (10, общий); return inv; для отображения количества пакетов (ключей), которые у них есть (виртуальные элементы)

Проблема, которую я испытываю, заключается в том, что в графическом интерфейсе он отображает «нуль» вместо того, сколько у них есть ... Может ли кто-нибудь мне помочь?

Предмет в gui

Код для создания экземпляра main.getDataFolder () .mkdirs () в config (использование специального класса файлов, предоставленного мне моим другом).

config.set("Users."  + uuid + ".Username", player);

Код для создания элемента в gui:

public static player inventoryname = Utils.chat («& fWhite Backpack»);

public static Inventory WhiteBackpack (игрок игрока) {

Player

}

plugins,config,minecraft,bukkit,

0

Ответов: 1


0

В коде есть пара ошибок.

Во-первых , вы никогда не учитываете, что произойдет, если конфигурация, которую вы загружаете, не существует. Когда вы это сделаете String, вы учитываете, если папка отсутствует, но не файл.

Во-вторых , вы выполняете следующую операцию:

config.set("Users." + uuid + ".Username", player.getName());

Это неверно, потому что playerпеременная имеет тип Player, а не тип String. Чтобы исправить это, вам нужно сделать следующее:

File file = new File(main.getDataFolder(), "players.yml");
if (!file.exists()) {
    try {
        file.createNewFile();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

В-третьих , вы пытаетесь записать файл, который может не существовать . Когда вы инициализируете файл, вам также нужно убедиться, что он существует, а если нет, вам нужно его создать. Сейчас у вас есть следующее:

Integer

Он должен быть изменен на этот блок кода:

String

Вы могли бы просто создать его при попытке сохранить файл позже, но это не идеально, так как безопаснее позволять Bukkit записывать файл, который уже существует.

В-четвертых , и я не обязательно уверен, что это проблема сама по себе, но вы пытаетесь получить доступ к Integerзначению из файла конфигурации, как если бы это было String. Попробуйте заменить следующее:

commonMeta.setDisplayName(Utils.chat("&fCommon Packages &8A» &f&l"
    + Main.pl.getFileControl().getConfig().getString("Users." + uuid + ".Packages.Common")));

вместо этого:

commonMeta.setDisplayName(Utils.chat("&fCommon Packages &8A» &f&l"
    + Main.pl.getFileControl().getConfig().getInt("Users." + uuid + ".Packages.Common")));

Надеюсь, это заставит вас двигаться в правильном направлении!

плагины, конфигурация, Minecraft, Bukkit,
Похожие вопросы