1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как сохранить значения , чтобы после перезахода игрока или рестарта сервера не сбрасывались

Тема в разделе "Разработка плагинов для новичков", создана пользователем Amper0l, 8 янв 2022.

  1. Автор темы
    Amper0l

    Amper0l Ньюби

    Баллы:
    1
    Имя в Minecraft:
    Amper0l
    Добрый вечер, форумчане. Надеюсь на вашу помощь. Я пишу плагин , не без вашей помощи , который за определенные действия начисляет или отнимает у игрока очки. Но никак не могу их сохранить, после перезахода очки сбрасываются , также после рестатрта .Я пробывал и через конфиг их сохранить , и сериализацию сделать , но к сожалению не получилось. Прошу вас посмотреть и сказать , что можно сделать. Заранее , спасибо.
    Код:
    package rStats.pack.mainlab;
     
     
     
    import java.io.Serializable;
    import java.util.concurrent.ConcurrentHashMap;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
    import net.md_5.bungee.api.ChatColor;
    import net.minecraft.server.v1_16_R3.Tag.e;
     
    public class PlayerExp implements Listener{
        private final JavaPlugin plugin;
        public PlayerExp(JavaPlugin plugin) {
            this.plugin = plugin;
        }                                              // это значение , хочу сохранить
        private static final ConcurrentHashMap<Player, Integer> playersData = new ConcurrentHashMap<>();
        public static int addValue(Player p, int value) {
            playersData.put(p, playersData.getOrDefault(p, 0) + value);
            return value;
        }
        public static int getValue(Player p) {
            return playersData.getOrDefault(p, 0);
            
        }
        @EventHandler
        public void BlockBreak(BlockBreakEvent e) {
            Player p = e.getPlayer();
            int plusexp = 10;
            addValue(p, plusexp);
            p.sendMessage("Вам начислено 10 очков");
            int intvalue = getValue(p);
            if(intvalue % 50 == 0) {
                org.*********ventory.ItemStack item1 = new org.*********ventory.ItemStack(org.bukkit.Material.DIAMOND);
                p.getInventory().addItem(item1);
                p.sendMessage("Вы заработали "+ intvalue + " очков опыта! Вам полагается приз.");
                String uuid = p.getUniqueId().toString();
                String playerName = p.getName().toString();
                String path = String.join(".", "users", playerName, uuid,"value");
                plugin.getConfig().set(path, intvalue);
                plugin.saveConfig();
            
            }
            if (intvalue % 50 != 0) {
                return;
            }
        }
        @EventHandler
        public void join(PlayerJoinEvent e) {
            Player p = e.getPlayer();
            int intvalue =  getValue(p);
            p.sendMessage(ChatColor.YELLOW + "Твой уровень равен: " + intvalue );
            
        }
        
     
            
    }
     
  2. ExZo

    ExZo Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    mikolovesyou
    Для вас подойдет вариант записывать в yml файл с привязкой по uuid
     

Поделиться этой страницей