Сохранение информации

OneLife_Petr

Новичок
Пользователь
Баллы
21
Имя в Minecraft
Petr_Mirov
Привет всем еще раз, в общем у меня есть маленький и простенький код на лайки. И я столкнулся с такой проблемой, что я не знаю как впринципе сохранять какую-то информацию. В моем случае, мне нужно чтобы лайки игрока где-то хранились. Я пробовал через SQLite, но видимо слишком тупой для этого :с
Был бы очень рад если вы скинете какой-то гайд, или сами расскажете даже самый легкий способ хранения информации, и как ее вывести в чат. Даже json подойдет. Заранее спасибо :)
 

Спасибо конфиги помогли, только теперь есть одна проблемка. Мне нужно сделать проверку на то, есть ли ник игрока в записи или нету. Я пробовал следующим кодом, но не получилось. Как это можно сделать?

Код:

@EventHandler
public void handleJoinEvent(PlayerJoinEvent e) {
Player player = e.getPlayer();
String playerName = e.getPlayer().getName();
Integer like = 0;
String path = String.join(".", "player", playerName, "like");

String likes = CustomConfig.get().getString("player." + playerName + ".like");
int likesPlayer = Integer.parseInt(likes);
Integer likesGet = like + likesPlayer;

if (path == null) {
CustomConfig.get().set(path, like);
CustomConfig.save();
}
CustomConfig.get().set(path, likesGet);
CustomConfig.save();
}
}
 
Спасибо конфиги помогли, только теперь есть одна проблемка. Мне нужно сделать проверку на то, есть ли ник игрока в записи или нету. Я пробовал следующим кодом, но не получилось. Как это можно сделать?

Код:

@EventHandler
public void handleJoinEvent(PlayerJoinEvent e) {
Player player = e.getPlayer();
String playerName = e.getPlayer().getName();
Integer like = 0;
String path = String.join(".", "player", playerName, "like");

String likes = CustomConfig.get().getString("player." + playerName + ".like");
int likesPlayer = Integer.parseInt(likes);
Integer likesGet = like + likesPlayer;

if (path == null) {
CustomConfig.get().set(path, like);
CustomConfig.save();
}
CustomConfig.get().set(path, likesGet);
CustomConfig.save();
}
}
Для получения int в YamlConfiguration есть метод getInt(), записывай напрямую, незачем складывать и переводить число. Если ты хочешь проверить, есть ли такой путь, то нужно проверять значение, возвращаемое getConfigurationSection() на null
 
Для получения int в YamlConfiguration есть метод getInt(), записывай напрямую, незачем складывать и переводить число. Если ты хочешь проверить, есть ли такой путь, то нужно проверять значение, возвращаемое getConfigurationSection() на null
Понял, попробую, спасибо
 
Для получения int в YamlConfiguration есть метод getInt(), записывай напрямую, незачем складывать и переводить число. Если ты хочешь проверить, есть ли такой путь, то нужно проверять значение, возвращаемое getConfigurationSection() на null

Попробовал следующий код, все так же не получается. Может я чего не понимаю, можешь скинуть готовые строчки если не сложно?

Код:

if (CustomConfig.get().getConfigurationSection("player." + playerName + ".like") == null) {
CustomConfig.get().set(path, like);
CustomConfig.save();
} else {
CustomConfig.get().set(path, likesGet);
CustomConfig.save();
}
 
Попробовал следующий код, все так же не получается. Может я чего не понимаю, можешь скинуть готовые строчки если не сложно?

Код:

if (CustomConfig.get().getConfigurationSection("player." + playerName + ".like") == null) {
CustomConfig.get().set(path, like);
CustomConfig.save();
} else {
CustomConfig.get().set(path, likesGet);
CustomConfig.save();
}
В этом нет особого смысла, config.getInt(path, 0) вернет 0, если запись отсутствует.
 
Последнее редактирование:
Попробовал следующий код, все так же не получается. Может я чего не понимаю, можешь скинуть готовые строчки если не сложно?

Код:

if (CustomConfig.get().getConfigurationSection("player." + playerName + ".like") == null) {
CustomConfig.get().set(path, like);
CustomConfig.save();
} else {
CustomConfig.get().set(path, likesGet);
CustomConfig.save();
}
Что ты пытаешься сделать?
 
Что ты пытаешься сделать?

Есть небольшой плагин на лайки, в конфиге хранятся данные с лайками игроков, они добавляются автоматически при заходе игрока на сервере следующими строками:
player:
Nick:
like: 0

Но если кто-то поставил игроку лайк и тот игрок перезашел, у него автоматом ставится 0 лайков.
Я хочу сделать проверку, что если данные с этим игроков уже в конфиге, ничего делать не нужно.
А если нету данных, то нужно их добавить.

В этом нет особого смысла, config.getInt(path, 0) вернет 0, если запись отсутствует.

Данный метод не помог.
 
Есть небольшой плагин на лайки, в конфиге хранятся данные с лайками игроков, они добавляются автоматически при заходе игрока на сервере следующими строками:
player:
Nick:
like: 0

Но если кто-то поставил игроку лайк и тот игрок перезашел, у него автоматом ставится 0 лайков.
Я хочу сделать проверку, что если данные с этим игроков уже в конфиге, ничего делать не нужно.
А если нету данных, то нужно их добавить.



Данный метод не помог.
Используй эти методы:
Код:
public boolean playerRegistered(Player player) {
    return plugin.getConfig().getConfigurationSection("player." + player.getName()) != null;
}

public int getPlayerLikes(Player player) {
    if(playerRegistered(player)) {
        return plugin.getConfig().getInt("player." + player.getName() + ".like");
    } else {
        plugin.getConfig().set("player." + player.getName() + ".like", 0);
        plugin.saveConfig();
        return 0;
    }
}

Советую, кстати, сохранять игроков по UUID, а не по никам.
 
Используй эти методы:
Код:
public boolean playerRegistered(Player player) {
    return plugin.getConfig().getConfigurationSection("player." + player.getName()) != null;
}

public int getPlayerLikes(Player player) {
    if(playerRegistered(player)) {
        return plugin.getConfig().getInt("player." + player.getName() + ".like");
    } else {
        plugin.getConfig().set("player." + player.getName() + ".like", 0);
        plugin.saveConfig();
        return 0;
    }
}

Советую, кстати, сохранять игроков по UUID, а не по никам.

Спасибо, на счет UUID, какие могут быть проблемы если указывать по нику, а не по UUID?
 
Знаю, только учусь )
Можешь попробовать мою реализацию кастомконфигов для новичков.
https://github.com/alexandrage/Example/blob/master/src/Example/cfg/Configs.java
https://github.com/alexandrage/Example/blob/master/src/Example/cfg/CustomConfig.java
Код:
        Configs configs = new Configs(this); //* инстанс конфигов.
        CustomConfig playerConfig = configs.get("playerName or UUID"); //* загрузить или создать конфиг игроку.
        int like = playerConfig.get().getInt("lige", 0); //* получить лайки, по умолчанию 0.
        playerConfig.get().set("lige", like+1); //* прибавить лайк.
        playerConfig.save(); //* записать данные в файл на выходе игрока из игры.
 
Последнее редактирование:
Можешь попробовать мою реализацию кастомконфигов для новичков.
https://github.com/alexandrage/Example/blob/master/src/Example/cfg/Configs.java
https://github.com/alexandrage/Example/blob/master/src/Example/cfg/CustomConfig.java
Код:
        Configs configs = new Configs(this); //* инстанс конфигов.
        CustomConfig playerConfig = configs.get("playerName or UUID"); //* загрузить или создать конфиг игроку.
        int like = playerConfig.get().getInt("lige", 0); //* получить лайки, по умолчанию 0.
        playerConfig.get().set("lige", like+1); //* прибавить лайк.
        playerConfig.save(); //* записать данные в файл на выходе игрока из игры.

Спасибо, буду пользоваться
 
Назад
Верх