Yes.
This commit is contained in:
@ -0,0 +1,70 @@
|
||||
package rip.tilly.bedwars.providers.placeholderapi;
|
||||
|
||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import rip.tilly.bedwars.BedWars;
|
||||
import rip.tilly.bedwars.playerdata.PlayerData;
|
||||
|
||||
public class PlaceholderAPIProvider extends PlaceholderExpansion {
|
||||
|
||||
final private BedWars plugin;
|
||||
|
||||
public PlaceholderAPIProvider(BedWars plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifier() {
|
||||
return this.plugin.getDescription().getName().toLowerCase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAuthor() {
|
||||
return this.plugin.getDescription().getAuthors().get(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return this.plugin.getDescription().getVersion();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean persist() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onPlaceholderRequest(Player player, String identifier) {
|
||||
if (player == null) {
|
||||
return ChatColor.RED + "No data saved!";
|
||||
}
|
||||
|
||||
PlayerData playerData = this.plugin.getPlayerDataManager().getPlayerData(player.getUniqueId());
|
||||
if (playerData == null) {
|
||||
return ChatColor.RED + "No data saved!";
|
||||
}
|
||||
|
||||
// %bedwars_kills% would show the players kills.
|
||||
switch (identifier.toLowerCase()) {
|
||||
case "kills":
|
||||
return String.valueOf(playerData.getKills());
|
||||
case "deaths":
|
||||
return String.valueOf(playerData.getDeaths());
|
||||
case "xp":
|
||||
return String.valueOf(playerData.getXp());
|
||||
case "level":
|
||||
return String.valueOf(playerData.getLevel());
|
||||
case "wins":
|
||||
return String.valueOf(playerData.getWins());
|
||||
case "losses":
|
||||
return String.valueOf(playerData.getLosses());
|
||||
case "gamesplayed":
|
||||
return String.valueOf(playerData.getGamesPlayed());
|
||||
case "bedsdestroyed":
|
||||
return String.valueOf(playerData.getBedsDestroyed());
|
||||
}
|
||||
|
||||
return ChatColor.RED + "No data saved!";
|
||||
}
|
||||
}
|
@ -1,24 +1,35 @@
|
||||
package rip.tilly.bedwars.providers.scoreboard;
|
||||
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.apache.commons.lang3.StringEscapeUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scoreboard.DisplaySlot;
|
||||
import org.bukkit.scoreboard.Objective;
|
||||
import org.bukkit.scoreboard.Scoreboard;
|
||||
import org.bukkit.scoreboard.Team;
|
||||
import rip.tilly.bedwars.BedWars;
|
||||
import rip.tilly.bedwars.game.Game;
|
||||
import rip.tilly.bedwars.game.GameTeam;
|
||||
import rip.tilly.bedwars.managers.party.Party;
|
||||
import rip.tilly.bedwars.managers.queue.QueueEntry;
|
||||
import rip.tilly.bedwars.playerdata.PlayerState;
|
||||
import rip.tilly.bedwars.utils.TimeUtils;
|
||||
import rip.tilly.bedwars.utils.assemble.AssembleAdapter;
|
||||
import org.bukkit.entity.Player;
|
||||
import rip.tilly.bedwars.BedWars;
|
||||
import rip.tilly.bedwars.playerdata.PlayerData;
|
||||
import rip.tilly.bedwars.playerdata.PlayerState;
|
||||
import rip.tilly.bedwars.utils.CC;
|
||||
import rip.tilly.bedwars.utils.TimeUtils;
|
||||
import rip.tilly.bedwars.utils.aether.scoreboard.Board;
|
||||
import rip.tilly.bedwars.utils.aether.scoreboard.BoardAdapter;
|
||||
import rip.tilly.bedwars.utils.aether.scoreboard.cooldown.BoardCooldown;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ScoreboardProvider implements AssembleAdapter {
|
||||
public class ScoreboardProvider implements BoardAdapter {
|
||||
|
||||
private BedWars main = BedWars.getInstance();
|
||||
private final BedWars plugin = BedWars.getInstance();
|
||||
|
||||
@Override
|
||||
public String getTitle(Player player) {
|
||||
@ -26,8 +37,12 @@ public class ScoreboardProvider implements AssembleAdapter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getLines(Player player) {
|
||||
PlayerData playerData = this.main.getPlayerDataManager().getPlayerData(player.getUniqueId());
|
||||
public List<String> getScoreboard(Player player, Board board, Set<BoardCooldown> cooldowns) {
|
||||
PlayerData playerData = this.plugin.getPlayerDataManager().getPlayerData(player.getUniqueId());
|
||||
|
||||
if (playerData == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!playerData.getPlayerSettings().isScoreboardEnabled()) {
|
||||
return null;
|
||||
@ -41,19 +56,106 @@ public class ScoreboardProvider implements AssembleAdapter {
|
||||
case PLAYING:
|
||||
return this.playingScoreboard(playerData);
|
||||
case SPECTATING:
|
||||
return null;
|
||||
return this.spectatingScoreboard(playerData);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScoreboardCreate(Player player, Scoreboard scoreboard) {
|
||||
if (scoreboard != null) {
|
||||
Team red = scoreboard.getTeam("red");
|
||||
if (red == null) {
|
||||
red = scoreboard.registerNewTeam("red");
|
||||
}
|
||||
|
||||
Team green = scoreboard.getTeam("green");
|
||||
if (green == null) {
|
||||
green = scoreboard.registerNewTeam("green");
|
||||
}
|
||||
|
||||
red.setPrefix(String.valueOf(ChatColor.RED));
|
||||
green.setPrefix(String.valueOf(ChatColor.GREEN));
|
||||
|
||||
PlayerData playerData = this.plugin.getPlayerDataManager().getPlayerData(player.getUniqueId());
|
||||
if (playerData.getPlayerState() != PlayerState.PLAYING) {
|
||||
Objective objective = player.getScoreboard().getObjective(DisplaySlot.BELOW_NAME);
|
||||
if (objective != null) {
|
||||
objective.unregister();
|
||||
}
|
||||
|
||||
for (String entry : red.getEntries()) {
|
||||
red.removeEntry(entry);
|
||||
}
|
||||
|
||||
for (String entry : green.getEntries()) {
|
||||
green.removeEntry(entry);
|
||||
}
|
||||
|
||||
for (Player online : Bukkit.getOnlinePlayers()) {
|
||||
if (online == null) return;
|
||||
|
||||
Team spawn = scoreboard.getTeam(online.getName());
|
||||
if (spawn == null) {
|
||||
spawn = scoreboard.registerNewTeam(online.getName());
|
||||
}
|
||||
|
||||
if (online == player) {
|
||||
spawn.setPrefix(CC.translate(PlaceholderAPI.setPlaceholders(player, "%aqua_player_color%")));
|
||||
} else {
|
||||
spawn.setPrefix(CC.translate(PlaceholderAPI.setPlaceholders(online, "%aqua_player_color%")));
|
||||
}
|
||||
|
||||
String onlinePlayer = online.getName();
|
||||
if (spawn.hasEntry(onlinePlayer)) {
|
||||
continue;
|
||||
}
|
||||
spawn.addEntry(onlinePlayer);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Game game = this.plugin.getGameManager().getGame(player.getUniqueId());
|
||||
Objective objective = player.getScoreboard().getObjective(DisplaySlot.BELOW_NAME);
|
||||
if (objective == null) {
|
||||
objective = player.getScoreboard().registerNewObjective("showhealth", "health");
|
||||
}
|
||||
|
||||
objective.setDisplaySlot(DisplaySlot.BELOW_NAME);
|
||||
objective.setDisplayName(ChatColor.RED + StringEscapeUtils.unescapeJava("\u2764"));
|
||||
objective.getScore(player.getName()).setScore((int) Math.floor(player.getHealth()));
|
||||
|
||||
for (GameTeam team : game.getTeams()) {
|
||||
for (UUID teamUUID : team.getPlayingPlayers()) {
|
||||
Player teamPlayer = this.plugin.getServer().getPlayer(teamUUID);
|
||||
if (teamPlayer != null) {
|
||||
String teamPlayerName = teamPlayer.getName();
|
||||
if (team.getId() == 1) {
|
||||
if (green.hasEntry(teamPlayerName)) {
|
||||
continue;
|
||||
}
|
||||
green.addEntry(teamPlayerName);
|
||||
} else {
|
||||
if (red.hasEntry(teamPlayerName)) {
|
||||
continue;
|
||||
}
|
||||
red.addEntry(teamPlayerName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<String> spawnScoreboard(PlayerData playerData) {
|
||||
List<String> lines = new ArrayList<String>();
|
||||
List<String> lines = new ArrayList<>();
|
||||
|
||||
lines.add(CC.scoreboardBar);
|
||||
|
||||
if (this.main.getPartyManager().getParty(playerData.getUniqueId()) != null) {
|
||||
Party party = this.main.getPartyManager().getParty(playerData.getUniqueId());
|
||||
if (this.plugin.getPartyManager().getParty(playerData.getUniqueId()) != null) {
|
||||
Party party = this.plugin.getPartyManager().getParty(playerData.getUniqueId());
|
||||
|
||||
lines.add("&9Party Leader: &d" + Bukkit.getPlayer(party.getLeader()).getName());
|
||||
lines.add("&9Party Members: &d" + party.getMembers().size() + "&7/&d" + party.getLimit());
|
||||
@ -61,10 +163,10 @@ public class ScoreboardProvider implements AssembleAdapter {
|
||||
}
|
||||
|
||||
if (playerData.getPlayerState() == PlayerState.QUEUE) {
|
||||
QueueEntry queueEntry = this.main.getQueueManager().getQueueEntry(playerData.getUniqueId());
|
||||
QueueEntry queueEntry = this.plugin.getQueueManager().getQueueEntry(playerData.getUniqueId());
|
||||
|
||||
if (queueEntry != null) {
|
||||
long queueTime = System.currentTimeMillis() - (this.main.getQueueManager().getPlayerQueueTime(playerData.getUniqueId()));
|
||||
long queueTime = System.currentTimeMillis() - (this.plugin.getQueueManager().getPlayerQueueTime(playerData.getUniqueId()));
|
||||
|
||||
String formattedQueueTime = TimeUtils.formatIntoMMSS(Math.round(queueTime / 1000L));
|
||||
|
||||
@ -74,9 +176,9 @@ public class ScoreboardProvider implements AssembleAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
lines.add("&fOnline: &d" + this.main.getServer().getOnlinePlayers().size());
|
||||
lines.add("&fQueueing: &d" + this.main.getQueueManager().getAllQueueSize());
|
||||
lines.add("&fPlaying: &d" + this.main.getGameManager().getPlaying());
|
||||
lines.add("&fOnline: &d" + this.plugin.getServer().getOnlinePlayers().size());
|
||||
lines.add("&fQueueing: &d" + this.plugin.getQueueManager().getAllQueueSize());
|
||||
lines.add("&fPlaying: &d" + this.plugin.getGameManager().getPlaying());
|
||||
|
||||
lines.add(" ");
|
||||
|
||||
@ -106,8 +208,8 @@ public class ScoreboardProvider implements AssembleAdapter {
|
||||
}
|
||||
|
||||
private List<String> playingScoreboard(PlayerData playerData) {
|
||||
List<String> lines = new ArrayList<String>();
|
||||
Game game = this.main.getGameManager().getGame(playerData);
|
||||
List<String> lines = new ArrayList<>();
|
||||
Game game = this.plugin.getGameManager().getGame(playerData);
|
||||
GameTeam yourTeam = game.getTeamByName(playerData.getPlayerTeam().getName());
|
||||
GameTeam opposingTeam = game.getTeams().get(playerData.getTeamId() == 1 ? 0 : 1);
|
||||
|
||||
@ -139,7 +241,7 @@ public class ScoreboardProvider implements AssembleAdapter {
|
||||
}
|
||||
|
||||
private List<String> spectatingScoreboard(PlayerData playerData) {
|
||||
List<String> lines = new ArrayList<String>();
|
||||
List<String> lines = new ArrayList<>();
|
||||
|
||||
lines.add(CC.scoreboardBar);
|
||||
lines.add(CC.scoreboardBar);
|
||||
|
@ -0,0 +1,149 @@
|
||||
package rip.tilly.bedwars.providers.scoreboard.old;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import rip.tilly.bedwars.game.Game;
|
||||
import rip.tilly.bedwars.game.GameTeam;
|
||||
import rip.tilly.bedwars.managers.party.Party;
|
||||
import rip.tilly.bedwars.managers.queue.QueueEntry;
|
||||
import rip.tilly.bedwars.playerdata.PlayerState;
|
||||
import rip.tilly.bedwars.utils.TimeUtils;
|
||||
import rip.tilly.bedwars.utils.assemble.AssembleAdapter;
|
||||
import org.bukkit.entity.Player;
|
||||
import rip.tilly.bedwars.BedWars;
|
||||
import rip.tilly.bedwars.playerdata.PlayerData;
|
||||
import rip.tilly.bedwars.utils.CC;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ScoreboardProvider implements AssembleAdapter {
|
||||
|
||||
private BedWars main = BedWars.getInstance();
|
||||
|
||||
@Override
|
||||
public String getTitle(Player player) {
|
||||
return CC.translate("&d&lBedWars");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getLines(Player player) {
|
||||
PlayerData playerData = this.main.getPlayerDataManager().getPlayerData(player.getUniqueId());
|
||||
|
||||
if (!playerData.getPlayerSettings().isScoreboardEnabled()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (playerData.getPlayerState()) {
|
||||
case SPAWN:
|
||||
case QUEUE:
|
||||
return this.spawnScoreboard(playerData);
|
||||
case RESPAWNING:
|
||||
case PLAYING:
|
||||
return this.playingScoreboard(playerData);
|
||||
case SPECTATING:
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private List<String> spawnScoreboard(PlayerData playerData) {
|
||||
List<String> lines = new ArrayList<String>();
|
||||
|
||||
lines.add(CC.scoreboardBar);
|
||||
|
||||
if (this.main.getPartyManager().getParty(playerData.getUniqueId()) != null) {
|
||||
Party party = this.main.getPartyManager().getParty(playerData.getUniqueId());
|
||||
|
||||
lines.add("&9Party Leader: &d" + Bukkit.getPlayer(party.getLeader()).getName());
|
||||
lines.add("&9Party Members: &d" + party.getMembers().size() + "&7/&d" + party.getLimit());
|
||||
lines.add(CC.scoreboardBar);
|
||||
}
|
||||
|
||||
if (playerData.getPlayerState() == PlayerState.QUEUE) {
|
||||
QueueEntry queueEntry = this.main.getQueueManager().getQueueEntry(playerData.getUniqueId());
|
||||
|
||||
if (queueEntry != null) {
|
||||
long queueTime = System.currentTimeMillis() - (this.main.getQueueManager().getPlayerQueueTime(playerData.getUniqueId()));
|
||||
|
||||
String formattedQueueTime = TimeUtils.formatIntoMMSS(Math.round(queueTime / 1000L));
|
||||
|
||||
lines.add("&e" + queueEntry.getGameType().getName() + " Queue");
|
||||
lines.add("&fTime: &d" + formattedQueueTime);
|
||||
lines.add(CC.scoreboardBar);
|
||||
}
|
||||
}
|
||||
|
||||
lines.add("&fOnline: &d" + this.main.getServer().getOnlinePlayers().size());
|
||||
lines.add("&fQueueing: &d" + this.main.getQueueManager().getAllQueueSize());
|
||||
lines.add("&fPlaying: &d" + this.main.getGameManager().getPlaying());
|
||||
|
||||
lines.add(" ");
|
||||
|
||||
lines.add("&fLevel: &d" + playerData.getLevel());
|
||||
String finishedProgress = "";
|
||||
int notFinishedProgress = 10;
|
||||
for (int i = 0; i < playerData.getXp() * 100; i++) {
|
||||
if (i % 10 == 0) {
|
||||
finishedProgress += "⬛";
|
||||
|
||||
notFinishedProgress--;
|
||||
}
|
||||
}
|
||||
|
||||
String leftOverProgress = "";
|
||||
for (int i = 1; i <= notFinishedProgress; i++) {
|
||||
leftOverProgress += "⬛";
|
||||
}
|
||||
|
||||
lines.add("&8" + finishedProgress + "&7" + leftOverProgress + " &7(" + ((int) (playerData.getXp() * 100)) + "%&7)");
|
||||
|
||||
lines.add(" ");
|
||||
lines.add("&dtilly.rip");
|
||||
lines.add(CC.scoreboardBar);
|
||||
|
||||
return CC.translate(lines);
|
||||
}
|
||||
|
||||
private List<String> playingScoreboard(PlayerData playerData) {
|
||||
List<String> lines = new ArrayList<String>();
|
||||
Game game = this.main.getGameManager().getGame(playerData);
|
||||
GameTeam yourTeam = game.getTeamByName(playerData.getPlayerTeam().getName());
|
||||
GameTeam opposingTeam = game.getTeams().get(playerData.getTeamId() == 1 ? 0 : 1);
|
||||
|
||||
lines.add(CC.scoreboardBar);
|
||||
lines.add("&fDuration: &d" + game.getDuration());
|
||||
lines.add(" ");
|
||||
if (yourTeam.isHasBed()) {
|
||||
lines.add("&7[" + yourTeam.getPlayerTeam().getChatColor() + yourTeam.getPlayerTeam().getSmallName() + "&7] &a&l✓ &7(You)");
|
||||
} else if (yourTeam.getPlayingPlayers().size() > 0) {
|
||||
lines.add("&7[" + yourTeam.getPlayerTeam().getChatColor() + yourTeam.getPlayerTeam().getSmallName() + "&7] &f" + yourTeam.getPlayingPlayers().size() + " &7(YOU)");
|
||||
} else {
|
||||
lines.add("&7[" + yourTeam.getPlayerTeam().getChatColor() + yourTeam.getPlayerTeam().getSmallName() + "&7] &c&l✗ &7(You)");
|
||||
}
|
||||
if (opposingTeam.isHasBed()) {
|
||||
lines.add("&7[" + opposingTeam.getPlayerTeam().getChatColor() + opposingTeam.getPlayerTeam().getSmallName() + "&7] &a&l✓");
|
||||
} else if (opposingTeam.getPlayingPlayers().size() > 0) {
|
||||
lines.add("&7[" + opposingTeam.getPlayerTeam().getChatColor() + opposingTeam.getPlayerTeam().getSmallName() + "&7] &f" + yourTeam.getPlayingPlayers().size());
|
||||
} else {
|
||||
lines.add("&7[" + opposingTeam.getPlayerTeam().getChatColor() + opposingTeam.getPlayerTeam().getSmallName() + "&7] &c&l✗");
|
||||
}
|
||||
lines.add(" ");
|
||||
lines.add("&fKills: &d" + playerData.getGameKills());
|
||||
lines.add("&fBeds Destroyed: &d" + playerData.getGameBedsDestroyed());
|
||||
lines.add(" ");
|
||||
lines.add("&dtilly.rip");
|
||||
lines.add(CC.scoreboardBar);
|
||||
|
||||
return CC.translate(lines);
|
||||
}
|
||||
|
||||
private List<String> spectatingScoreboard(PlayerData playerData) {
|
||||
List<String> lines = new ArrayList<String>();
|
||||
|
||||
lines.add(CC.scoreboardBar);
|
||||
lines.add(CC.scoreboardBar);
|
||||
|
||||
return CC.translate(lines);
|
||||
}
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
package rip.tilly.bedwars.providers.tablist;
|
||||
|
||||
import club.frozed.tablist.adapter.TabAdapter;
|
||||
import club.frozed.tablist.entry.TabEntry;
|
||||
import club.frozed.tablist.skin.Skin;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.Property;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import rip.tilly.bedwars.BedWars;
|
||||
import rip.tilly.bedwars.utils.CC;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TablistProvider implements TabAdapter {
|
||||
|
||||
private final BedWars plugin = BedWars.getInstance();
|
||||
|
||||
@Override
|
||||
public String getHeader(Player player) {
|
||||
return CC.translate("&d&lTilly RIP &7┃ &fBedWars");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFooter(Player player) {
|
||||
return CC.translate("&7tilly.rip");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TabEntry> getLines(Player player) {
|
||||
List<TabEntry> lines = Lists.newArrayList();
|
||||
int column = 0;
|
||||
int row = 0;
|
||||
for (Player online : Bukkit.getOnlinePlayers()) {
|
||||
GameProfile skin = ((CraftPlayer) online).getProfile();
|
||||
Property property = skin.getProperties().get("textures").stream().findFirst().orElse(null);
|
||||
lines.add(new TabEntry(column, row, player.getDisplayName()).setPing(((CraftPlayer) online).getHandle().ping).setSkin(new Skin(property.getValue(), property.getSignature())));
|
||||
if (column++ < 2) {
|
||||
continue;
|
||||
}
|
||||
column = 0;
|
||||
|
||||
if (row++ < 19) {
|
||||
continue;
|
||||
}
|
||||
row = 0;
|
||||
}
|
||||
return lines;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user