This commit is contained in:
Luca
2021-11-22 19:02:40 +01:00
parent 91c766ddce
commit 5732128d14
20 changed files with 1071 additions and 32 deletions

View File

@ -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!";
}
}

View File

@ -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);

View File

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

View File

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