From 3a0011064b605edb1db7a608d982412b763dac75 Mon Sep 17 00:00:00 2001 From: A5H73Y Date: Fri, 20 Jul 2018 10:48:25 +0100 Subject: [PATCH] Updated plugin to 4.7 Challenge improvements Translations for leaderboards added --- plugin.yml | 2 +- pom.xml | 2 +- .../A5H73Y/Parkour/Course/CourseMethods.java | 1 - .../me/A5H73Y/Parkour/Other/Challenge.java | 36 +++++++------- .../A5H73Y/Parkour/Other/Configurations.java | 3 ++ .../Parkour/Other/ValidationMethods.java | 4 ++ .../A5H73Y/Parkour/Player/PlayerMethods.java | 47 ++++++++++--------- .../me/A5H73Y/Parkour/Utilities/Utils.java | 16 +++++-- 8 files changed, 65 insertions(+), 46 deletions(-) diff --git a/plugin.yml b/plugin.yml index 5745a669..84956b97 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,5 +1,5 @@ name: Parkour -version: 4.6 +version: 4.7 description: The original and most powerful Parkour plugin available softdepend: [Vault, BountifulAPI] author: A5H73Y diff --git a/pom.xml b/pom.xml index 9e316e5b..181b0a49 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 me.A5H73Y Parkour - 4.6 + 4.7 jar Parkour diff --git a/src/main/java/me/A5H73Y/Parkour/Course/CourseMethods.java b/src/main/java/me/A5H73Y/Parkour/Course/CourseMethods.java index 896bf9fe..6794fc0c 100644 --- a/src/main/java/me/A5H73Y/Parkour/Course/CourseMethods.java +++ b/src/main/java/me/A5H73Y/Parkour/Course/CourseMethods.java @@ -315,7 +315,6 @@ private static void displayPlaying(CommandSender sender) { sender.sendMessage(Static.getParkourString() + PlayerMethods.getPlaying().size() + " players using Parkour: "); - // TODO pages - reuse courses page String playingTemplate = Utils.getTranslation("Parkour.Playing", false); for (Map.Entry entry : PlayerMethods.getPlaying().entrySet()) { sender.sendMessage(playingTemplate diff --git a/src/main/java/me/A5H73Y/Parkour/Other/Challenge.java b/src/main/java/me/A5H73Y/Parkour/Other/Challenge.java index a6e1f5eb..fd80f6d7 100644 --- a/src/main/java/me/A5H73Y/Parkour/Other/Challenge.java +++ b/src/main/java/me/A5H73Y/Parkour/Other/Challenge.java @@ -7,38 +7,38 @@ public class Challenge { private static final List challenges = new ArrayList<>(); - private final String player; - private final String targetPlayer; + private final String senderPlayer; + private final String receiverPlayer; private final String courseName; /** * Challenge player - * Created to manage who started the challenge, who's the recipient and which on course. + * Created to manage who started the challenge, who's the receiver and which on course. * - * @param player - * @param targetPlayer + * @param senderPlayer + * @param receiverPlayer * @param courseName */ - private Challenge(String player, String targetPlayer, String courseName){ - this.player = player; - this.targetPlayer = targetPlayer; + private Challenge(String senderPlayer, String receiverPlayer, String courseName){ + this.senderPlayer = senderPlayer; + this.receiverPlayer = receiverPlayer; this.courseName = courseName; } - public String getPlayer() { - return player; + public String getSenderPlayer() { + return senderPlayer; } - public String getTargetPlayer() { - return targetPlayer; + public String getReceiverPlayer() { + return receiverPlayer; } public String getCourseName() { return courseName; } - public static Challenge challengePlayer(String player1, String player2, String courseName) { - Challenge challenge = new Challenge(player1, player2, courseName); + public static Challenge challengePlayer(String senderPlayer, String receiverPlayer, String courseName) { + Challenge challenge = new Challenge(senderPlayer, receiverPlayer, courseName); challenges.add(challenge); return challenge; } @@ -49,13 +49,13 @@ public static void removeChallenge(Challenge challenge){ } /** - * Find the challenge the recipient player has recieved. - * @param targetPlayer + * Find the challenge the recipient senderPlayer has received. + * @param receiverPlayer * @return */ - public static Challenge getChallenge(String targetPlayer){ + public static Challenge getChallenge(String receiverPlayer){ for (Challenge challenge : challenges){ - if (challenge.getTargetPlayer().equals(targetPlayer)) + if (challenge.getReceiverPlayer().equals(receiverPlayer)) return challenge; } return null; diff --git a/src/main/java/me/A5H73Y/Parkour/Other/Configurations.java b/src/main/java/me/A5H73Y/Parkour/Other/Configurations.java index 7bb8fa6c..4ab2f6d0 100644 --- a/src/main/java/me/A5H73Y/Parkour/Other/Configurations.java +++ b/src/main/java/me/A5H73Y/Parkour/Other/Configurations.java @@ -309,6 +309,8 @@ private void saveStrings() { stringData.addDefault("Parkour.Countdown", "Starting in &b%AMOUNT% &fseconds..."); stringData.addDefault("Parkour.Go", "Go!"); stringData.addDefault("Parkour.BestTime", "This is your best time so far!"); + stringData.addDefault("Parkour.LeaderboardHeading", "%COURSE% : Top %AMOUNT% results"); + stringData.addDefault("Parkour.LeaderboardEntry", "%POSITION%) &b%PLAYER% &fin &3%TIME%&f, dying &7%DEATHS% &ftimes"); stringData.addDefault("Error.NotOnCourse", "You are not on this course!"); stringData.addDefault("Error.NotOnAnyCourse", "You are not on a course!"); @@ -445,6 +447,7 @@ public void setupConfig(){ config.addDefault("OnLeaveServer.TeleportToLastCheckpoint", false); config.addDefault("ParkourModes.Challenge.HidePlayers", true); + config.addDefault("ParkourModes.Challenge.CountdownFrom", 5); config.addDefault("ParkourModes.Speedy.SetSpeed", 0.8); config.addDefault("ParkourModes.Speedy.ResetSpeed", 0.2); config.addDefault("ParkourModes.Moon.Strength", 5); diff --git a/src/main/java/me/A5H73Y/Parkour/Other/ValidationMethods.java b/src/main/java/me/A5H73Y/Parkour/Other/ValidationMethods.java index 4aaf565f..7c8bf39d 100644 --- a/src/main/java/me/A5H73Y/Parkour/Other/ValidationMethods.java +++ b/src/main/java/me/A5H73Y/Parkour/Other/ValidationMethods.java @@ -182,6 +182,10 @@ public static boolean challengePlayer(String[] args, Player player) { player.sendMessage(Static.getParkourString() + "This player is not online!"); return false; } + if (PlayerMethods.isPlaying(player.getName())) { + player.sendMessage(Static.getParkourString() + "You are already on a course!"); + return false; + } if (PlayerMethods.isPlaying(args[2])){ player.sendMessage(Static.getParkourString() + "This player is already playing!"); return false; diff --git a/src/main/java/me/A5H73Y/Parkour/Player/PlayerMethods.java b/src/main/java/me/A5H73Y/Parkour/Player/PlayerMethods.java index 08f934d3..52e6bca8 100644 --- a/src/main/java/me/A5H73Y/Parkour/Player/PlayerMethods.java +++ b/src/main/java/me/A5H73Y/Parkour/Player/PlayerMethods.java @@ -889,57 +889,60 @@ private static void teardownPlayerMode(Player player) { * Executed by the recipient of a challenge invite. * Will prepare each player for the challenge. * - * @param targetPlayer + * @param receiverPlayer */ - public static void acceptChallenge(final Player targetPlayer){ - Challenge challenge = Challenge.getChallenge(targetPlayer.getName()); + public static void acceptChallenge(final Player receiverPlayer){ + Challenge challenge = Challenge.getChallenge(receiverPlayer.getName()); if (challenge == null){ - targetPlayer.sendMessage(Static.getParkourString() + "You have not been invited!"); + receiverPlayer.sendMessage(Static.getParkourString() + "You have not been invited!"); return; } - if (!PlayerMethods.isPlayerOnline(challenge.getPlayer())){ - targetPlayer.sendMessage(Static.getParkourString() + "Player is not online!"); + if (!PlayerMethods.isPlayerOnline(challenge.getSenderPlayer())){ + receiverPlayer.sendMessage(Static.getParkourString() + "Player is not online!"); return; } Challenge.removeChallenge(challenge); - final Player player = Bukkit.getPlayer(challenge.getPlayer()); + final Player senderPlayer = Bukkit.getPlayer(challenge.getSenderPlayer()); if (Parkour.getPlugin().getConfig().getBoolean("ParkourModes.Challenge.hidePlayers")){ - player.hidePlayer(targetPlayer); - targetPlayer.hidePlayer(player); + senderPlayer.hidePlayer(receiverPlayer); + receiverPlayer.hidePlayer(senderPlayer); } - CourseMethods.joinCourse(player, challenge.getCourseName()); - CourseMethods.joinCourse(targetPlayer, challenge.getCourseName()); + CourseMethods.joinCourse(senderPlayer, challenge.getCourseName()); + CourseMethods.joinCourse(receiverPlayer, challenge.getCourseName()); - final float playerSpeed = player.getWalkSpeed(); - final float targetSpeed = targetPlayer.getWalkSpeed(); + final float playerSpeed = senderPlayer.getWalkSpeed(); + final float targetSpeed = receiverPlayer.getWalkSpeed(); - player.setWalkSpeed(0f); - targetPlayer.setWalkSpeed(0f); + senderPlayer.setWalkSpeed(0f); + receiverPlayer.setWalkSpeed(0f); new Runnable() { public int taskID = Bukkit.getScheduler().scheduleSyncRepeatingTask(Parkour.getPlugin(), this, 0L, 20L); - int count = 6; + int count = Parkour.getPlugin().getConfig().getInt("ParkourModes.Challenge.CountdownFrom") + 1; @Override public void run() { if (count > 1) { count--; String translation = Utils.getTranslation("Parkour.Countdown", false).replace("%AMOUNT%", String.valueOf(count)); - player.sendMessage(translation); - targetPlayer.sendMessage(translation); + senderPlayer.sendMessage(translation); + receiverPlayer.sendMessage(translation); } else { Bukkit.getScheduler().cancelTask(taskID); String translation = Utils.getTranslation("Parkour.Go", false); - player.sendMessage(translation); - targetPlayer.sendMessage(translation); - player.setWalkSpeed(playerSpeed); - targetPlayer.setWalkSpeed(targetSpeed); + senderPlayer.sendMessage(translation); + receiverPlayer.sendMessage(translation); + senderPlayer.setWalkSpeed(playerSpeed); + receiverPlayer.setWalkSpeed(targetSpeed); + + getParkourSession(senderPlayer.getName()).resetTimeStarted(); + getParkourSession(receiverPlayer.getName()).resetTimeStarted(); } } }; diff --git a/src/main/java/me/A5H73Y/Parkour/Utilities/Utils.java b/src/main/java/me/A5H73Y/Parkour/Utilities/Utils.java index c1187a22..5d4af009 100644 --- a/src/main/java/me/A5H73Y/Parkour/Utilities/Utils.java +++ b/src/main/java/me/A5H73Y/Parkour/Utilities/Utils.java @@ -623,10 +623,20 @@ public static void displayLeaderboard(Player player, List times, Str return; } - player.sendMessage(Utils.getStandardHeading(courseName + " : Top " + times.size() + " results")); + String heading = Utils.getTranslation("Parkour.LeaderboardHeading", false) + .replace("%COURSE%", courseName) + .replace("%AMOUNT%", String.valueOf(times.size())); + + player.sendMessage(Utils.getStandardHeading(heading)); + for (int i = 0; i < times.size(); i++) { - player.sendMessage(Utils.colour((i + 1) + ") &b" + times.get(i).getPlayer() + "&f in &3" + Utils.displayCurrentTime(times.get(i).getTime()) + "&f, dying &7" + times.get(i).getDeaths() + " &ftimes")); - //TODO - translate + String translation = Utils.getTranslation("Parkour.LeaderboardEntry", false) + .replace("%POSITION%", String.valueOf(i + 1)) + .replace("%PLAYER%", times.get(i).getPlayer()) + .replace("%TIME%", Utils.displayCurrentTime(times.get(i).getTime())) + .replace("%DEATHS%", String.valueOf(times.get(i).getDeaths())); + + player.sendMessage(translation); } }