diff --git a/Challenge/src/main/java/de/fanta/challenge/Challenge.java b/Challenge/src/main/java/de/fanta/challenge/Challenge.java index 1556210..8d184f2 100644 --- a/Challenge/src/main/java/de/fanta/challenge/Challenge.java +++ b/Challenge/src/main/java/de/fanta/challenge/Challenge.java @@ -124,6 +124,8 @@ private ComponentUtil componentUtil; + private static final String texturePackUrl = "https://fantacs.de/i/file/challenge.zip"; + public static Challenge getPlugin() { return plugin; } @@ -746,4 +748,8 @@ return YamlConfiguration.loadConfiguration(saveAccessFile); } + + public String getTexturePackUrl() { + return texturePackUrl; + } } \ No newline at end of file diff --git a/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/DeathrunChallengeEventMonth.java b/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/DeathrunChallengeEventMonth.java index 650c040..eda37f9 100644 --- a/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/DeathrunChallengeEventMonth.java +++ b/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/DeathrunChallengeEventMonth.java @@ -58,8 +58,6 @@ import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.vehicle.VehicleDamageEvent; -import org.bukkit.event.world.ChunkLoadEvent; -import org.bukkit.event.world.ChunkUnloadEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ShapelessRecipe; import org.bukkit.inventory.meta.SuspiciousStewMeta; @@ -107,7 +105,6 @@ private static final Random random = new Random(); private static World world; - private static final String TexturePackUrl = "https://fantacs.de/i/file/deathrun.zip"; private final Collection loadingTexturePackPlayer = new ArrayList<>(); private final Collection deniedTexturePackPlayer = new ArrayList<>(); @@ -324,7 +321,7 @@ if (Objects.equals(Config.getString("event.type"), "deathrunMonth")) { challengeScoreboard.addPlayer(e.getPlayer()); challengeScoreboardTeam.addEntry(e.getPlayer().getName()); - e.getPlayer().setResourcePack(TexturePackUrl, ""); + e.getPlayer().setResourcePack(plugin.getTexturePackUrl(), ""); loadingTexturePackPlayer.add(e.getPlayer().getUniqueId()); ScoreManager scoreManager = plugin.getScoreManager(); @@ -473,7 +470,7 @@ mexico(-150, world); plugin.getServer().getOnlinePlayers().forEach(player1 -> { - player1.setResourcePack(TexturePackUrl, "", true); + player1.setResourcePack(plugin.getTexturePackUrl(), "", true); challengeScoreboard.addPlayer(player1); challengeScoreboardTeam.addEntry(player1.getName()); diff --git a/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/forcequest/ForceQuestChallengeEvent.java b/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/forcequest/ForceQuestChallengeEvent.java index 1274a64..4f89c5b 100644 --- a/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/forcequest/ForceQuestChallengeEvent.java +++ b/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/forcequest/ForceQuestChallengeEvent.java @@ -5,10 +5,14 @@ import de.fanta.challenge.score.ChallengePlayer; import de.fanta.challenge.score.Scorable; import de.fanta.challenge.score.ScoreManager; +import de.fanta.challenge.scoreboard.ChallengePlayerScoreboard; +import de.fanta.challenge.scoreboard.ChallengeScoreboard; +import de.fanta.challenge.scoreboard.ChallengeScoreboardTeam; import de.fanta.challenge.utils.ChatSkullAPI.ChatSkull; import de.fanta.challenge.utils.Config; import de.fanta.challenge.utils.CoordsTargeter; import de.fanta.challenge.utils.CubesideModUtils; +import de.fanta.challenge.utils.CustomFontUtil; import de.fanta.challengeutils.ItemUtils; import de.fanta.challengeutils.Color; import de.fanta.challengeutils.LocationUtils; @@ -18,7 +22,12 @@ import net.kyori.adventure.bossbar.BossBar; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.Style; +import net.kyori.adventure.text.format.TextColor; +import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; @@ -29,10 +38,15 @@ import org.bukkit.block.Biome; import org.bukkit.block.Block; import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Animals; import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Dolphin; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; +import org.bukkit.entity.IronGolem; +import org.bukkit.entity.Monster; import org.bukkit.entity.Player; +import org.bukkit.entity.Wither; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -43,6 +57,7 @@ import org.bukkit.event.entity.EntityDismountEvent; import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.event.entity.EntityPotionEffectEvent; +import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; @@ -59,6 +74,7 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.player.PlayerResourcePackStatusEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerSwapHandItemsEvent; import org.bukkit.generator.structure.GeneratedStructure; @@ -84,6 +100,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.Random; import java.util.TreeMap; import java.util.UUID; @@ -132,6 +149,12 @@ private final HashMap playerStructureMessage = new HashMap<>(); private final HashMap boundingBoxCache = new HashMap<>(); + private final Collection loadingTexturePackPlayer = new ArrayList<>(); + private static final Collection deniedTexturePackPlayer = new ArrayList<>(); + private static ChallengeScoreboard challengeScoreboard; + private static ChallengeScoreboardTeam challengeScoreboardTeam; + private static final HashMap positionColors = new HashMap<>(); + @EventHandler public void onActivation(TimerChangedEvent event) { if (Objects.equals(Config.getString("event.type"), "forcequest")) { @@ -178,6 +201,14 @@ structureTypes.add(structure); } + positionColors.put(1, TextColor.fromHexString("#09FF00")); + positionColors.put(2, TextColor.fromHexString("#61FF5C")); + positionColors.put(3, TextColor.fromHexString("#93FF8F")); + challengeScoreboard = new ChallengeScoreboard(); + challengeScoreboardTeam = challengeScoreboard.registerNewTeam("player"); + challengeScoreboardTeam.setColor(ChatColor.GREEN); + challengeScoreboard.setSidebarTitle(Component.text(CustomFontUtil.forceQuestLogo)); + for (Player pp : plugin.getVanish().getPlayerListWithoutVanishPlayers()) { initPlayer(pp); } @@ -225,6 +256,11 @@ initPlayers.add(player.getUniqueId()); } + challengeScoreboard.addPlayer(player); + challengeScoreboardTeam.addEntry(player.getName()); + player.setResourcePack(plugin.getTexturePackUrl(), ""); + loadingTexturePackPlayer.add(player.getUniqueId()); + if (!playerQuest.containsKey(player.getUniqueId())) { createNewQuest(player); } @@ -381,10 +417,8 @@ addArmorStand(player); - if (itemByPlayerList.get(player.getUniqueId()) == null) { - plugin.getScoreManager().join(new ChallengePlayer(player.getUniqueId())); - updateBossBar(); - player.getInventory().setItem(8, skipItem); + if (!initPlayers.contains(player.getUniqueId())) { + initPlayer(player); } } } @@ -395,6 +429,12 @@ if (isRunning()) { Player player = e.getPlayer(); removeArmorStand(player); + + CoordsTargeter.removeLocation(e.getPlayer().getUniqueId()); + loadingTexturePackPlayer.remove(e.getPlayer().getUniqueId()); + deniedTexturePackPlayer.remove(e.getPlayer().getUniqueId()); + challengeScoreboard.removePlayer(e.getPlayer()); + challengeScoreboardTeam.removeEntry(e.getPlayer().getName()); } } @@ -713,8 +753,12 @@ if (!isRunning()) { return; } - Player player = e.getPlayer(); + if (loadingTexturePackPlayer.contains(player.getUniqueId())) { + e.setCancelled(true); + return; + } + QuestType questType = playerQuest.get(player.getUniqueId()); if (questType == QuestType.ForceLocation) { selectLocation(player, player.getLocation()); @@ -800,12 +844,48 @@ return; } + if (loadingTexturePackPlayer.contains(player.getUniqueId())) { + e.setCancelled(true); + return; + } + QuestType questType = playerQuest.get(player.getUniqueId()); if (questType == QuestType.ForceDeath) { lastPlayerDamageCauseList.put(player.getUniqueId(), e.getCause()); } } + @EventHandler + public void onResourcePackLoad(PlayerResourcePackStatusEvent e) { + if (isRunning()) { + plugin.getLogger().info(e.getPlayer().getName() + " load Texturepack: " + e.getStatus()); + switch (e.getStatus()) { + case SUCCESSFULLY_LOADED -> loadingTexturePackPlayer.remove(e.getPlayer().getUniqueId()); + case DECLINED, DISCARDED, FAILED_DOWNLOAD, INVALID_URL, FAILED_RELOAD -> { + plugin.getComponentUtil().sendErrorMessage(e.getPlayer(), "Du hast das Texturanpacket abgelehnt. Möglicherweise wird dir nicht alles richtig angezeigt!"); + ChallengePlayerScoreboard playerScoreboard = challengeScoreboard.getPlayerScoreboard(e.getPlayer()); + if (playerScoreboard != null) { + playerScoreboard.setSidebarTitle(Component.text("ForceQuest", Color.GREEN)); + } + deniedTexturePackPlayer.add(e.getPlayer().getUniqueId()); + loadingTexturePackPlayer.remove(e.getPlayer().getUniqueId()); + updateBossBar(); + } + } + } + } + + @EventHandler + public void onEntityTarget(EntityTargetEvent e) { + if (isRunning()) { + if (e.getTarget() instanceof Player player) { + if (loadingTexturePackPlayer.contains(player.getUniqueId())) { + e.setCancelled(true); + } + } + } + } + public void startUpdateTask() { playerTasks = plugin.getServer().getScheduler().runTaskTimer(plugin, this::tick, 1L, 1L); } @@ -995,78 +1075,168 @@ addArmorStand(player); updateArmorStand(player); updateBossBar(); + updatePlayerScoreBoard(); } private static void updateBossBar() { for (Player player : plugin.getVanish().getPlayerListWithoutVanishPlayers()) { - ChallengePlayer challengePlayer = new ChallengePlayer(player.getUniqueId()); - TextComponent bossBarTitle = getBossBarTitle(">> Alle Quests erledigt.", Component.empty(), challengePlayer); - QuestType questType = playerQuest.get(player.getUniqueId()); - switch (questType) { - case ForceItem -> { - Material material = itemByPlayerList.get(player.getUniqueId()); - if (material != null) { - Component component = Component.empty().append(plugin.getComponentUtil().getTrasnlateItemComponent(material)); - - bossBarTitle = getBossBarTitle(">> ForceItem: ", component, challengePlayer); - } - } - case ForceBiome -> { - Biome biome = biomeByPlayerList.get(player.getUniqueId()); - if (biome != null) { - bossBarTitle = getBossBarTitle(">> ForceBiome: ", Component.translatable(biome.translationKey()), challengePlayer); - } - } - case ForceMob -> { - EntityType entityType = entityTypeByPlayerList.get(player.getUniqueId()); - if (entityType != null) { - bossBarTitle = getBossBarTitle(">> ForceMob: ", Component.translatable(entityType.translationKey()), challengePlayer); - } - } - case ForceEffect -> { - PotionEffectType potionEffectType = potionEffectTypeByPlayerList.get(player.getUniqueId()); - if (potionEffectType != null) { - bossBarTitle = getBossBarTitle(">> ForceEffect: ", Component.translatable(potionEffectType.translationKey()), challengePlayer); - } - } - case ForceDeath -> { - EntityDamageEvent.DamageCause damageCause = damageCauseByPlayerList.get(player.getUniqueId()); - if (damageCause != null) { - bossBarTitle = getBossBarTitle(">> ForceDeath: ", Component.translatable(StringUtil.capitalizeFirstLetter(damageCause.name(), true)), challengePlayer); - } - } - case ForceLocation -> { - Location location = locationByPlayerList.get(player.getUniqueId()); - if (location != null) { - Block block = location.getBlock(); - String locationString = "Welt: " + StringUtil.capitalizeFirstLetter(location.getWorld().getName(), true) + " X: " + block.getX() + ", Y: " + block.getY() + ", Z: " + block.getZ(); - bossBarTitle = getBossBarTitle(">> ForceLocation: ", Component.translatable(locationString), challengePlayer); - } - } - case ForceStructure -> { - Structure structureType = structureTypeByPlayerList.get(player.getUniqueId()); - if (structureType != null) { - bossBarTitle = getBossBarTitle(">> ForceStructure: ", Component.translatable(structureType.key().asMinimalString()), challengePlayer); - } - } - } BossBar bossBar = bossBarMap.computeIfAbsent(player.getUniqueId(), bossPlayer -> { - BossBar newBossBar = BossBar.bossBar(Component.newline(), 1.0f, BossBar.Color.GREEN, BossBar.Overlay.PROGRESS); + BossBar newBossBar = BossBar.bossBar(Component.newline(), 1.0f, BossBar.Color.RED, BossBar.Overlay.PROGRESS); newBossBar.addViewer(player); return newBossBar; }); bossBar.addViewer(player); - bossBar.name(bossBarTitle); + bossBar.name(getBossBarTitle(player)); } } - private static TextComponent getBossBarTitle(String title, Component name, ChallengePlayer challengePlayer) { + private static Component getBossBarTitle(Player player) { + ChallengePlayer challengePlayer = new ChallengePlayer(player.getUniqueId()); + + Component bossBarTitle = Component.text("Deine Quest: ", Color.ORANGE); + QuestType questType = playerQuest.get(player.getUniqueId()); + boolean hasTexturePack = !deniedTexturePackPlayer.contains(challengePlayer.getUUID()); + switch (questType) { + case ForceItem -> { + Material material = itemByPlayerList.get(player.getUniqueId()); + if (material != null) { + bossBarTitle = bossBarTitle.append(Component.text("Sammle das Item ", Color.GREEN).append(plugin.getComponentUtil().getTrasnlateItemComponent(material).color(Color.BLUE))); + } + } + case ForceBiome -> { + Biome biome = biomeByPlayerList.get(player.getUniqueId()); + if (biome != null) { + bossBarTitle = bossBarTitle.append(Component.text("Finde das Biom ", Color.GREEN).append(Component.translatable(biome, Color.BLUE))); + } + } + case ForceMob -> { + EntityType entityType = entityTypeByPlayerList.get(player.getUniqueId()); + if (entityType != null) { + bossBarTitle = bossBarTitle.append(Component.text("Töte die Kreatur " , Color.GREEN).append(Component.translatable(entityType, Color.BLUE))); + } + } + case ForceEffect -> { + PotionEffectType potionEffectType = potionEffectTypeByPlayerList.get(player.getUniqueId()); + if (potionEffectType != null) { + bossBarTitle = bossBarTitle.append(Component.text("Bekomme den Effekt ", Color.GREEN).append(Component.translatable(potionEffectType, Color.BLUE))); + } + } + case ForceDeath -> { + EntityDamageEvent.DamageCause damageCause = damageCauseByPlayerList.get(player.getUniqueId()); + if (damageCause != null) { + bossBarTitle = bossBarTitle.append(Component.text("Sterbe an ", Color.GREEN).append(Component.text(StringUtil.capitalizeFirstLetter(damageCause.name(), true), Color.BLUE))); + } + } + case ForceLocation -> { + Location location = locationByPlayerList.get(player.getUniqueId()); + if (location != null) { + Block block = location.getBlock(); + String locationString = "Welt: " + StringUtil.capitalizeFirstLetter(location.getWorld().getName(), true) + " X: " + block.getX() + ", Y: " + block.getY() + ", Z: " + block.getZ(); + bossBarTitle = bossBarTitle.append(Component.text("Gehe zu ", Color.GREEN).append(Component.text(locationString, Color.BLUE))); + } + } + case ForceStructure -> { + Structure structureType = structureTypeByPlayerList.get(player.getUniqueId()); + if (structureType != null) { + bossBarTitle = bossBarTitle.append(Component.text("Finde die Struktur ", Color.GREEN).append(Component.translatable(structureType.key().asMinimalString(), Color.BLUE))); + } + } + + default -> bossBarTitle = Component.text("Alle Aufgaben erledigt!", Color.PINK); + } + return bossBarTitle; + } + + private static void updatePlayerScoreBoard() { + ArrayList globalLines = new ArrayList<>(); ScoreManager scoreManager = plugin.getScoreManager(); - int pos = scoreManager.getPosition(challengePlayer); - int score = scoreManager.getScore(challengePlayer); - return Component.text(title).color(Color.GREEN).append(name.color(Color.BLUE).append(Component.text(" << | Position: ", Color.GREEN)).append(Component.text(pos, Color.BLUE).append(Component.text(" Punkte: ", Color.GREEN).append(Component.text(score, Color.BLUE))))); + int globalLine = 0; + for (Scorable scorable : scoreManager.getByPositionRange(1, 10)) { + int score = scoreManager.getScore(scorable); + int pos = scoreManager.getPosition(scorable); + Style style; + if (pos <= 3) { + style = Style.style(positionColors.getOrDefault(pos, NamedTextColor.WHITE), TextDecoration.BOLD); + } else { + style = Style.style(positionColors.getOrDefault(pos, NamedTextColor.WHITE)); + } + globalLines.add(getScorebordLine(String.valueOf(pos), scorable.getName(), style, String.valueOf(score))); + globalLine++; + if (globalLine >= 10) { + break; + } + } + + globalLines.add(Component.empty()); + + for (Player player : plugin.getVanish().getPlayerListWithoutVanishPlayers()) { + ChallengePlayerScoreboard playerScoreboard = challengeScoreboard.getPlayerScoreboard(player); + if (playerScoreboard != null) { + ArrayList lines = new ArrayList<>(globalLines); + List playerLines = getAdditionalScoreboardInfo(player); + lines.addAll(playerLines); + + if (lines.size() < 15) { + playerScoreboard.limitSidebarLines(lines.size()); + } + + int line = 0; + for (Component lineContent : lines) { + playerScoreboard.setSidebarLine(line, lineContent); + line++; + } + } + } + } + + private static List getAdditionalScoreboardInfo(Player player) { + List components = new ArrayList<>(); + ScoreManager scoreManager = plugin.getScoreManager(); + ChallengePlayer cp = new ChallengePlayer(player.getUniqueId()); + int ownPosition = scoreManager.getPosition(cp); + int beforePosition = ownPosition - 1; + int afterPosition = ownPosition + 1; + + Optional beforeOptionalScore = Optional.empty(); + if (beforePosition > 0) { + beforeOptionalScore = scoreManager.getByPositon(beforePosition).stream().findFirst(); + } + + Scorable beforeScore = null; + if (beforeOptionalScore.isPresent()) { + beforeScore = beforeOptionalScore.get(); + } + + if (beforeScore != null) { + int pos = scoreManager.getPosition(beforeScore); + components.add(getScorebordLine(String.valueOf(pos), beforeScore.getName(), Style.style(NamedTextColor.DARK_GRAY, TextDecoration.ITALIC), String.valueOf(scoreManager.getScore(beforeScore)))); + } else { + components.add(getScorebordLine("?", "niemand", Style.style(NamedTextColor.DARK_GRAY, TextDecoration.ITALIC), "???")); + } + + int ownPos = scoreManager.getPosition(cp); + components.add(getScorebordLine(String.valueOf(ownPos), cp.getName(), Style.style(NamedTextColor.WHITE, TextDecoration.BOLD), String.valueOf(scoreManager.getScore(cp)))); + + Optional afterOptionalScore = scoreManager.getByPositon(afterPosition).stream().findFirst(); + Scorable afterScore = null; + if (afterOptionalScore.isPresent()) { + afterScore = afterOptionalScore.get(); + } + + if (afterScore != null) { + int pos = scoreManager.getPosition(afterScore); + components.add(getScorebordLine(String.valueOf(pos), afterScore.getName(), Style.style(NamedTextColor.DARK_GRAY, TextDecoration.ITALIC), String.valueOf(scoreManager.getScore(afterScore)))); + } else { + components.add(getScorebordLine("?", "niemand", Style.style(NamedTextColor.DARK_GRAY, TextDecoration.ITALIC), "???")); + } + + return components; + } + + private static Component getScorebordLine(String pos, String playerName, Style nameTextStyle, String score) { + return Component.text(pos + ". ").append(Component.text(playerName, nameTextStyle)).append(Component.text(" " + score, Color.YELLOW)); } public void removeArmorStand(Player player) { diff --git a/Challenge/src/main/java/de/fanta/challenge/score/ChallengePlayer.java b/Challenge/src/main/java/de/fanta/challenge/score/ChallengePlayer.java index 3fb3479..43a0d6b 100644 --- a/Challenge/src/main/java/de/fanta/challenge/score/ChallengePlayer.java +++ b/Challenge/src/main/java/de/fanta/challenge/score/ChallengePlayer.java @@ -46,4 +46,9 @@ CachedPlayer player = Challenge.getPlugin().playerUUIDCache.getPlayer(uuid); return player.getName(); } + + @Override + public UUID getUUID() { + return uuid; + } } diff --git a/Challenge/src/main/java/de/fanta/challenge/score/Scorable.java b/Challenge/src/main/java/de/fanta/challenge/score/Scorable.java index 66f1f78..5d56d4d 100644 --- a/Challenge/src/main/java/de/fanta/challenge/score/Scorable.java +++ b/Challenge/src/main/java/de/fanta/challenge/score/Scorable.java @@ -2,6 +2,8 @@ import org.bukkit.scoreboard.Scoreboard; +import java.util.UUID; + public interface Scorable { void setScoreboard(Scoreboard scoreboard); @@ -10,4 +12,6 @@ String getName(); + UUID getUUID(); + } diff --git a/Challenge/src/main/java/de/fanta/challenge/scoreboard/ChallengePlayerScoreboard.java b/Challenge/src/main/java/de/fanta/challenge/scoreboard/ChallengePlayerScoreboard.java index b5bd72e..2a02d0d 100644 --- a/Challenge/src/main/java/de/fanta/challenge/scoreboard/ChallengePlayerScoreboard.java +++ b/Challenge/src/main/java/de/fanta/challenge/scoreboard/ChallengePlayerScoreboard.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import org.bukkit.ChatColor; import org.bukkit.entity.Player; +import org.bukkit.scoreboard.Criteria; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.Score; @@ -19,17 +20,18 @@ private final Objective sidebarObjective; private Component[] sidebarLines; + private Component sidebarTitle; ChallengePlayerScoreboard(ChallengeScoreboard scoreboard, Player player) { this.player = player; this.scoreboard = scoreboard; + this.sidebarTitle = scoreboard.getSidebarTitle(); bukkitScoreboard = player.getServer().getScoreboardManager().getNewScoreboard(); player.setScoreboard(bukkitScoreboard); - sidebarObjective = bukkitScoreboard.registerNewObjective("sidebar", "dummy", scoreboard.getSidebarTitle()); + sidebarObjective = bukkitScoreboard.registerNewObjective("sidebar", Criteria.DUMMY, sidebarTitle); sidebarObjective.setDisplaySlot(DisplaySlot.SIDEBAR); - sidebarObjective.displayName(scoreboard.getSidebarTitle()); sidebarObjective.numberFormat(NumberFormat.blank()); Component[] lines = scoreboard.getSidebarLines(); @@ -120,6 +122,15 @@ } } + public void setSidebarTitle(Component sidebarTitle) { + this.sidebarTitle = sidebarTitle; + sidebarObjective.displayName(sidebarTitle); + } + + public Component getSidebarTitle() { + return sidebarTitle; + } + Objective getSidebarObjective() { return sidebarObjective; } diff --git a/Challenge/src/main/java/de/fanta/challenge/teams/ChallengeTeam.java b/Challenge/src/main/java/de/fanta/challenge/teams/ChallengeTeam.java index 19d541d..b2ace8f 100644 --- a/Challenge/src/main/java/de/fanta/challenge/teams/ChallengeTeam.java +++ b/Challenge/src/main/java/de/fanta/challenge/teams/ChallengeTeam.java @@ -13,6 +13,8 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.scoreboard.Scoreboard; +import java.util.UUID; + public class ChallengeTeam implements Scorable { private String name; @@ -37,6 +39,11 @@ return name; } + @Override + public UUID getUUID() { + return null; + } + public NamedTextColor getChatColor() { return chatColor; } diff --git a/Challenge/src/main/java/de/fanta/challenge/utils/CustomFontUtil.java b/Challenge/src/main/java/de/fanta/challenge/utils/CustomFontUtil.java index 6b81ed9..e7f5b63 100644 --- a/Challenge/src/main/java/de/fanta/challenge/utils/CustomFontUtil.java +++ b/Challenge/src/main/java/de/fanta/challenge/utils/CustomFontUtil.java @@ -6,4 +6,5 @@ public static String starIcon = "ꚴ"; public static String cupIcon = "ꚶ"; public static String deathSkullIcon = "ꚵ"; + public static String forceQuestLogo = "ф"; }