Вопрос Как добавить balance и префикс luckperms в scoreboard?

sleinexxx

Пользователь
Сообщения
63
у меня вот такая проблема, хочу чтобы в scoreboard отображались баланс и префикс luckperms, помогите пожалуйста буду благодарен.
вот код. (Библиотеку luckperms и vault вроде загрузил)



package zendex.scoreboard;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;

public class scoreboard extends JavaPlugin implements Listener{

public static Plugin main;
Team team;

@Override
public void onEnable() {
main = this;
Bukkit.getPluginManager().registerEvents(this, this);
}

@EventHandler
public void j(PlayerJoinEvent e) {
Scoreboard newScoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
Objective o = newScoreboard.registerNewObjective("stats", "dummy");
o.setDisplayName("asd");
o.setDisplaySlot(DisplaySlot.SIDEBAR);
o.getScore("§7").setScore(11);
o.getScore("§fТвое имя: §5" + Bukkit.getName()).setScore(10);
o.getScore("§fТвой ранг: §5").setScore(9);
o.getScore("§3").setScore(8);
o.getScore("§fЗолото: §c").setScore(7);
o.getScore("§fТвой уровень: §c25").setScore(6);
o.getScore("§4").setScore(5);
o.getScore("§fОнлайн на анархии: §c").setScore(4);
o.getScore("§fСтатистика: §c/stats").setScore(3);
o.getScore("§2").setScore(2);
o.getScore("§9store.zendex.su").setScore(1);
e.getPlayer().setScoreboard(newScoreboard);
new Anim(e.getPlayer(), o);
}

@EventHandler
public void m(EntityDeathEvent e) {
Player p = e.getEntity().getKiller();
if(p == null) return;
updateScoreboard(p);
}


@EventHandler
public void d(PlayerDeathEvent e) {
Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> {
updateScoreboard(e.getEntity());
});
}



private void updateScoreboard(Player p) {
Scoreboard s = p.getScoreboard();
for (String e : s.getEntries()) {
s.resetScores(e);
}


Objective o = s.getObjective("stats");
o.getScore("§7").setScore(11);
o.getScore("§fТвое имя: §5").setScore(10);
o.getScore("§fТвой ранг: §5").setScore(9);
o.getScore("§3").setScore(8);
o.getScore("§fЗолото: §c").setScore(7);
o.getScore("§fТвой уровень: §c25").setScore(6);
o.getScore("§4").setScore(5);
o.getScore("§fОнлайн на анархии: §c").setScore(4);
o.getScore("§fСтатистика: §c/stats").setScore(3);
o.getScore("§2").setScore(2);
o.getScore("§9store.zendex.su").setScore(1);

}

}
 
у меня вот такая проблема, хочу чтобы в scoreboard отображались баланс и префикс luckperms, помогите пожалуйста буду благодарен.
вот код. (Библиотеку luckperms и vault вроде загрузил)



package zendex.scoreboard;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;

public class scoreboard extends JavaPlugin implements Listener{

public static Plugin main;
Team team;

@Override
public void onEnable() {
main = this;
Bukkit.getPluginManager().registerEvents(this, this);
}

@EventHandler
public void j(PlayerJoinEvent e) {
Scoreboard newScoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
Objective o = newScoreboard.registerNewObjective("stats", "dummy");
o.setDisplayName("asd");
o.setDisplaySlot(DisplaySlot.SIDEBAR);
o.getScore("§7").setScore(11);
o.getScore("§fТвое имя: §5" + Bukkit.getName()).setScore(10);
o.getScore("§fТвой ранг: §5").setScore(9);
o.getScore("§3").setScore(8);
o.getScore("§fЗолото: §c").setScore(7);
o.getScore("§fТвой уровень: §c25").setScore(6);
o.getScore("§4").setScore(5);
o.getScore("§fОнлайн на анархии: §c").setScore(4);
o.getScore("§fСтатистика: §c/stats").setScore(3);
o.getScore("§2").setScore(2);
o.getScore("§9store.zendex.su").setScore(1);
e.getPlayer().setScoreboard(newScoreboard);
new Anim(e.getPlayer(), o);
}

@EventHandler
public void m(EntityDeathEvent e) {
Player p = e.getEntity().getKiller();
if(p == null) return;
updateScoreboard(p);
}


@EventHandler
public void d(PlayerDeathEvent e) {
Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> {
updateScoreboard(e.getEntity());
});
}



private void updateScoreboard(Player p) {
Scoreboard s = p.getScoreboard();
for (String e : s.getEntries()) {
s.resetScores(e);
}


Objective o = s.getObjective("stats");
o.getScore("§7").setScore(11);
o.getScore("§fТвое имя: §5").setScore(10);
o.getScore("§fТвой ранг: §5").setScore(9);
o.getScore("§3").setScore(8);
o.getScore("§fЗолото: §c").setScore(7);
o.getScore("§fТвой уровень: §c25").setScore(6);
o.getScore("§4").setScore(5);
o.getScore("§fОнлайн на анархии: §c").setScore(4);
o.getScore("§fСтатистика: §c/stats").setScore(3);
o.getScore("§2").setScore(2);
o.getScore("§9store.zendex.su").setScore(1);

}

}
Всё необходимое:
(Vault)
(LuckPerms)
 
Всё необходимое:
(Vault)
(LuckPerms)
ща посморю, потом посморю
Авто объединение сообщений:

Всё необходимое:
(Vault)
(LuckPerms)
Пока что попробовал только Vault, кидает вот такую ошибку.


Could not pass event PlayerJoinEvent to ZenScoreBoard v1.0
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerList.onPlayerJoin(PlayerList.java:298) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerList.a(PlayerList.java:157) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.LoginListener.b(LoginListener.java:144) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.LoginListener.c(LoginListener.java:54) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.NetworkManager.a(NetworkManager.java:231) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.ServerConnection.c(ServerConnection.java:148) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:814) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_51]
Caused by: java.lang.IllegalArgumentException: Entry cannot be longer than 40 characters!
at org.bukkit.craftbukkit.v1_8_R3.scoreboard.CraftObjective.getScore(CraftObjective.java:96) ~[spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at zendex.scoreboard.scoreboard.j(scoreboard.java:132) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_51]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
... 14 more
Авто объединение сообщений:

Всё необходимое:
(Vault)
(LuckPerms)


а вот какой код получился.


package zendex.scoreboard;

import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.Plugin;
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.scoreboard.Team;

import net.milkbowl.vault.chat.Chat;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.economy.EconomyResponse;
import net.milkbowl.vault.permission.Permission;

public class scoreboard extends JavaPlugin implements Listener{

public static Plugin main;
Team team;

private static final Logger log = Logger.getLogger("Minecraft");
private static Economy econ = null;
private static Permission perms = null;
private static Chat chat = null;

@Override
public void onEnable() {
if( !setupEconomy() ) {
log.severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
getServer().getPluginManager().disablePlugin(this);
return;
}
main = this;
Bukkit.getPluginManager().registerEvents(this, this);

setupPermissions();
setupChat();
}

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

private boolean setupChat() {
RegisteredServiceProvider<Chat> rsp = getServer().getServicesManager().getRegistration(Chat.class);
chat = rsp.getProvider();
return chat != null;
}

private boolean setupPermissions() {
RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);
perms = rsp.getProvider();
return perms != null;
}

public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {
if(!(sender instanceof Player)) {
log.info("Only players are supported for this Example Plugin, but you should not do this!!!");
return true;
}

Player player = (Player) sender;

if(command.getLabel().equals("test-economy")) {
// Lets give the player 1.05 currency (note that SOME economic plugins require rounding!)
sender.sendMessage(String.format("You have %s", econ.format(econ.getBalance(player.getName()))));
EconomyResponse r = econ.depositPlayer(player, 1.05);
if(r.transactionSuccess()) {
sender.sendMessage(String.format("You were given %s and now have %s", econ.format(r.amount), econ.format(r.balance)));
} else {
sender.sendMessage(String.format("An error occured: %s", r.errorMessage));
}
return true;
} else if(command.getLabel().equals("test-permission")) {
// Lets test if user has the node "example.plugin.awesome" to determine if they are awesome or just suck
if(perms.has(player, "example.plugin.awesome")) {
sender.sendMessage("You are awesome!");
} else {
sender.sendMessage("You suck!");
}
return true;
} else {
return false;
}
}

public static Economy getEconomy() {
return econ;
}

public static Permission getPermissions() {
return perms;
}

public static Chat getChat() {
return chat;
}

@EventHandler
public void j(PlayerJoinEvent e) {
Player p = e.getPlayer();
Scoreboard newScoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
Objective o = newScoreboard.registerNewObjective("stats", "dummy");
o.setDisplayName("asd");
o.setDisplaySlot(DisplaySlot.SIDEBAR);
o.getScore("§7").setScore(11);
o.getScore("§fТвое имя: §5").setScore(10);
o.getScore("§fТвой ранг: §5").setScore(9);
o.getScore("§3").setScore(8);
o.getScore("§fЗолото: §c" + econ.getBalance(p.getName())).setScore(7);
o.getScore("§fТвой уровень: §c25").setScore(6);
o.getScore("§4").setScore(5);
o.getScore("§fОнлайн на анархии: §c" + Bukkit.getOnlinePlayers()).setScore(4);
o.getScore("§fСтатистика: §c/stats").setScore(3);
o.getScore("§2").setScore(2);
o.getScore("§9store.zendex.su").setScore(1);
e.getPlayer().setScoreboard(newScoreboard);
new Anim(e.getPlayer(), o);
}

@EventHandler
public void m(EntityDeathEvent e) {
Player p = e.getEntity().getKiller();
if(p == null) return;
updateScoreboard(p);
}


@EventHandler
public void d(PlayerDeathEvent e) {
Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> {
updateScoreboard(e.getEntity());
});
}



private void updateScoreboard(Player p) {
Scoreboard s = p.getScoreboard();
for (String e : s.getEntries()) {
s.resetScores(e);
}


Objective o = s.getObjective("stats");
o.getScore("§7").setScore(11);
o.getScore("§fТвое имя: §5").setScore(10);
o.getScore("§fТвой ранг: §5").setScore(9);
o.getScore("§3").setScore(8);
o.getScore("§fЗолото: §c" + econ.getBalance(p.getName())).setScore(7);
o.getScore("§fТвой уровень: §c25").setScore(6);
o.getScore("§4").setScore(5);
o.getScore("§fОнлайн на анархии: §c" + Bukkit.getOnlinePlayers()).setScore(4);
o.getScore("§fСтатистика: §c/stats").setScore(3);
o.getScore("§2").setScore(2);
o.getScore("§9store.zendex.su").setScore(1);

}

}
 
Последнее редактирование:
Назад
Сверху Снизу