Added points command

This commit is contained in:
Teriuihi 2023-09-22 01:29:55 +02:00
parent feca8ec77c
commit 6f8debde93
4 changed files with 45 additions and 10 deletions

View File

@ -1,6 +1,7 @@
package com.alttd.fishingevent.commands; package com.alttd.fishingevent.commands;
import com.alttd.fishingevent.FishingEvent; import com.alttd.fishingevent.FishingEvent;
import com.alttd.fishingevent.commands.fish_subcommands.Points;
import com.alttd.fishingevent.config.Messages; import com.alttd.fishingevent.config.Messages;
import com.alttd.fishingevent.util.Logger; import com.alttd.fishingevent.util.Logger;
import org.bukkit.command.*; import org.bukkit.command.*;
@ -27,6 +28,7 @@ public class FishCommand implements CommandExecutor, TabExecutor {
command.setTabCompleter(this); command.setTabCompleter(this);
subCommands = Arrays.asList( subCommands = Arrays.asList(
new Points()
); );
} }

View File

@ -1,12 +1,17 @@
package com.alttd.fishingevent.commands.fish_subcommands; package com.alttd.fishingevent.commands.fish_subcommands;
import com.alttd.fishingevent.commands.SubCommand; import com.alttd.fishingevent.commands.SubCommand;
import com.alttd.fishingevent.config.Messages;
import com.alttd.fishingevent.points.PointsManagement; import com.alttd.fishingevent.points.PointsManagement;
import net.kyori.adventure.text.Component; 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.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class Points extends SubCommand { public class Points extends SubCommand {
@ -14,18 +19,40 @@ public class Points extends SubCommand {
public boolean onCommand(CommandSender commandSender, String[] args) { public boolean onCommand(CommandSender commandSender, String[] args) {
Component playerName; Component playerName;
int points; int points;
if (!(commandSender instanceof Player player)) { if (args.length == 3) {
if (args.length != 2) { if (commandSender.hasPermission(getPermission() + ".others")) {
commandSender.sendMiniMessage(Messages.GENERIC.NO_PERMISSION, null);
return true;
}
Optional<Player> 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; return false;
} }
} else { playerName = player.displayName();
if (args.length == 1) { points = PointsManagement.getInstance().getPoints(player.getUniqueId());
playerName = player.displayName(); } else
points = PointsManagement.getInstance().getPoints(player.getUniqueId()); 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<Player> getPlayerFromArg(String arg) {
Player player = Bukkit.getPlayer(arg);
if (player == null)
return Optional.empty();
return Optional.of(player);
} }
@Override @Override

View File

@ -37,11 +37,13 @@ public class Messages extends AbstractConfig {
public static String NO_PERMISSION = "<red>You don't have permission for this command</red>"; public static String NO_PERMISSION = "<red>You don't have permission for this command</red>";
public static String PLAYER_ONLY = "<red>This command can only be executed as a player</red>"; public static String PLAYER_ONLY = "<red>This command can only be executed as a player</red>";
public static String INVALID_PLAYER = "<red><player> is not a valid player</red>";
@SuppressWarnings("unused") @SuppressWarnings("unused")
private static void load() { private static void load() {
NO_PERMISSION = config.getString(prefix, "no-permission", NO_PERMISSION); NO_PERMISSION = config.getString(prefix, "no-permission", NO_PERMISSION);
PLAYER_ONLY = config.getString(prefix, "player-only", PLAYER_ONLY); 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 = "<green>Prizes GUI</green>"; public static String PRIZES_GUI_NAME = "<green>Prizes GUI</green>";
public static String SELL_GUI_NAME = "<green>Sell GUI</green>";; public static String SELL_GUI_NAME = "<green>Sell GUI</green>";;
public static String NOT_INITIALIZED = "<red>There was an error initializing this GUI, please contact staff</red>"; public static String NOT_INITIALIZED = "<red>There was an error initializing this GUI, please contact staff</red>";
public static String EARNED_POINTS = "<green>You earned <gold><earned_points></gold> points from this sale, you are now at <gold><total_points></gold> points!";
@SuppressWarnings("unused") @SuppressWarnings("unused")
private static void load() { 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); PRIZES_GUI_NAME = config.getString(prefix, "prizes-gui-name", PRIZES_GUI_NAME);
SELL_GUI_NAME = config.getString(prefix, "sell-gui-name", SELL_GUI_NAME); SELL_GUI_NAME = config.getString(prefix, "sell-gui-name", SELL_GUI_NAME);
NOT_INITIALIZED = config.getString(prefix, "not-initialized", NOT_INITIALIZED); NOT_INITIALIZED = config.getString(prefix, "not-initialized", NOT_INITIALIZED);
EARNED_POINTS = config.getString(prefix, "earned-points", EARNED_POINTS);
} }
} }
public static class FISHING_COMMAND { public static class FISHING_COMMAND {
private static final String prefix = "fishing-command."; private static final String prefix = "fishing-command.";
public static String POINTS = "<green><player> has <gold><points></gold> points.";
@SuppressWarnings("unused") @SuppressWarnings("unused")
private static void load() { private static void load() {
POINTS = config.getString(prefix, "points", POINTS);
} }
} }

View File

@ -32,7 +32,7 @@ public class PointsManagement {
} }
public synchronized int getPoints(UUID uuid) { public synchronized int getPoints(UUID uuid) {
return pointsMap.getInt(uuid); return pointsMap.getOrDefault(uuid, 0);
} }
public synchronized void clear() { public synchronized void clear() {