diff --git a/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/BingoChallengeEvent.java b/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/BingoChallengeEvent.java index 90dd4b4..05f8977 100644 --- a/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/BingoChallengeEvent.java +++ b/Challenge/src/main/java/de/fanta/challenge/challenges/ChallengeEvents/BingoChallengeEvent.java @@ -4,6 +4,10 @@ import de.fanta.challenge.events.TimerChangedEvent; import de.fanta.challenge.guis.eventgui.BingoItemsGui; 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.teams.ChallengeTeam; import de.fanta.challenge.teams.TeamUtils; import de.fanta.challenge.utils.ChatSkullAPI.ChatSkull; @@ -12,6 +16,10 @@ import de.fanta.challengeutils.Color; import net.kyori.adventure.bossbar.BossBar; import net.kyori.adventure.text.Component; +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.GameMode; import org.bukkit.Material; @@ -37,6 +45,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.UUID; public class BingoChallengeEvent implements Listener { @@ -51,6 +60,8 @@ private static List materials = new ArrayList<>(); private final Challenge plugin; private static BossBar bossBar; + private static ChallengeScoreboard challengeScoreboard; + private static final HashMap positionColors = new HashMap<>(); public static List getMaterials() { return materials; @@ -167,9 +178,15 @@ public void onActivation(TimerChangedEvent event) { if (Objects.equals(Config.getString("event.type"), "bingo")) { if (event.isRunning()) { + positionColors.put(1, TextColor.fromHexString("#09FF00")); + positionColors.put(2, TextColor.fromHexString("#61FF5C")); + positionColors.put(3, TextColor.fromHexString("#93FF8F")); + challengeScoreboard = new ChallengeScoreboard(); + challengeScoreboard.setSidebarTitle(Component.text("Bingo", Color.GREEN)); setMaterials(BingoItemsGui.getEventItems()); for (Player p : Bukkit.getOnlinePlayers()) { bossBar.addViewer(p); + challengeScoreboard.addPlayer(p); } if (!Config.getBoolean("event.teams")) { @@ -193,6 +210,7 @@ @EventHandler public void onJoin(PlayerJoinEvent e) { if (isRunning()) { + challengeScoreboard.addPlayer(e.getPlayer()); bossBar.addViewer(e.getPlayer()); if (Config.getBoolean("event.teams")) { @@ -208,6 +226,96 @@ } } + private void updatePlayerScoreBoard() { + ArrayList globalLines = new ArrayList<>(); + ScoreManager scoreManager = plugin.getScoreManager(); + 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 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 Component getScorebordLine(String pos, String playerName, Style nameTextStyle, String score) { + return Component.text(pos + ". ").append(Component.text(playerName, nameTextStyle)).append(Component.text(" " + score, Color.BLUE)); + } + public void addDiscoveredItem(Player player, ItemStack itemStack) { UUID uuid = player.getUniqueId(); Material material = itemStack.getType(); @@ -280,6 +388,7 @@ } } } + updatePlayerScoreBoard(); } } diff --git a/Challenge/src/main/java/de/fanta/challenge/challenges/RandomCraftingChallenge.java b/Challenge/src/main/java/de/fanta/challenge/challenges/RandomCraftingChallenge.java new file mode 100644 index 0000000..474e72f --- /dev/null +++ b/Challenge/src/main/java/de/fanta/challenge/challenges/RandomCraftingChallenge.java @@ -0,0 +1,24 @@ +package de.fanta.challenge.challenges; + +import de.fanta.challenge.Challenge; +import de.fanta.challenge.utils.Config; +import org.bukkit.Bukkit; +import org.bukkit.Registry; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.inventory.CraftItemEvent; + +public class RandomCraftingChallenge implements Listener { + + private final Challenge plugin = Challenge.getPlugin(); + + + + @EventHandler + public void onDamage(CraftItemEvent e) { + if (Config.getBoolean("randomcrafting") && plugin.getTimer().isRunning()) { + } + } +} diff --git a/Lobby/pom.xml b/Lobby/pom.xml index 80dab17..0fc46a9 100644 --- a/Lobby/pom.xml +++ b/Lobby/pom.xml @@ -32,7 +32,7 @@ de.tr7zw item-nbt-api-plugin - 2.10.0-SNAPSHOT + 2.13.3-SNAPSHOT provided diff --git a/Lobby/src/main/java/de/fanta/lobby/commands/AdventureCommand/AdventureTempCommand.java b/Lobby/src/main/java/de/fanta/lobby/commands/AdventureCommand/AdventureTempCommand.java index ca1293d..7f4494f 100644 --- a/Lobby/src/main/java/de/fanta/lobby/commands/AdventureCommand/AdventureTempCommand.java +++ b/Lobby/src/main/java/de/fanta/lobby/commands/AdventureCommand/AdventureTempCommand.java @@ -80,16 +80,12 @@ NBTCompound data = file.getCompound("Data"); NBTCompound dataPacks = data.getCompound("DataPacks"); - dataPacks.getStringList("Enabled").add("update_1_21"); - dataPacks.getStringList("Disabled").add("bundle"); + dataPacks.getStringList("Enabled").add("winter_drop"); dataPacks.getStringList("Disabled").add("trade_rebalance"); - data.getStringList("enabled_features").add("minecraft:update_1_21"); + data.getStringList("enabled_features").add("minecraft:winter_drop"); data.getStringList("enabled_features").add("minecraft:vanilla"); - - file.save(); - } catch (IOException e) { throw new RuntimeException(e); } diff --git a/pom.xml b/pom.xml index 3ca9599..4c337dd 100644 --- a/pom.xml +++ b/pom.xml @@ -38,7 +38,7 @@ io.papermc.paper paper-api - 1.21-R0.1-SNAPSHOT + 1.21.3-R0.1-SNAPSHOT provided @@ -63,6 +63,7 @@ de.cubeside.nmsutils nmsutils-plugin 0.0.1-SNAPSHOT + all provided