- Баллы
- 31
- Имя в Minecraft
- WarmyxPro
Всем привет, хочу сделать, что-бы scoreboard обновлялся не после перезахода, а сразу, как что-то в нём изменится ( надеюсь понятно ). Вот код:
package me.warmyxpro.prison.Handler;
import me.warmyxpro.prison.Main;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.RenderType;
import org.bukkit.scoreboard.Scoreboard;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ScoreboardHandler implements Listener {
Economy economy = Main.getEconomy();
private Map<String, Integer> animationTasks = new HashMap<>();
@EventHandler
public void onJoin(PlayerJoinEvent e) {
// Получение скорборда игрока, который ему отображается
Scoreboard s = e.getPlayer().getScoreboard();
// Если его нет, то создаём новый
if (s == null) s = Bukkit.getScoreboardManager().getNewScoreboard();
// Получение цели (объектива), в которой хранятся все строки блока с информацией
Objective o = s.getObjective(e.getPlayer().getName());
// Если её нет, то создаём новый
if(o == null) o = s.registerNewObjective(e.getPlayer().getName(), "dummy", "§cИнформация", RenderType.INTEGER);
// Обнуляем все существующие записи
for(String i : s.getEntries()) {
s.resetScores(i);
}
// Добавление текста
o.getScore("§a").setScore(2);
o.getScore("§bВаш никнейм: §f" + (e.getPlayer().getName())).setScore(1);
o.getScore("§bВаш баланс: §f" + economy.format(economy.getBalance(e.getPlayer()))).setScore(0);
// Установка параметра цели, что-бы она отображалась справа
o.setDisplaySlot(DisplaySlot.SIDEBAR);
// Установка игроку этого скорбоарда
e.getPlayer().setScoreboard(s);
Objective o_final = s.getObjective(e.getPlayer().getName());
// Обновление данных скорбоарда
}
}
import me.warmyxpro.prison.Main;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.RenderType;
import org.bukkit.scoreboard.Scoreboard;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ScoreboardHandler implements Listener {
Economy economy = Main.getEconomy();
private Map<String, Integer> animationTasks = new HashMap<>();
@EventHandler
public void onJoin(PlayerJoinEvent e) {
// Получение скорборда игрока, который ему отображается
Scoreboard s = e.getPlayer().getScoreboard();
// Если его нет, то создаём новый
if (s == null) s = Bukkit.getScoreboardManager().getNewScoreboard();
// Получение цели (объектива), в которой хранятся все строки блока с информацией
Objective o = s.getObjective(e.getPlayer().getName());
// Если её нет, то создаём новый
if(o == null) o = s.registerNewObjective(e.getPlayer().getName(), "dummy", "§cИнформация", RenderType.INTEGER);
// Обнуляем все существующие записи
for(String i : s.getEntries()) {
s.resetScores(i);
}
// Добавление текста
o.getScore("§a").setScore(2);
o.getScore("§bВаш никнейм: §f" + (e.getPlayer().getName())).setScore(1);
o.getScore("§bВаш баланс: §f" + economy.format(economy.getBalance(e.getPlayer()))).setScore(0);
// Установка параметра цели, что-бы она отображалась справа
o.setDisplaySlot(DisplaySlot.SIDEBAR);
// Установка игроку этого скорбоарда
e.getPlayer().setScoreboard(s);
Objective o_final = s.getObjective(e.getPlayer().getName());
// Обновление данных скорбоарда
}
}