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 );
}
}