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