Update скора

Spokers

Пользователь
Я перешёл на Mysql для хранения данных об игрока, очередь дошла до скор боарда, проблема в том что он не обновляется. Через минуту скину код
Авто объединение сообщений:

Java:
package Prison.ScoreBoard;

 

import java.util.HashMap;

import org.bukkit.Bukkit;

import org.bukkit.entity.Player;

import org.bukkit.scheduler.BukkitRunnable;

import org.bukkit.scoreboard.DisplaySlot;

import org.bukkit.scoreboard.Objective;

import org.bukkit.scoreboard.Scoreboard;

import org.bukkit.scoreboard.Team;

 

import Prison.Main;

import Prison.PrisonPlayer;

import Prison.Message.MessageManager;

 

public class PrisonScoreboard extends BukkitRunnable {

     public static Main plugin;

 

     public PrisonScoreboard(Main plugin){

            this.plugin = plugin;

     }

    public static void setScoreBoard(Player p){

           Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();

           PrisonPlayer player = (PrisonPlayer)((HashMap)MessageManager.PLAYER_STATS.getO()).get(p.getUniqueId());

           Objective obj = board.registerNewObjective("§bPrisonHard", "dummy");

           obj.setDisplaySlot(DisplaySlot.SIDEBAR);

           obj.setDisplayName("§6§lPrison§c§lHard");

          

           obj.getScore(" ").setScore(2);

           obj.getScore("§6§l   CookiesCraft.ru").setScore(1);

          

           Team Level = board.registerNewTeam("Level");

           Level.addEntry("§e§l Уровень §8§l>>§7 ");

           Level.setSuffix(" §l" + player.getLevel());

           obj.getScore("§e§l Уровень §8§l>>§7 ").setScore(3);

           p.setScoreboard(board);

    }

    public static void updateLevel(Player player){

        PrisonPlayer data = (PrisonPlayer)((HashMap)MessageManager.PLAYER_STATS.getO()).get(player.getUniqueId());

        Scoreboard board = player.getScoreboard();

        //Обновление баланса

        Team level = board.getTeam("level");

        if (level != null) {

            level.setSuffix(data.getLevel() + "");

        }

    }

    public static void update(Player p){

    

        updateLevel(p);

    }

    @Override

    public void run() {

        for(Player p : Bukkit.getOnlinePlayers()){

            Bukkit.getScheduler().runTask(plugin, () -> update(p));

        }

    }

      public static PrisonScoreboard getInstance() {

            return new PrisonScoreboard(plugin);

    }

}
 

BuseSo

Разработчик
Пользователь
Опять не понял...
Зачем ты шедуляр в шедуляре запускаешь?
в методе run() оставь только это:
for(Player p : Bukkit.getOnlinePlayers()) { update(p); }


Да и мне кажется, что ты здесь опять что-то натворил:
PrisonPlayer data = (PrisonPlayer)((HashMap)MessageManager.PLAYER_STATS.getO()).get(player.getUniqueId());
Попробуй игроку в чат выводить сообщение с тем, что ты там собираешься получить.
А ещё ты скорборд не обновляешь.
 

Spokers

Пользователь
BuseSo,
Попробуй игроку в чат выводить сообщение с тем, что ты там собираешься получить.
А ещё ты скорборд не обновляешь.
Мне вот и надо обновлять его, Это работает, показывает в скоре данные но если их обновить в бд то на сервере ничего не будет(Останутся старые данные)
 

BuseSo

Разработчик
Пользователь
Попробуй в конце метода updateLevel(Player p) заново игроку ставить борд :unsure:
 

Комнаты в чате

Верх Низ