Sueta

XoreBoardUtil

1.13.1

Virtual Scoreboard API based on packets with no dependencies, scoreboard

·Plugin


Original version of the plugin: https://www.spigotmc.org/resources/xoreboardutil.43817/
Note that 1.8.8 version is not fully supported, and it could cause errors

THIS IS API \ Library FOR DEVELOPERS AND THEIR PROJECTS

Code
@NotNull XoreBoard xoreBoard = XoreBoardUtil.getNextXoreBoard();
xoreBoard.addPlayer((org.bukkit.entity.Player) player);

@NotNull SharedSidebar sidebar = xoreBoard.getSharedSidebar();
sidebar.setDisplayName("SharedSidebar");

HashMap<String, Integer> lines = new HashMap<String, Integer>();
lines.put("&eNick: &fhaelexuis", 3);
lines.put("&eRank: &fMember", 2);
lines.put("&eBalance: &a$100.00", 1);
sidebar.rewriteLines(lines);

sidebar.showSidebar();
FEATURES
  • Easy sidebar manipulation.
  • Ability to use 1 scoreboard and set different sidebars to each player, or shared (global) sidebar.
  • Player collisions disabled by default.
  • Always visible team prefixes and below names for everyone, no matter in which XoreBoard player is.
  • You can set Below Names, such as "&c❤", and set health value to specific player.
  • All server players are in 1 real Bukkit Scoreboard, where you can create a teams (ranks, etc.)
  • Ability to hide/show sidebar for each player in XoreBoard
  • Player can be in multiple Scoreboards (XoreBoard) at the same time, depends which one are you updating
  • Whole code can be used in async threads
  • Color codes, such as &b, supported by default
  • Based on packets, and util can be used by multiple plugins at the same time
  • Prevent client kicking/crashing (if you set some text really long
BUGS
  • When you disable global collisions, mob collisions will be disabled as well, so if you have Survival/SkyBlock server, it can cause problem with mob pushing, so I recommend use XoreBoardUtil.setGlobalCollisions(Team.OptionStatus.FOR_OWN_TEAM) instead of XoreBoardUtil.setGlobalCollisions(Team.OptionStatus.NEVER) after server start, if you need mob pushing. Then collisions will be only between Teams (of main server scoreboard)
Documentation

BASICS

How to create new XoreBoard:

@NotNull XoreBoard xoreBoard = XoreBoardUtil.getNextXoreBoard();

How to remove XoreBoard: (You have two options, removing by name, or an object)

XoreBoardUtil.removeXoreBoard((String) xoreBoardName);
XoreBoardUtil.removeXoreBoard((XoreBoard) xoreBoard);

Adding player to xoreBoard:

xoreBoard.addPlayer((org.bukkit.entity.Player) player);

Getting XorePlayer from XoreBoard

@NotNull XorePlayer xorePlayer = xoreBoard.getPlayer((org.bukkit.entity.Player) player);

Removing player from xoreBoard:

xoreBoard.removePlayer((org.bukkit.entity.Player) player);

XOREBOARD MANIPULATION

Getting shared sidebar of XoreBoard

@NotNull SharedSidebar sidebar = xoreBoard.getSharedSidebar();

Getting private sidebar of Player

@NotNull PrivateSidebar sidebar = xoreBoard.getPlayer((org.bukkit.entity.Player) player).getPrivateSidebar();

Changing a displayName of sidebar

sidebar.setDisplayName("&d&lPretty Display");

Hiding and showing sidebar (shared sidebar is showed by default)

sidebar.hideSidebar();
sidebar.hideSidebar((XorePlayer) xorePlayer); // Redundant if sidebar is PrivateSidebar
sidebar.showSidebar();
sidebar.showSidebar((XorePlayer) xorePlayer); // Redundant if sidebar is PrivateSidebar

XOREBOARD LINES MANIPULATION

Rewriting all lines at once, unchanged lines won't be updated (this method prevents flashing)

HashMap<String, Integer> lines = new HashMap<String, Integer>();
lines.put("&eNick: &fhaelexuis", 3);
lines.put("&eRank: &fMember", 2);
lines.put("&eBalance: &a$100.00", 1);
sidebar.rewriteLines(lines);

Adding more lines

sidebar.putLines(@NotNull HashMap<String, Integer> lines);

Clearing specific line

sidebar.clearLine("&eNick: &fhaelexuis");

Clear all lines

sidebar.clearLines()

Getting all lines from sidebar

sidebar.getLines();

WORKING WITH TEAMS AND BELLOW NAME

Teams work exactly same as in Bukkit scoreboard, with one difference, they are global, no matter which sidebar player has

Creating a team

@NotNull org.bukkit.scoreboard.Team team = XoreBoardUtil.getTeam("Member");
team.setAllowFriendlyFire(true);
team.setCanSeeFriendlyInvisibles(false);
team.setPrefix("Member | ");

Adding player to the team

XoreBoardUtil.getTeam("Member").addEntry((String) playerName);

Seting up the BelowName character

XoreBoardUtil.setUpBelowNames("&c❤");

Updating player Below value

XoreBoardUtil.updateBelowName((org.bukkit.entity.Player) player, int value);
Events
  • XoreBoardCreateEvent
    • (XoreBoard) getXoreBoard()
  • XoreBoardPlayerCreateEvent
    • (XoreBoard) getXoreBoard()
    • (XorePlayer) getXorePlayer()
  • XoreBoardPlayerRemoveEvent
    • (XoreBoard) getXoreBoard()
    • (XorePlayer) getXorePlayer()
  • XoreBoardRemoveEvent
    • (String) getName()
  • XoreBoardSendPacketEvent
    • (XoreBoard) getXoreBoard()
    • (org.bukkit.entity.Player)getPlayer()
    • (Object) getPacket()
    • (XoreBoardSendPacketEvent) setPacketObject(@Nullable Object packetObject)

Similar projects

Plugin →