diff --git a/Challenge/pom.xml b/Challenge/pom.xml index 8908b6e..3130134 100644 --- a/Challenge/pom.xml +++ b/Challenge/pom.xml @@ -33,7 +33,7 @@ com.github.Jumper251 AdvancedReplay - master-SNAPSHOT + master-bdb2aab5be-1 provided diff --git a/Challenge/src/main/java/de/fanta/challenge/Challenge.java b/Challenge/src/main/java/de/fanta/challenge/Challenge.java index 68aa583..15696df 100644 --- a/Challenge/src/main/java/de/fanta/challenge/Challenge.java +++ b/Challenge/src/main/java/de/fanta/challenge/Challenge.java @@ -746,4 +746,4 @@ return YamlConfiguration.loadConfiguration(saveAccessFile); } -} +} \ 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 039bc47..f89e7b5 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 @@ -56,6 +56,7 @@ import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; import java.io.BufferedWriter; import java.io.File; @@ -97,6 +98,7 @@ 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<>(); private static final ConcurrentHashMap currentScore = new ConcurrentHashMap<>(); private static final ConcurrentHashMap currentBestRunScore = new ConcurrentHashMap<>(); @@ -132,7 +134,6 @@ Player p = e.getPlayer(); World world = p.getWorld(); if (Objects.equals(Config.getString("event.type"), "deathrunMonth") && plugin.getTimer().isRunning() && !plugin.getVanish().isVanish(p) && p.getGameMode() != GameMode.SPECTATOR) { - if (loadingTexturePackPlayer.contains(p.getUniqueId())) { e.setCancelled(true); return; @@ -299,7 +300,7 @@ public void onPlayerJoin(PlayerJoinEvent e) { if (Objects.equals(Config.getString("event.type"), "deathrunMonth")) { challengeScoreboard.addPlayer(e.getPlayer()); - e.getPlayer().setResourcePack(TexturePackUrl, "", true); + e.getPlayer().setResourcePack(TexturePackUrl, ""); loadingTexturePackPlayer.add(e.getPlayer().getUniqueId()); ScoreManager scoreManager = plugin.getScoreManager(); @@ -320,6 +321,8 @@ public void onPlayerLeave(PlayerQuitEvent e) { if (Objects.equals(Config.getString("event.type"), "deathrunMonth")) { CoordsTargeter.removeLocation(e.getPlayer().getUniqueId()); + loadingTexturePackPlayer.remove(e.getPlayer().getUniqueId()); + deniedTexturePackPlayer.remove(e.getPlayer().getUniqueId()); } } @@ -338,14 +341,23 @@ @EventHandler public void onResourcePackLoad(PlayerResourcePackStatusEvent e) { if (Objects.equals(Config.getString("event.type"), "deathrunMonth")) { + 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(), "Texturen-Packet konnte nicht geladen werden!"); - plugin.portPlayerToLobby(e.getPlayer()); + plugin.getComponentUtil().sendErrorMessage(e.getPlayer(), "Du hast das Texturanpacket abgelehnt. Alle Stats findest du in der Lobby bei /tt deathrun-monat"); + plugin.getComponentUtil().sendErrorMessage(e.getPlayer(), "Du hast das Texturanpacket abgelehnt. Alle Stats findest du in der Lobby bei /tt deathrun-monat"); + plugin.getComponentUtil().sendErrorMessage(e.getPlayer(), "Du hast das Texturanpacket abgelehnt. Alle Stats findest du in der Lobby bei /tt deathrun-monat"); + plugin.getComponentUtil().sendErrorMessage(e.getPlayer(), "Du hast das Texturanpacket abgelehnt. Alle Stats findest du in der Lobby bei /tt deathrun-monat"); + challengeScoreboard.removePlayer(e.getPlayer()); + deniedTexturePackPlayer.add(e.getPlayer().getUniqueId()); + loadingTexturePackPlayer.remove(e.getPlayer().getUniqueId()); + BossBar bossBar = bossBarMap.remove(e.getPlayer()); + if (bossBar != null) { + bossBar.removeViewer(e.getPlayer()); + } } } - } } @@ -525,9 +537,7 @@ if (!Double.isInfinite(distance) && distance > 0) { scoreManager.updateScore(cp, distance); try { - if (distance >= 10) { - logPlayerSpeed(player, distance); - } + logPlayerSpeed(player, distance); } catch (Exception e) { plugin.getLogger().log(Level.SEVERE, "Error while log Player Speed", e); } @@ -641,8 +651,8 @@ if (Objects.equals(Config.getString("event.type"), "deathrunMonth") && plugin.getTimer().isRunning()) { ScoreManager scoreManager = plugin.getScoreManager(); for (Player p : plugin.getVanish().getPlayerListWithoutVanishPlayers()) { - if (!plugin.getVanish().isVanish(p)) { - ChallengePlayer cp = new ChallengePlayer(p.getUniqueId()); + ChallengePlayer cp = new ChallengePlayer(p.getUniqueId()); + if (!deniedTexturePackPlayer.contains(p.getUniqueId())) { UUID uuid = p.getUniqueId(); int currentRun = currentScore.getOrDefault(uuid, 0); Component bossBarText = centerText(plugin.getTimer().formateRainbowTime(false), Component.text(CustomFontUtil.cupIcon + " ").append(Component.text(scoreManager.getScore(cp), Style.style(Color.GREEN, TextDecoration.BOLD))), Component.text(" " + CustomFontUtil.bootsIcon + " ").append(Component.text(currentRun + " ", Style.style(Color.GREEN, TextDecoration.BOLD))), Component.text(" " + CustomFontUtil.starIcon + " ").append(Component.text(currentBestRunScore.getOrDefault(uuid, 0) + " ", Style.style(Color.GREEN, TextDecoration.BOLD))), Component.text(CustomFontUtil.deathSkullIcon + " ").append(Component.text(deathScore.getOrDefault(uuid, 0), Style.style(Color.GREEN, TextDecoration.BOLD)))); @@ -652,9 +662,9 @@ return newBossBar; }); bossBar.name(bossBarText); - if (!Config.getBoolean("showtimer")) { - p.sendActionBar(Component.text("#" + scoreManager.getPosition(cp), Style.style(Color.GREEN, TextDecoration.BOLD))); - } + } + if (!Config.getBoolean("showtimer")) { + p.sendActionBar(Component.text("#" + scoreManager.getPosition(cp) + (deniedTexturePackPlayer.contains(p.getUniqueId()) ? " " + scoreManager.getScore(cp) : ""), Style.style(Color.GREEN, TextDecoration.BOLD))); } } } @@ -713,17 +723,18 @@ } public static void setCurrentRunScore(UUID uuid, int score) { - plugin.getLogger().severe("setCurrentRunScore: " + uuid.toString() + " " + score); currentScore.put(uuid, score); } + public static int getCurrentRunScore(UUID uuid) { + return currentScore.getOrDefault(uuid, 0); + } + public static void setBestRunScore(UUID uuid, int score) { - plugin.getLogger().severe("setBestRunScore: " + uuid.toString() + " " + score); currentBestRunScore.put(uuid, score); } public static void setDeathScore(UUID uuid, int score) { - plugin.getLogger().severe("setDeathScore: " + uuid.toString() + " " + score); deathScore.put(uuid, score); } @@ -763,34 +774,42 @@ } private static void logPlayerSpeed(Player player, int speed) { - String gamemode = "Gamemode: " + player.getGameMode(); - String sprinting = "Sprinting: " + player.isSprinting(); - String sneaking = "Sneaking: " + player.isSneaking(); - String flying = "Flying: " + player.isFlying(); - String frozen = "Frozen: " + player.isFrozen(); - String blocking = "Blocking: " + player.isBlocking(); - String climbing = "Climbing: " + player.isClimbing(); - String gliding = "Gliding: " + player.isGliding(); - String swimming = "Swimming: " + player.isSwimming(); - String riptiding = "Riptiding: " + player.isRiptiding(); - String insideVehicle = "InsideVehicle: " + player.isInsideVehicle() + (player.isInsideVehicle() ? "Vehicle: " + player.getVehicle().getType() : ""); - String activeEffects = getActiveEffects(player); + int maxSpeed = 10; + if (player.getVehicle() != null && player.getVehicle() instanceof Boat) { + maxSpeed = 35; + } else if (player.hasPotionEffect(PotionEffectType.DOLPHINS_GRACE)) { + maxSpeed = 11; + } + if (speed > maxSpeed) { + String gamemode = "Gamemode: " + player.getGameMode(); + String sprinting = "Sprinting: " + player.isSprinting(); + String sneaking = "Sneaking: " + player.isSneaking(); + String flying = "Flying: " + player.isFlying(); + String frozen = "Frozen: " + player.isFrozen(); + String blocking = "Blocking: " + player.isBlocking(); + String climbing = "Climbing: " + player.isClimbing(); + String gliding = "Gliding: " + player.isGliding(); + String swimming = "Swimming: " + player.isSwimming(); + String riptiding = "Riptiding: " + player.isRiptiding(); + String insideVehicle = "InsideVehicle: " + player.isInsideVehicle() + (player.isInsideVehicle() ? " Vehicle: " + player.getVehicle().getType() : ""); + String activeEffects = getActiveEffects(player); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(player.getName()).append(" ").append(speed).append("/s "); - stringBuilder.append(gamemode).append(" "); - stringBuilder.append(sprinting).append(" "); - stringBuilder.append(sneaking).append(" "); - stringBuilder.append(flying).append(" "); - stringBuilder.append(frozen).append(" "); - stringBuilder.append(blocking).append(" "); - stringBuilder.append(climbing).append(" "); - stringBuilder.append(gliding).append(" "); - stringBuilder.append(swimming).append(" "); - stringBuilder.append(riptiding).append(" "); - stringBuilder.append(insideVehicle).append(" "); - stringBuilder.append(activeEffects).append(" "); - logToFile(player.getUniqueId().toString(), stringBuilder.toString()); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(player.getName()).append(" ").append(speed).append("/s "); + stringBuilder.append(gamemode).append(" "); + stringBuilder.append(sprinting).append(" "); + stringBuilder.append(sneaking).append(" "); + stringBuilder.append(flying).append(" "); + stringBuilder.append(frozen).append(" "); + stringBuilder.append(blocking).append(" "); + stringBuilder.append(climbing).append(" "); + stringBuilder.append(gliding).append(" "); + stringBuilder.append(swimming).append(" "); + stringBuilder.append(riptiding).append(" "); + stringBuilder.append(insideVehicle).append(" "); + stringBuilder.append(activeEffects).append(" "); + logToFile(player.getUniqueId().toString(), stringBuilder.toString()); + } } public static String getActiveEffects(Player player) { diff --git a/Challenge/src/main/java/de/fanta/challenge/commands/CommandRegistration.java b/Challenge/src/main/java/de/fanta/challenge/commands/CommandRegistration.java index 7689d6a..906656d 100644 --- a/Challenge/src/main/java/de/fanta/challenge/commands/CommandRegistration.java +++ b/Challenge/src/main/java/de/fanta/challenge/commands/CommandRegistration.java @@ -10,6 +10,7 @@ import de.fanta.challenge.commands.challenges.ChallengesKickCommand; import de.fanta.challenge.commands.challenges.ChallengesMemoryCommand; import de.fanta.challenge.commands.challenges.ChallengesPingCommand; +import de.fanta.challenge.commands.challenges.ChallengesPortScoreCommand; import de.fanta.challenge.commands.challenges.ChallengesSaveCommand; import de.fanta.challenge.commands.event.EventSaveScoresCommand; import de.fanta.challenge.commands.challenges.ChallengesUnBanCommand; @@ -70,6 +71,7 @@ challengesRouter.addCommandMapping(new CheckItemsCommand(plugin), "checkitems"); challengesRouter.addCommandMapping(new ChallengesInvSeeCommand(plugin), "invsee"); challengesRouter.addCommandMapping(new ChallengesEnderSeeCommand(plugin), "endersee"); + challengesRouter.addCommandMapping(new ChallengesPortScoreCommand(plugin), "portscore"); CommandRouter resetRouter = new CommandRouter(plugin.getCommand("reset")); resetRouter.addCommandMapping(new ResetCommand(plugin)); diff --git a/Challenge/src/main/java/de/fanta/challenge/commands/challenges/ChallengesPortScoreCommand.java b/Challenge/src/main/java/de/fanta/challenge/commands/challenges/ChallengesPortScoreCommand.java new file mode 100644 index 0000000..310a08d --- /dev/null +++ b/Challenge/src/main/java/de/fanta/challenge/commands/challenges/ChallengesPortScoreCommand.java @@ -0,0 +1,50 @@ +package de.fanta.challenge.commands.challenges; + +import de.fanta.challenge.Challenge; +import de.fanta.challenge.challenges.ChallengeEvents.DeathrunChallengeEventMonth; +import de.fanta.challengeutils.Color; +import de.iani.cubesideutils.bukkit.commands.SubCommand; +import de.iani.cubesideutils.commands.ArgsParser; +import net.kyori.adventure.text.Component; +import org.bukkit.Location; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class ChallengesPortScoreCommand extends SubCommand { + + private final Challenge plugin; + + public ChallengesPortScoreCommand(Challenge plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { + if (!(sender instanceof Player player)) { + plugin.getComponentUtil().sendErrorMessage(sender, "You are not a Player :>"); + return true; + } + + if (player.hasPermission("Challenges.editor.override")) { + int score = DeathrunChallengeEventMonth.getCurrentRunScore(player.getUniqueId()); + Location portLocation = player.getWorld().getSpawnLocation(); + if (score <= 0) { + portLocation = portLocation.toHighestLocation(); + } else { + portLocation.setX(score + 1000); + portLocation.toHighestLocation(); + } + + player.teleport(portLocation); + plugin.getComponentUtil().sendNormalMessage(player, "Du wurdest zu deinem Score Teleportiert."); + return true; + } + return true; + } + + @Override + public String getRequiredPermission() { + return "challenge.portscore"; + } +} diff --git a/Challenge/src/main/java/de/fanta/challenge/guis/settingsgui/ServerSettingsGui.java b/Challenge/src/main/java/de/fanta/challenge/guis/settingsgui/ServerSettingsGui.java index b4b849b..18dfb05 100644 --- a/Challenge/src/main/java/de/fanta/challenge/guis/settingsgui/ServerSettingsGui.java +++ b/Challenge/src/main/java/de/fanta/challenge/guis/settingsgui/ServerSettingsGui.java @@ -81,10 +81,10 @@ case NATURAL_REGENERATION_INDEX -> { if (plugin.getNaturalRegeneration()) { plugin.setNaturalRegeneration(false); - plugin.getComponentUtil().sendTitleToAll(Component.text("Server Einstellungen"), Component.text("Natürliche Regeneration aktiviert", Color.GREEN)); + plugin.getComponentUtil().sendTitleToAll(Component.text("Server Einstellungen"), Component.text("Natürliche Regeneration deaktiviert", Color.RED)); } else { plugin.setNaturalRegeneration(true); - plugin.getComponentUtil().sendTitleToAll(Component.text("Server Einstellungen"), Component.text("Natürliche Regeneration deaktiviert", Color.RED)); + plugin.getComponentUtil().sendTitleToAll(Component.text("Server Einstellungen"), Component.text("Natürliche Regeneration aktiviert", Color.GREEN)); } Config.setValue("editsettings", true); } diff --git a/Lobby/src/main/java/de/fanta/lobby/listeners/PlayerListener.java b/Lobby/src/main/java/de/fanta/lobby/listeners/PlayerListener.java index e5c92f0..069892b 100644 --- a/Lobby/src/main/java/de/fanta/lobby/listeners/PlayerListener.java +++ b/Lobby/src/main/java/de/fanta/lobby/listeners/PlayerListener.java @@ -1,51 +1,30 @@ package de.fanta.lobby.listeners; -import de.fanta.challengeutils.Color; -import de.fanta.challengeutils.ItemUtils; -import de.fanta.lobby.Config; import de.fanta.lobby.Lobby; import de.iani.cubesideutils.bukkit.plugin.CubesideUtilsBukkit; import de.iani.cubesideutils.bukkit.plugin.api.UtilsApiBukkit; import de.iani.cubesideutils.plugin.api.PlayerData; -import de.speedy64.globalport.GlobalApi; import de.speedy64.globalport.data.GPLocation; -import net.kyori.adventure.text.Component; -import org.bukkit.GameMode; import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.NamespacedKey; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -import org.bukkit.event.block.Action; -import org.bukkit.event.inventory.ClickType; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.player.PlayerDropItemEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; -import org.bukkit.event.player.PlayerSwapHandItemsEvent; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.persistence.PersistentDataType; import org.bukkit.util.Vector; import org.spigotmc.event.player.PlayerSpawnLocationEvent; import java.util.Collection; import java.util.HashMap; -import java.util.List; import java.util.UUID; public class PlayerListener implements Listener { private final Lobby plugin; - private final NamespacedKey namespacedKey; private final HashMap lastPlayerStepLocation; public PlayerListener(Lobby plugin) { this.plugin = plugin; - this.namespacedKey = new NamespacedKey(plugin, "backitem"); this.lastPlayerStepLocation = new HashMap<>(); } @@ -74,15 +53,6 @@ } @EventHandler - public void onPlayerJoin(PlayerJoinEvent e) { - ItemStack itemStack = ItemUtils.createGuiItem(Material.LIME_BED, Component.text("Zurück zum Spawn", Color.GREEN)); - ItemMeta meta = itemStack.getItemMeta(); - meta.getPersistentDataContainer().set(namespacedKey, PersistentDataType.STRING, "backitem"); - itemStack.setItemMeta(meta); - e.getPlayer().getInventory().setItem(8, itemStack); - } - - @EventHandler public void onPlayerSpawn(PlayerSpawnLocationEvent e) { plugin.getServer().getScheduler().runTaskLater(plugin, () -> { PlayerData data = UtilsApiBukkit.getInstance().getPlayerData(e.getPlayer()); @@ -98,61 +68,4 @@ } }, 1L); } - - @EventHandler - public void onItemClick(InventoryClickEvent e) { - ItemStack stack = e.getCurrentItem(); - if (stack != null) { - ItemMeta meta = stack.getItemMeta(); - if (meta != null && meta.getPersistentDataContainer().has(namespacedKey) && e.getWhoClicked().getGameMode() != GameMode.CREATIVE) { - e.setCancelled(true); - } - } - - if (e.getClick() == ClickType.NUMBER_KEY) { - int slot = e.getHotbarButton(); - if (slot >= 0 && slot < 9) { - if (!e.getWhoClicked().getInventory().equals(e.getInventory())) { - ItemStack swap = e.getWhoClicked().getInventory().getItem(slot); - if (swap != null) { - ItemMeta swapItemMeta = swap.getItemMeta(); - if (swapItemMeta != null && swapItemMeta.getPersistentDataContainer().has(namespacedKey) && e.getWhoClicked().getGameMode() != GameMode.CREATIVE) { - e.setCancelled(true); - } - } - } - } - } - } - - @EventHandler - public void onItemDrop(PlayerDropItemEvent e) { - ItemStack stack = e.getItemDrop().getItemStack(); - ItemMeta meta = stack.getItemMeta(); - if (meta != null && meta.getPersistentDataContainer().has(namespacedKey) && e.getPlayer().getGameMode() != GameMode.CREATIVE) { - e.setCancelled(true); - } - } - - @EventHandler - public void onItemSwitchHand(PlayerSwapHandItemsEvent e) { - ItemStack stack = e.getOffHandItem(); - ItemMeta meta = stack.getItemMeta(); - if (meta != null && meta.getPersistentDataContainer().has(namespacedKey) && e.getPlayer().getGameMode() != GameMode.CREATIVE) { - e.setCancelled(true); - } - } - - @EventHandler - public void onInteractItem(PlayerInteractEvent e) { - if (e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) { - ItemStack stack = e.getItem(); - if (stack != null) { - ItemMeta meta = stack.getItemMeta(); - if (meta != null && meta.getPersistentDataContainer().has(namespacedKey)) { - GlobalApi.portOnlinePlayerToLocation(e.getPlayer().getName(), "spawn"); - } - } - } - } }