Помогите Индивидуальный scoreboard

  • Автор темы Автор темы Kurumi
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Kurumi

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Kurumi
Всем привет. Я сделал простенький scoreboard на котором отображается привилегия игрока и кол-во денег у него на счету. Я задался вопросом, как сделать для каждого свой scoreboard? Если я захожу на сервер у меня один префикс, я завожу на сервер твинка с другим префиксом, и у первого игрока меняется старый префикс, на префикс твинка.
Говнокод:
Код:
package Lemar98.me.ts;

import java.util.logging.Logger;

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.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;

import org.bukkit.ChatColor;
import net.milkbowl.vault.economy.Economy;
import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;

public class Main extends JavaPlugin implements Listener
{

    String version = "1.0";
    String author = "Lemar98";
    Scoreboard board;
    Objective obj;
    private static final Logger log = Logger.getLogger("Minecraft");
    private static Economy econ = null;
   
    public void onEnable()
    {  
        board = Bukkit.getScoreboardManager().getNewScoreboard();
        obj = board.registerNewObjective("prefixofuser", "dummy");
       
        getServer().getConsoleSender().sendMessage("§4===============================");
        getServer().getConsoleSender().sendMessage("§6TrueScoreboard is enabled");
        getServer().getConsoleSender().sendMessage("§6version " + "§9" + version);
        getServer().getConsoleSender().sendMessage(ChatColor.GOLD + "Author " + "§c" + author);
        getServer().getConsoleSender().sendMessage("§4===============================");
       
        Bukkit.getPluginManager().registerEvents(this, this);
       
        if (!setupEconomy() )
        {
            log.severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
            getServer().getPluginManager().disablePlugin(this);
            return;
        }
    }
   
     private boolean setupEconomy() {
            if (getServer().getPluginManager().getPlugin("Vault") == null) {
                return false;
            }
            RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
            if (rsp == null) {
                return false;
            }
            econ = rsp.getProvider();
            return econ != null;
        }
   
    public void onDisable()
    {
        getServer().getConsoleSender().sendMessage("§eTrueScoreboard is disabled");
    }
   
    @SuppressWarnings("deprecation")
    @EventHandler
    public void PlayerJoin(PlayerJoinEvent e)
    {
        e.getPlayer().setScoreboard(board);
        Player p = e.getPlayer();
        double balance = econ.getBalance(p.getName());
        String name =  ChatColor.DARK_RED + "§l[" + ChatColor.RED + "§lImperial" + ChatColor.YELLOW + "§lWorld" + ChatColor.DARK_RED + "§l]";
        PermissionUser user = PermissionsEx.getUser(p);
        String prefix = user.getPrefix();
        prefix = ChatColor.translateAlternateColorCodes('&', prefix);
       
        obj.setDisplayName(name);
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
       
        obj.getScore(" ").setScore(0);
        obj.getScore(ChatColor.GREEN + "     " + "§lПривилегия: " + prefix).setScore(-1);
        obj.getScore("   ").setScore(-2);
        obj.getScore(ChatColor.GREEN + "     " + "§lФранков на счету: " + ChatColor.BLUE + "§l" + balance).setScore(-3);
        obj.getScore("     ").setScore(-4);
        obj.getScore(ChatColor.GREEN + "     " + "§lВаш баланс2: " + ChatColor.DARK_RED + "§l[" + balance + ChatColor.DARK_RED + "§l]").setScore(-5);
        obj.getScore("       ").setScore(-6);
        obj.getScore("        ").setScore(-7);
        obj.getScore("         ").setScore(-8);
        obj.getScore("          ").setScore(-9);
        obj.getScore("           ").setScore(-10);
        obj.getScore("            ").setScore(-11);
        obj.getScore("             ").setScore(-12);
        obj.getScore("              ").setScore(-13);
        obj.getScore("               ").setScore(-14);








    }
}
 
Последнее редактирование:
Ну делай новый скорбоард под каждого игрока, лол.
 
Ето так.
PHP:
public void addScoreboard(Player p){
        Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective obj = board.registerNewObjective("prefixofuser", "dummy");
        double balance = econ.getBalance(p.getName());
        String name =  ChatColor.DARK_RED + "§l[" + ChatColor.RED + "§lImperial" + ChatColor.YELLOW + "§lWorld" + ChatColor.DARK_RED + "§l]";
        PermissionUser user = PermissionsEx.getUser(p);
        String prefix = user.getPrefix();
        prefix = ChatColor.translateAlternateColorCodes('&', prefix);
  
        obj.setDisplayName(name);
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
  
        obj.getScore(" ").setScore(0);
        obj.getScore(ChatColor.GREEN + "     " + "§lПривилегия: " + prefix).setScore(-1);
        obj.getScore("   ").setScore(-2);
        obj.getScore(ChatColor.GREEN + "     " + "§lФранков на счету: " + ChatColor.BLUE + "§l" + balance).setScore(-3);
        obj.getScore("     ").setScore(-4);
        obj.getScore(ChatColor.GREEN + "     " + "§lВаш баланс2: " + ChatColor.DARK_RED + "§l[" + balance + ChatColor.DARK_RED + "§l]").setScore(-5);
        obj.getScore("       ").setScore(-6);
        obj.getScore("        ").setScore(-7);
        obj.getScore("         ").setScore(-8);
        obj.getScore("          ").setScore(-9);
        obj.getScore("           ").setScore(-10);
        obj.getScore("            ").setScore(-11);
        obj.getScore("             ").setScore(-12);
        obj.getScore("              ").setScore(-13);
        obj.getScore("               ").setScore(-14);
        p.setScoreboard(board);
    }

UPD: Не нужно хранить Objective и Scoreboard в классе, сделай в методе.
 
при выходе очищай для каждого игрока Objective, если будешь юзать скорборд, который выше.
 
Не понял. Это как?) Сорян за тупость
UP
Да, в прошлой теме забыл что скорборд обновляется автоматически, и всем изменит префикс (твой изначальный код делал также 😁).
 
при выходе очищай для каждого игрока Objective, если будешь юзать скорборд, который выше.
Ведь можно только один скорборд использовать, а игроку создавать свой Objective (типа оптимизация)
 
Ето так.
PHP:
public void addScoreboard(Player p){
        Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective obj = board.registerNewObjective("prefixofuser", "dummy");
        double balance = econ.getBalance(p.getName());
        String name =  ChatColor.DARK_RED + "§l[" + ChatColor.RED + "§lImperial" + ChatColor.YELLOW + "§lWorld" + ChatColor.DARK_RED + "§l]";
        PermissionUser user = PermissionsEx.getUser(p);
        String prefix = user.getPrefix();
        prefix = ChatColor.translateAlternateColorCodes('&', prefix);
 
        obj.setDisplayName(name);
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
 
        obj.getScore(" ").setScore(0);
        obj.getScore(ChatColor.GREEN + "     " + "§lПривилегия: " + prefix).setScore(-1);
        obj.getScore("   ").setScore(-2);
        obj.getScore(ChatColor.GREEN + "     " + "§lФранков на счету: " + ChatColor.BLUE + "§l" + balance).setScore(-3);
        obj.getScore("     ").setScore(-4);
        obj.getScore(ChatColor.GREEN + "     " + "§lВаш баланс2: " + ChatColor.DARK_RED + "§l[" + balance + ChatColor.DARK_RED + "§l]").setScore(-5);
        obj.getScore("       ").setScore(-6);
        obj.getScore("        ").setScore(-7);
        obj.getScore("         ").setScore(-8);
        obj.getScore("          ").setScore(-9);
        obj.getScore("           ").setScore(-10);
        obj.getScore("            ").setScore(-11);
        obj.getScore("             ").setScore(-12);
        obj.getScore("              ").setScore(-13);
        obj.getScore("               ").setScore(-14);
        p.setScoreboard(board);
    }

UPD: Не нужно хранить Objective и Scoreboard в классе, сделай в методе.
PHP:
package Lemar98.me.ts;

import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;

import org.bukkit.ChatColor;
import net.milkbowl.vault.economy.Economy;
import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;

public class Main extends JavaPlugin implements Listener
{

    String version = "1.0";
    String author = "Lemar98";
    private static final Logger log = Logger.getLogger("Minecraft");
    private static Economy econ = null;
    
    public void onEnable()
    {   
        getServer().getConsoleSender().sendMessage("§4===============================");
        getServer().getConsoleSender().sendMessage("§6TrueScoreboard is enabled");
        getServer().getConsoleSender().sendMessage("§6version " + "§9" + version);
        getServer().getConsoleSender().sendMessage(ChatColor.GOLD + "Author " + "§c" + author);
        getServer().getConsoleSender().sendMessage("§4===============================");
        
        Bukkit.getPluginManager().registerEvents(this, this);
        
        if (!setupEconomy() )
        {
            log.severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
            getServer().getPluginManager().disablePlugin(this);
            return;
        }
    }
    
     private boolean setupEconomy() {
            if (getServer().getPluginManager().getPlugin("Vault") == null) {
                return false;
            }
            RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
            if (rsp == null) {
                return false;
            }
            econ = rsp.getProvider();
            return econ != null;
        }
    
    public void onDisable()
    {
        getServer().getConsoleSender().sendMessage("§eTrueScoreboard is disabled");
    }
    
    @SuppressWarnings("deprecation")
    public void addScoreboard(Player p)
    {
        Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective obj = board.registerNewObjective("prefixofuser", "dummy");
    
        double balance = econ.getBalance(p.getName());
        String name =  ChatColor.DARK_RED + "§l[" + ChatColor.RED + "§lImperial" + ChatColor.YELLOW + "§lWorld" + ChatColor.DARK_RED + "§l]";
        PermissionUser user = PermissionsEx.getUser(p);
        String prefix = user.getPrefix();
        prefix = ChatColor.translateAlternateColorCodes('&', prefix);
        
        obj.setDisplayName(name);
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        
        obj.getScore(" ").setScore(0);
        obj.getScore(ChatColor.GREEN + "     " + "§lПривилегия: " + prefix).setScore(-1);
        obj.getScore("   ").setScore(-2);
        obj.getScore(ChatColor.GREEN + "     " + "§lФранков на счету: " + ChatColor.BLUE + "§l" + balance).setScore(-3);
        obj.getScore("     ").setScore(-4);
        obj.getScore(ChatColor.GREEN + "     " + "§lВаши регионы: " + ChatColor.DARK_RED + "§l[" + balance + ChatColor.DARK_RED + "§l]").setScore(-5);
        obj.getScore("       ").setScore(-6);
        obj.getScore("        ").setScore(-7);
        obj.getScore("         ").setScore(-8);
        obj.getScore("          ").setScore(-9);
        obj.getScore("           ").setScore(-10);
        obj.getScore("            ").setScore(-11);
        obj.getScore("             ").setScore(-12);
        obj.getScore("              ").setScore(-13);
        obj.getScore("               ").setScore(-14);
        p.setScoreboard(board);
    }
}
Перестал отображаться скореборд. Я опять накосячил
 
PHP:
package Lemar98.me.ts;

import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;

import org.bukkit.ChatColor;
import net.milkbowl.vault.economy.Economy;
import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;

public class Main extends JavaPlugin implements Listener
{

    String version = "1.0";
    String author = "Lemar98";
    private static final Logger log = Logger.getLogger("Minecraft");
    private static Economy econ = null;
   
    public void onEnable()
    {  
        getServer().getConsoleSender().sendMessage("§4===============================");
        getServer().getConsoleSender().sendMessage("§6TrueScoreboard is enabled");
        getServer().getConsoleSender().sendMessage("§6version " + "§9" + version);
        getServer().getConsoleSender().sendMessage(ChatColor.GOLD + "Author " + "§c" + author);
        getServer().getConsoleSender().sendMessage("§4===============================");
       
        Bukkit.getPluginManager().registerEvents(this, this);
       
        if (!setupEconomy() )
        {
            log.severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
            getServer().getPluginManager().disablePlugin(this);
            return;
        }
    }
   
     private boolean setupEconomy() {
            if (getServer().getPluginManager().getPlugin("Vault") == null) {
                return false;
            }
            RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
            if (rsp == null) {
                return false;
            }
            econ = rsp.getProvider();
            return econ != null;
        }
   
    public void onDisable()
    {
        getServer().getConsoleSender().sendMessage("§eTrueScoreboard is disabled");
    }
   
    @SuppressWarnings("deprecation")
    public void addScoreboard(Player p)
    {
        Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective obj = board.registerNewObjective("prefixofuser", "dummy");
   
        double balance = econ.getBalance(p.getName());
        String name =  ChatColor.DARK_RED + "§l[" + ChatColor.RED + "§lImperial" + ChatColor.YELLOW + "§lWorld" + ChatColor.DARK_RED + "§l]";
        PermissionUser user = PermissionsEx.getUser(p);
        String prefix = user.getPrefix();
        prefix = ChatColor.translateAlternateColorCodes('&', prefix);
       
        obj.setDisplayName(name);
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
       
        obj.getScore(" ").setScore(0);
        obj.getScore(ChatColor.GREEN + "     " + "§lПривилегия: " + prefix).setScore(-1);
        obj.getScore("   ").setScore(-2);
        obj.getScore(ChatColor.GREEN + "     " + "§lФранков на счету: " + ChatColor.BLUE + "§l" + balance).setScore(-3);
        obj.getScore("     ").setScore(-4);
        obj.getScore(ChatColor.GREEN + "     " + "§lВаши регионы: " + ChatColor.DARK_RED + "§l[" + balance + ChatColor.DARK_RED + "§l]").setScore(-5);
        obj.getScore("       ").setScore(-6);
        obj.getScore("        ").setScore(-7);
        obj.getScore("         ").setScore(-8);
        obj.getScore("          ").setScore(-9);
        obj.getScore("           ").setScore(-10);
        obj.getScore("            ").setScore(-11);
        obj.getScore("             ").setScore(-12);
        obj.getScore("              ").setScore(-13);
        obj.getScore("               ").setScore(-14);
        p.setScoreboard(board);
    }
}
Перестал отображаться скореборд. Я опять накосячил
Paris_Tuileries_Garden_Facepalm_statue.jpg
 
Лол, так а где ты его выполняешь-то ? 😆
PHP:
@EventHandler
public void onJoin(PlayerJoinEvent e){
    addScoreboard(e.getPlayer());
}
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх