From 6f8debde93f93b66043bcea95f6344855cfc0214 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Fri, 22 Sep 2023 01:29:55 +0200 Subject: [PATCH] Added points command --- .../fishingevent/commands/FishCommand.java | 2 + .../commands/fish_subcommands/Points.java | 45 +++++++++++++++---- .../alttd/fishingevent/config/Messages.java | 6 +++ .../fishingevent/points/PointsManagement.java | 2 +- 4 files changed, 45 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/alttd/fishingevent/commands/FishCommand.java b/src/main/java/com/alttd/fishingevent/commands/FishCommand.java index 66865a6..240ee4b 100644 --- a/src/main/java/com/alttd/fishingevent/commands/FishCommand.java +++ b/src/main/java/com/alttd/fishingevent/commands/FishCommand.java @@ -1,6 +1,7 @@ package com.alttd.fishingevent.commands; import com.alttd.fishingevent.FishingEvent; +import com.alttd.fishingevent.commands.fish_subcommands.Points; import com.alttd.fishingevent.config.Messages; import com.alttd.fishingevent.util.Logger; import org.bukkit.command.*; @@ -27,6 +28,7 @@ public class FishCommand implements CommandExecutor, TabExecutor { command.setTabCompleter(this); subCommands = Arrays.asList( + new Points() ); } diff --git a/src/main/java/com/alttd/fishingevent/commands/fish_subcommands/Points.java b/src/main/java/com/alttd/fishingevent/commands/fish_subcommands/Points.java index 35b96f8..c5dedcf 100644 --- a/src/main/java/com/alttd/fishingevent/commands/fish_subcommands/Points.java +++ b/src/main/java/com/alttd/fishingevent/commands/fish_subcommands/Points.java @@ -1,12 +1,17 @@ package com.alttd.fishingevent.commands.fish_subcommands; import com.alttd.fishingevent.commands.SubCommand; +import com.alttd.fishingevent.config.Messages; import com.alttd.fishingevent.points.PointsManagement; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public class Points extends SubCommand { @@ -14,18 +19,40 @@ public class Points extends SubCommand { public boolean onCommand(CommandSender commandSender, String[] args) { Component playerName; int points; - if (!(commandSender instanceof Player player)) { - if (args.length != 2) { + if (args.length == 3) { + if (commandSender.hasPermission(getPermission() + ".others")) { + commandSender.sendMiniMessage(Messages.GENERIC.NO_PERMISSION, null); + return true; + } + Optional playerFromArg = getPlayerFromArg(args[2]); + if (playerFromArg.isEmpty()) { + commandSender.sendMiniMessage(Messages.GENERIC.INVALID_PLAYER, Placeholder.parsed("player", args[2])); + return true; + } + Player argPlayer = playerFromArg.get(); + playerName = argPlayer.displayName(); + points = PointsManagement.getInstance().getPoints(argPlayer.getUniqueId()); + } else if (args.length == 2) { + if (!(commandSender instanceof Player player)) { return false; } - } else { - if (args.length == 1) { - playerName = player.displayName(); - points = PointsManagement.getInstance().getPoints(player.getUniqueId()); - } - } + playerName = player.displayName(); + points = PointsManagement.getInstance().getPoints(player.getUniqueId()); + } else + return false; - return false; + + commandSender.sendMiniMessage(Messages.FISHING_COMMAND.POINTS, TagResolver.resolver( + Placeholder.component("player", playerName), + Placeholder.parsed("points", String.valueOf(points)))); + return true; + } + + private Optional getPlayerFromArg(String arg) { + Player player = Bukkit.getPlayer(arg); + if (player == null) + return Optional.empty(); + return Optional.of(player); } @Override diff --git a/src/main/java/com/alttd/fishingevent/config/Messages.java b/src/main/java/com/alttd/fishingevent/config/Messages.java index 1b70b8c..172aa45 100644 --- a/src/main/java/com/alttd/fishingevent/config/Messages.java +++ b/src/main/java/com/alttd/fishingevent/config/Messages.java @@ -37,11 +37,13 @@ public class Messages extends AbstractConfig { public static String NO_PERMISSION = "You don't have permission for this command"; public static String PLAYER_ONLY = "This command can only be executed as a player"; + public static String INVALID_PLAYER = " is not a valid player"; @SuppressWarnings("unused") private static void load() { NO_PERMISSION = config.getString(prefix, "no-permission", NO_PERMISSION); PLAYER_ONLY = config.getString(prefix, "player-only", PLAYER_ONLY); + INVALID_PLAYER = config.getString(prefix, "invalid-player", INVALID_PLAYER); } } @@ -52,6 +54,7 @@ public class Messages extends AbstractConfig { public static String PRIZES_GUI_NAME = "Prizes GUI"; public static String SELL_GUI_NAME = "Sell GUI";; public static String NOT_INITIALIZED = "There was an error initializing this GUI, please contact staff"; + public static String EARNED_POINTS = "You earned points from this sale, you are now at points!"; @SuppressWarnings("unused") private static void load() { @@ -60,14 +63,17 @@ public class Messages extends AbstractConfig { PRIZES_GUI_NAME = config.getString(prefix, "prizes-gui-name", PRIZES_GUI_NAME); SELL_GUI_NAME = config.getString(prefix, "sell-gui-name", SELL_GUI_NAME); NOT_INITIALIZED = config.getString(prefix, "not-initialized", NOT_INITIALIZED); + EARNED_POINTS = config.getString(prefix, "earned-points", EARNED_POINTS); } } public static class FISHING_COMMAND { private static final String prefix = "fishing-command."; + public static String POINTS = " has points."; @SuppressWarnings("unused") private static void load() { + POINTS = config.getString(prefix, "points", POINTS); } } diff --git a/src/main/java/com/alttd/fishingevent/points/PointsManagement.java b/src/main/java/com/alttd/fishingevent/points/PointsManagement.java index 5f3e62e..6007e82 100644 --- a/src/main/java/com/alttd/fishingevent/points/PointsManagement.java +++ b/src/main/java/com/alttd/fishingevent/points/PointsManagement.java @@ -32,7 +32,7 @@ public class PointsManagement { } public synchronized int getPoints(UUID uuid) { - return pointsMap.getInt(uuid); + return pointsMap.getOrDefault(uuid, 0); } public synchronized void clear() {