From 48ba5d8c01fff537dd18e5fc37f854b86e0f4e8d Mon Sep 17 00:00:00 2001 From: Xiao-MoMi <70987828+Xiao-MoMi@users.noreply.github.com> Date: Thu, 23 Mar 2023 23:22:37 +0800 Subject: [PATCH] 1.3.0.4 --- .../customfishing/api/CustomFishingAPI.java | 16 ++ .../commands/AbstractMainCommand.java | 58 +++++++ .../commands/AbstractSubCommand.java | 63 +++++--- .../commands/FishingBagCommand.java | 70 +------- .../customfishing/commands/MainCommand.java | 60 +------ .../commands/SellFishCommand.java | 2 +- .../customfishing/commands/SubCommand.java | 37 ----- .../commands/subcmd/BaitCommand.java | 120 -------------- .../commands/subcmd/CompetitionCommand.java | 11 +- .../commands/subcmd/HelpCommand.java | 49 ++++++ .../commands/subcmd/ImportCommand.java | 64 -------- .../commands/subcmd/LootCommand.java | 140 ---------------- .../commands/subcmd/OpenBagCommand.java | 36 ++--- .../commands/subcmd/ReloadCommand.java | 16 +- .../commands/subcmd/RodCommand.java | 122 -------------- .../commands/subcmd/SellShopCommand.java | 26 ++- .../commands/subcmd/StatisticsCommand.java | 76 ++++----- .../commands/subcmd/UtilCommand.java | 121 -------------- .../commands/subcmd/item/BaitCommand.java | 122 ++++++++++++++ .../subcmd/{ => item}/ItemsCommand.java | 20 +-- .../commands/subcmd/item/LootCommand.java | 152 ++++++++++++++++++ .../commands/subcmd/item/RodCommand.java | 122 ++++++++++++++ .../commands/subcmd/item/UtilCommand.java | 122 ++++++++++++++ .../fishing/action/VanillaXPImpl.java | 1 - .../fishing/mode/ModeOneGame.java | 1 - .../fishing/totem/ActivatedTotem.java | 1 - .../integration/job/JobsRebornImpl.java | 1 - .../quest/OldBetonQuestCFQuest.java | 1 - .../customfishing/manager/EffectManager.java | 1 - .../customfishing/manager/LootManager.java | 30 ++-- .../customfishing/manager/SellManager.java | 1 - .../customfishing/object/DynamicText.java | 4 - src/main/resources/categories/default.yml | 4 - .../resources/messages/messages_english.yml | 28 ++-- 34 files changed, 794 insertions(+), 904 deletions(-) create mode 100644 src/main/java/net/momirealms/customfishing/commands/AbstractMainCommand.java delete mode 100644 src/main/java/net/momirealms/customfishing/commands/SubCommand.java delete mode 100644 src/main/java/net/momirealms/customfishing/commands/subcmd/BaitCommand.java create mode 100644 src/main/java/net/momirealms/customfishing/commands/subcmd/HelpCommand.java delete mode 100644 src/main/java/net/momirealms/customfishing/commands/subcmd/ImportCommand.java delete mode 100644 src/main/java/net/momirealms/customfishing/commands/subcmd/LootCommand.java delete mode 100644 src/main/java/net/momirealms/customfishing/commands/subcmd/RodCommand.java delete mode 100644 src/main/java/net/momirealms/customfishing/commands/subcmd/UtilCommand.java create mode 100644 src/main/java/net/momirealms/customfishing/commands/subcmd/item/BaitCommand.java rename src/main/java/net/momirealms/customfishing/commands/subcmd/{ => item}/ItemsCommand.java (64%) create mode 100644 src/main/java/net/momirealms/customfishing/commands/subcmd/item/LootCommand.java create mode 100644 src/main/java/net/momirealms/customfishing/commands/subcmd/item/RodCommand.java create mode 100644 src/main/java/net/momirealms/customfishing/commands/subcmd/item/UtilCommand.java diff --git a/src/main/java/net/momirealms/customfishing/api/CustomFishingAPI.java b/src/main/java/net/momirealms/customfishing/api/CustomFishingAPI.java index 30fd8176..33cd56ea 100644 --- a/src/main/java/net/momirealms/customfishing/api/CustomFishingAPI.java +++ b/src/main/java/net/momirealms/customfishing/api/CustomFishingAPI.java @@ -100,4 +100,20 @@ public class CustomFishingAPI { public static int getCertainLootCatchAmount(String id, UUID uuid) { return CustomFishing.getInstance().getStatisticsManager().getFishAmount(uuid, id); } + + /** + * If an item exists in item library + * @param type type + * @param key key + * @return exist + */ + public static boolean doesItemExist(String type, String key) { + return switch (type) { + case "loot" -> CustomFishing.getInstance().getLootManager().hasLoot(key); + case "rod" -> CustomFishing.getInstance().getEffectManager().getRodItem(key) != null; + case "bait" -> CustomFishing.getInstance().getEffectManager().getBaitItem(key) != null; + case "util" -> CustomFishing.getInstance().getEffectManager().getUtilItem(key) != null; + default -> false; + }; + } } diff --git a/src/main/java/net/momirealms/customfishing/commands/AbstractMainCommand.java b/src/main/java/net/momirealms/customfishing/commands/AbstractMainCommand.java new file mode 100644 index 00000000..0ba3472f --- /dev/null +++ b/src/main/java/net/momirealms/customfishing/commands/AbstractMainCommand.java @@ -0,0 +1,58 @@ +package net.momirealms.customfishing.commands; + +import net.momirealms.customfishing.manager.MessageManager; +import net.momirealms.customfishing.util.AdventureUtil; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; +import org.jetbrains.annotations.NotNull; + +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; + +public abstract class AbstractMainCommand implements TabExecutor { + + protected final Map subCommandMap; + + public AbstractMainCommand() { + this.subCommandMap = new ConcurrentHashMap<>(); + } + + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + List argList = Arrays.asList(args); + if (argList.size() < 1) { + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.nonArgs); + return true; + } + AbstractSubCommand subCommand = subCommandMap.get(argList.get(0)); + if (subCommand != null) + return subCommand.onCommand(sender, argList.subList(1, argList.size())); + else { + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.unavailableArgs); + return true; + } + } + + @Override + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) { + List argList = Arrays.asList(args); + if (argList.size() <= 1) { + List returnList = new ArrayList<>(subCommandMap.keySet()); + returnList.removeIf(str -> !str.startsWith(args[0])); + return returnList; + } + AbstractSubCommand subCommand = subCommandMap.get(argList.get(0)); + if (subCommand != null) + return subCommand.onTabComplete(sender, argList.subList(1, argList.size())); + else + return Collections.singletonList(""); + } + + public void regSubCommand(AbstractSubCommand executor) { + subCommandMap.put(executor.getSubCommand(), executor); + } + + public Map getSubCommandMap() { + return subCommandMap; + } +} diff --git a/src/main/java/net/momirealms/customfishing/commands/AbstractSubCommand.java b/src/main/java/net/momirealms/customfishing/commands/AbstractSubCommand.java index 7d51d710..83ac9ac4 100644 --- a/src/main/java/net/momirealms/customfishing/commands/AbstractSubCommand.java +++ b/src/main/java/net/momirealms/customfishing/commands/AbstractSubCommand.java @@ -17,10 +17,12 @@ package net.momirealms.customfishing.commands; +import net.momirealms.customfishing.api.CustomFishingAPI; import net.momirealms.customfishing.manager.MessageManager; import net.momirealms.customfishing.util.AdventureUtil; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.Collections; @@ -29,22 +31,20 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; -public abstract class AbstractSubCommand implements SubCommand { +public abstract class AbstractSubCommand { private final String command; - private Map subCommandMap; + private Map subCommandMap; - public AbstractSubCommand(String command, Map subCommandMap) { + public AbstractSubCommand(String command) { this.command = command; - this.subCommandMap = subCommandMap; } - @Override public boolean onCommand(CommandSender sender, List args) { if (subCommandMap == null || args.size() < 1) { return true; } - SubCommand subCommand = subCommandMap.get(args.get(0)); + AbstractSubCommand subCommand = subCommandMap.get(args.get(0)); if (subCommand == null) { AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.unavailableArgs); } else { @@ -53,7 +53,6 @@ public abstract class AbstractSubCommand implements SubCommand { return true; } - @Override public List onTabComplete(CommandSender sender, List args) { if (subCommandMap == null) return Collections.singletonList(""); @@ -62,37 +61,65 @@ public abstract class AbstractSubCommand implements SubCommand { returnList.removeIf(str -> !str.startsWith(args.get(0))); return returnList; } - SubCommand subCmd = subCommandMap.get(args.get(0)); + AbstractSubCommand subCmd = subCommandMap.get(args.get(0)); if (subCmd != null) return subCommandMap.get(args.get(0)).onTabComplete(sender, args.subList(1, args.size())); return Collections.singletonList(""); } - @Override public String getSubCommand() { return command; } - @Override - public Map getSubCommands() { + public Map getSubCommands() { return Collections.unmodifiableMap(subCommandMap); } - @Override - public void regSubCommand(SubCommand command) { + public void regSubCommand(AbstractSubCommand command) { if (subCommandMap == null) { subCommandMap = new ConcurrentHashMap<>(); } subCommandMap.put(command.getSubCommand(), command); } - public void setSubCommandMap(Map subCommandMap) { - this.subCommandMap = subCommandMap; + protected boolean noConsoleExecute(CommandSender commandSender) { + if (!(commandSender instanceof Player)) { + AdventureUtil.consoleMessage(MessageManager.prefix + MessageManager.noConsole); + return true; + } + return false; } - protected void giveItemMsg(CommandSender sender, String name, String item, int amount){ - String string = MessageManager.prefix + MessageManager.giveItem.replace("{Amount}", String.valueOf(amount)).replace("{Player}",name).replace("{Item}",item); - AdventureUtil.sendMessage(sender, string); + protected boolean itemNotExist(CommandSender commandSender, String type, String key) { + if (!CustomFishingAPI.doesItemExist(type, key)) { + AdventureUtil.sendMessage(commandSender, MessageManager.prefix + MessageManager.itemNotExist); + return true; + } + return false; + } + + protected boolean playerNotOnline(CommandSender commandSender, String player) { + if (Bukkit.getPlayer(player) == null) { + AdventureUtil.sendMessage(commandSender, MessageManager.prefix + MessageManager.notOnline.replace("{Player}", player)); + return true; + } + return false; + } + + protected boolean lackArgs(CommandSender commandSender, int required, int current) { + if (required > current) { + AdventureUtil.sendMessage(commandSender, MessageManager.prefix + MessageManager.lackArgs); + return true; + } + return false; + } + + protected void giveItemMsg(CommandSender sender, String name, String item, int amount) { + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.giveItem.replace("{Amount}", String.valueOf(amount)).replace("{Player}",name).replace("{Item}",item)); + } + + protected void getItemMsg(CommandSender sender, String item, int amount) { + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.getItem.replace("{Amount}", String.valueOf(amount)).replace("{Item}", item)); } protected List online_players() { diff --git a/src/main/java/net/momirealms/customfishing/commands/FishingBagCommand.java b/src/main/java/net/momirealms/customfishing/commands/FishingBagCommand.java index cee1a680..39d5bbd8 100644 --- a/src/main/java/net/momirealms/customfishing/commands/FishingBagCommand.java +++ b/src/main/java/net/momirealms/customfishing/commands/FishingBagCommand.java @@ -23,80 +23,29 @@ import net.momirealms.customfishing.manager.MessageManager; import net.momirealms.customfishing.util.AdventureUtil; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; -import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Collectors; +import java.util.List; -public class FishingBagCommand implements TabExecutor { - - private final Map subCommandMap; +public class FishingBagCommand extends AbstractMainCommand { public FishingBagCommand() { - subCommandMap = new ConcurrentHashMap<>(); regSubCommand(OpenCommand.INSTANCE); } - public void regSubCommand(SubCommand executor) { - subCommandMap.put(executor.getSubCommand(), executor); - } - - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (!ConfigManager.enableFishingBag) return true; - List argList = Arrays.asList(args); - if (argList.size() < 1) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.nonArgs); - return true; - } - SubCommand subCommand = subCommandMap.get(argList.get(0)); - if (subCommand != null) - return subCommand.onCommand(sender, argList.subList(1, argList.size())); - else { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.unavailableArgs); - return true; - } - } - - @Override - public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { - List argList = Arrays.asList(args); - if (argList.size() <= 1) { - List returnList = new ArrayList<>(subCommandMap.keySet()); - returnList.removeIf(str -> !str.startsWith(args[0])); - return returnList; - } - SubCommand subCommand = subCommandMap.get(argList.get(0)); - if (subCommand != null) - return subCommand.onTabComplete(sender, argList.subList(1, argList.size())); - else - return Collections.singletonList(""); - } - - public Map getSubCommandMap() { - return subCommandMap; - } - public static class OpenCommand extends AbstractSubCommand { - public static final SubCommand INSTANCE = new OpenCommand(); + public static final OpenCommand INSTANCE = new OpenCommand(); private OpenCommand() { - super("open", null); + super("open"); } @Override public boolean onCommand(CommandSender sender, List args) { - if (!(sender instanceof Player player)) { - AdventureUtil.consoleMessage(MessageManager.prefix + MessageManager.noConsole); - return true; - } + if (super.noConsoleExecute(sender)) return true; + Player player = (Player) sender; if (args.size() == 0) { if (!sender.hasPermission("fishingbag.open")) { AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.noPerm); @@ -123,11 +72,8 @@ public class FishingBagCommand implements TabExecutor { @Override public List onTabComplete(CommandSender sender, List args) { - if (!ConfigManager.enableFishingBag || !sender.hasPermission("customfishing.admin")) return null; - if (args.size() == 1) { - return online_players().stream() - .filter(cmd -> cmd.startsWith(args.get(0))) - .collect(Collectors.toList()); + if (ConfigManager.enableFishingBag && sender.hasPermission("customfishing.admin") && args.size() == 1) { + return filterStartingWith(online_players(), args.get(0)); } return null; } diff --git a/src/main/java/net/momirealms/customfishing/commands/MainCommand.java b/src/main/java/net/momirealms/customfishing/commands/MainCommand.java index 748c5499..2c8e22d3 100644 --- a/src/main/java/net/momirealms/customfishing/commands/MainCommand.java +++ b/src/main/java/net/momirealms/customfishing/commands/MainCommand.java @@ -19,71 +19,17 @@ package net.momirealms.customfishing.commands; import net.momirealms.customfishing.commands.subcmd.*; -import net.momirealms.customfishing.manager.MessageManager; -import net.momirealms.customfishing.util.AdventureUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabExecutor; -import org.jetbrains.annotations.NotNull; +import net.momirealms.customfishing.commands.subcmd.item.ItemsCommand; -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; - -public class MainCommand implements TabExecutor { - - private final Map subCommandMap; +public class MainCommand extends AbstractMainCommand { public MainCommand() { - subCommandMap = new ConcurrentHashMap<>(); - regDefaultSubCommands(); - } - - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - List argList = Arrays.asList(args); - if (argList.size() < 1) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.nonArgs); - return true; - } - SubCommand subCommand = subCommandMap.get(argList.get(0)); - if (subCommand != null) - return subCommand.onCommand(sender, argList.subList(1, argList.size())); - else { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.unavailableArgs); - return true; - } - } - - private void regDefaultSubCommands() { regSubCommand(ReloadCommand.INSTANCE); regSubCommand(ItemsCommand.INSTANCE); regSubCommand(CompetitionCommand.INSTANCE); - regSubCommand(ImportCommand.INSTANCE); regSubCommand(SellShopCommand.INSTANCE); regSubCommand(OpenBagCommand.INSTANCE); regSubCommand(StatisticsCommand.INSTANCE); - } - - public void regSubCommand(SubCommand executor) { - subCommandMap.put(executor.getSubCommand(), executor); - } - - @Override - public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) { - List argList = Arrays.asList(args); - if (argList.size() <= 1) { - List returnList = new ArrayList<>(subCommandMap.keySet()); - returnList.removeIf(str -> !str.startsWith(args[0])); - return returnList; - } - SubCommand subCommand = subCommandMap.get(argList.get(0)); - if (subCommand != null) - return subCommand.onTabComplete(sender, argList.subList(1, argList.size())); - else - return Collections.singletonList(""); - } - - public Map getSubCommandMap() { - return subCommandMap; + regSubCommand(HelpCommand.INSTANCE); } } diff --git a/src/main/java/net/momirealms/customfishing/commands/SellFishCommand.java b/src/main/java/net/momirealms/customfishing/commands/SellFishCommand.java index 103db704..a8952116 100644 --- a/src/main/java/net/momirealms/customfishing/commands/SellFishCommand.java +++ b/src/main/java/net/momirealms/customfishing/commands/SellFishCommand.java @@ -46,4 +46,4 @@ public class SellFishCommand implements TabExecutor { public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { return null; } -} +} \ No newline at end of file diff --git a/src/main/java/net/momirealms/customfishing/commands/SubCommand.java b/src/main/java/net/momirealms/customfishing/commands/SubCommand.java deleted file mode 100644 index 8d016364..00000000 --- a/src/main/java/net/momirealms/customfishing/commands/SubCommand.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) <2022> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package net.momirealms.customfishing.commands; - -import org.bukkit.command.CommandSender; - -import java.util.List; -import java.util.Map; - -public interface SubCommand { - - boolean onCommand(CommandSender sender, List args); - - List onTabComplete(CommandSender sender, List args); - - String getSubCommand(); - - Map getSubCommands(); - - void regSubCommand(SubCommand subCommand); - -} diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/BaitCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/BaitCommand.java deleted file mode 100644 index ab81230a..00000000 --- a/src/main/java/net/momirealms/customfishing/commands/subcmd/BaitCommand.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (C) <2022> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package net.momirealms.customfishing.commands.subcmd; - -import net.momirealms.customfishing.CustomFishing; -import net.momirealms.customfishing.commands.AbstractSubCommand; -import net.momirealms.customfishing.commands.SubCommand; -import net.momirealms.customfishing.manager.MessageManager; -import net.momirealms.customfishing.util.AdventureUtil; -import net.momirealms.customfishing.util.ItemStackUtil; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.List; - -public class BaitCommand extends AbstractSubCommand { - - public static final SubCommand INSTANCE = new BaitCommand(); - - public BaitCommand() { - super("bait", null); - } - - @Override - public boolean onCommand(CommandSender sender, List args) { - if (args.size() < 2) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - } - else if (args.get(0).equalsIgnoreCase("get")) { - if (sender instanceof Player player){ - if (!CustomFishing.getInstance().getEffectManager().getBaitItems().containsKey(args.get(1))) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.itemNotExist); - return true; - } - if (args.size() == 2){ - ItemStackUtil.givePlayerBait(player, args.get(1), 1); - AdventureUtil.playerMessage(player, MessageManager.prefix + MessageManager.getItem.replace("{Amount}", "1").replace("{Item}", args.get(1))); - } else { - if (Integer.parseInt(args.get(2)) < 1){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); - return true; - } - ItemStackUtil.givePlayerBait(player, args.get(1), Integer.parseInt(args.get(2))); - AdventureUtil.playerMessage(player, MessageManager.prefix + MessageManager.getItem.replace("{Amount}", args.get(2)).replace("{Item}", args.get(1))); - } - } else { - AdventureUtil.consoleMessage(MessageManager.prefix + MessageManager.noConsole); - } - } - else if (args.get(0).equalsIgnoreCase("give")) { - if (args.size() < 3){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - return true; - } - Player player = Bukkit.getPlayer(args.get(1)); - if (player == null){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.notOnline.replace("{Player}", args.get(1))); - return true; - } - if (!CustomFishing.getInstance().getEffectManager().getBaitItems().containsKey(args.get(2))) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.itemNotExist); - return true; - } - if (args.size() == 3){ - ItemStackUtil.givePlayerBait(player, args.get(2), 1); - super.giveItemMsg(sender, args.get(1), args.get(2), 1); - } else { - if (Integer.parseInt(args.get(3)) < 1){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); - return true; - } - ItemStackUtil.givePlayerBait(player, args.get(2), Integer.parseInt(args.get(3))); - super.giveItemMsg(sender, args.get(1), args.get(2), Integer.parseInt(args.get(3))); - } - } - return true; - } - - public List onTabComplete(CommandSender sender, List args) { - if (args.size() == 1) { - return List.of("get", "give"); - } else if (args.size() == 2) { - if (args.get(0).equals("get")) { - return filterStartingWith(baits(), args.get(1)); - } else if (args.get(0).equals("give")) { - return filterStartingWith(online_players(), args.get(1)); - } - } else if (args.size() == 3) { - if (args.get(0).equals("get")) { - return List.of("1", "2", "4", "8", "16", "32", "64"); - } else if (args.get(0).equals("give")) { - return filterStartingWith(baits(), args.get(2)); - } - } else if (args.size() == 4 && args.get(0).equals("give")) { - return List.of("1", "2", "4", "8", "16", "32", "64"); - } - return null; - } - - private List baits() { - return new ArrayList<>(CustomFishing.getInstance().getEffectManager().getBaitItems().keySet()); - } -} diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/CompetitionCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/CompetitionCommand.java index 61ffcd9c..f47bea47 100644 --- a/src/main/java/net/momirealms/customfishing/commands/subcmd/CompetitionCommand.java +++ b/src/main/java/net/momirealms/customfishing/commands/subcmd/CompetitionCommand.java @@ -19,7 +19,6 @@ package net.momirealms.customfishing.commands.subcmd; import net.momirealms.customfishing.CustomFishing; import net.momirealms.customfishing.commands.AbstractSubCommand; -import net.momirealms.customfishing.commands.SubCommand; import net.momirealms.customfishing.fishing.competition.CompetitionSchedule; import net.momirealms.customfishing.manager.ConfigManager; import net.momirealms.customfishing.manager.MessageManager; @@ -31,19 +30,15 @@ import java.util.List; public class CompetitionCommand extends AbstractSubCommand { - public static final SubCommand INSTANCE = new CompetitionCommand(); + public static final CompetitionCommand INSTANCE = new CompetitionCommand(); public CompetitionCommand() { - super("competition", null); + super("competition"); } @Override public boolean onCommand(CommandSender sender, List args) { - if (!ConfigManager.enableCompetition) return true; - if (args.size() < 1){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - return true; - } + if (!ConfigManager.enableCompetition || super.lackArgs(sender, 1, args.size())) return true; switch (args.get(0)) { case "start" -> { if (args.size() < 2) { diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/HelpCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/HelpCommand.java new file mode 100644 index 00000000..281aa49e --- /dev/null +++ b/src/main/java/net/momirealms/customfishing/commands/subcmd/HelpCommand.java @@ -0,0 +1,49 @@ +package net.momirealms.customfishing.commands.subcmd; + +import net.momirealms.customfishing.commands.AbstractSubCommand; +import net.momirealms.customfishing.util.AdventureUtil; +import org.bukkit.command.CommandSender; + +import java.util.List; + +public class HelpCommand extends AbstractSubCommand { + + public static final HelpCommand INSTANCE = new HelpCommand(); + + public HelpCommand() { + super("help"); + } + + @Override + public boolean onCommand(CommandSender sender, List args) { + AdventureUtil.sendMessage(sender, "<#4169E1>/customfishing"); + AdventureUtil.sendMessage(sender, " ├─reload <#87CEFA>Reload the plugin"); + AdventureUtil.sendMessage(sender, " ├─forceopenbag <#87CEFA>Force a player to open his fishing bag"); + AdventureUtil.sendMessage(sender, " ├─sellshop <#87CEFA>Force a player to open sell shop"); + AdventureUtil.sendMessage(sender, " ├─competition"); + AdventureUtil.sendMessage(sender, " │ ├─start <#87CEFA>Start a competition"); + AdventureUtil.sendMessage(sender, " │ ├─end <#87CEFA>End the ongoing competition"); + AdventureUtil.sendMessage(sender, " │ └─cancel <#87CEFA>Cancel the ongoing competition"); + AdventureUtil.sendMessage(sender, " ├─items"); + AdventureUtil.sendMessage(sender, " │ ├─loot"); + AdventureUtil.sendMessage(sender, " │ │ ├─get [amount]"); + AdventureUtil.sendMessage(sender, " │ │ ├─give [amount]"); + AdventureUtil.sendMessage(sender, " │ │ └─import <#87CEFA>Import the item in hand"); + AdventureUtil.sendMessage(sender, " │ ├─rod"); + AdventureUtil.sendMessage(sender, " │ │ ├─get [amount]"); + AdventureUtil.sendMessage(sender, " │ │ └─give [amount]"); + AdventureUtil.sendMessage(sender, " │ ├─bait"); + AdventureUtil.sendMessage(sender, " │ │ ├─get [amount]"); + AdventureUtil.sendMessage(sender, " │ │ └─give [amount]"); + AdventureUtil.sendMessage(sender, " │ └─util"); + AdventureUtil.sendMessage(sender, " │ ├─et [amount]"); + AdventureUtil.sendMessage(sender, " │ └─give [amount]"); + AdventureUtil.sendMessage(sender, " └─statistics"); + AdventureUtil.sendMessage(sender, " ├─reset <#87CEFA>Reset a player's statistics"); + AdventureUtil.sendMessage(sender, " └─set <#87CEFA>Set certain statistics' value"); + AdventureUtil.sendMessage(sender, "<#4169E1>/fishingbag"); + AdventureUtil.sendMessage(sender, " └─open [player] <#87CEFA>Open the fishing bag"); + AdventureUtil.sendMessage(sender, "<#4169E1>/sellshop <#87CEFA>Open the sell shop"); + return true; + } +} diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/ImportCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/ImportCommand.java deleted file mode 100644 index 4e4d8876..00000000 --- a/src/main/java/net/momirealms/customfishing/commands/subcmd/ImportCommand.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) <2022> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package net.momirealms.customfishing.commands.subcmd; - -import net.momirealms.customfishing.commands.AbstractSubCommand; -import net.momirealms.customfishing.commands.SubCommand; -import net.momirealms.customfishing.manager.MessageManager; -import net.momirealms.customfishing.util.AdventureUtil; -import net.momirealms.customfishing.util.ItemStackUtil; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.Collections; -import java.util.List; - -public class ImportCommand extends AbstractSubCommand { - - public static final SubCommand INSTANCE = new ImportCommand(); - - public ImportCommand() { - super("import", null); - } - - @Override - public boolean onCommand(CommandSender sender, List args) { - if (args.size() < 1){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - return true; - } else if (sender instanceof Player player) { - if (ItemStackUtil.saveToFile(player.getInventory().getItemInMainHand(), args.get(0))) { - AdventureUtil.playerMessage(player, MessageManager.prefix + "Done! File is saved to /CustomFishing/loots/imported.yml"); - } - else { - AdventureUtil.playerMessage(player, MessageManager.prefix + "Error. The item can't be null or there already exists loot with that key name"); - } - } else { - AdventureUtil.consoleMessage(MessageManager.prefix + MessageManager.noConsole); - } - return true; - } - - @Override - public List onTabComplete(CommandSender sender, List args) { - if (args.size() == 1) { - return Collections.singletonList(""); - } - return super.onTabComplete(sender, args); - } -} \ No newline at end of file diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/LootCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/LootCommand.java deleted file mode 100644 index 23bfbdec..00000000 --- a/src/main/java/net/momirealms/customfishing/commands/subcmd/LootCommand.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (C) <2022> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package net.momirealms.customfishing.commands.subcmd; - -import net.momirealms.customfishing.CustomFishing; -import net.momirealms.customfishing.commands.AbstractSubCommand; -import net.momirealms.customfishing.commands.SubCommand; -import net.momirealms.customfishing.fishing.loot.DroppedItem; -import net.momirealms.customfishing.fishing.loot.Loot; -import net.momirealms.customfishing.manager.MessageManager; -import net.momirealms.customfishing.util.AdventureUtil; -import net.momirealms.customfishing.util.ItemStackUtil; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public class LootCommand extends AbstractSubCommand { - - public static final SubCommand INSTANCE = new LootCommand(); - - public LootCommand() { - super("loot", null); - } - - @Override - public boolean onCommand(CommandSender sender, List args) { - if (args.size() < 2) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - } - else if (args.get(0).equalsIgnoreCase("get")) { - if (sender instanceof Player player){ - if (!loots().contains(args.get(1))){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.itemNotExist); - return true; - } - if (args.size() == 2) { - ItemStackUtil.givePlayerLoot(player, args.get(1), 1); - AdventureUtil.playerMessage(player, MessageManager.prefix + MessageManager.getItem.replace("{Amount}", "1").replace("{Item}", args.get(1))); - } else { - if (Integer.parseInt(args.get(2)) < 1) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); - return true; - } - ItemStackUtil.givePlayerLoot(player, args.get(1), Integer.parseInt(args.get(2))); - AdventureUtil.playerMessage(player, MessageManager.prefix + MessageManager.getItem.replace("{Amount}", args.get(2)).replace("{Item}", args.get(1))); - } - } else { - AdventureUtil.consoleMessage(MessageManager.prefix + MessageManager.noConsole); - } - } - else if (args.get(0).equalsIgnoreCase("give")) { - if (args.size() < 3){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - return true; - } - Player player = Bukkit.getPlayer(args.get(1)); - if (player == null){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.notOnline.replace("{Player}", args.get(1))); - return true; - } - if (!loots().contains(args.get(2))){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.itemNotExist); - return true; - } - if (args.size() == 3){ - ItemStackUtil.givePlayerLoot(player, args.get(2), 1); - super.giveItemMsg(sender, args.get(1), args.get(2), 1); - } else { - if (Integer.parseInt(args.get(3)) < 1){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); - return true; - } - ItemStackUtil.givePlayerLoot(player, args.get(2), Integer.parseInt(args.get(3))); - super.giveItemMsg(sender, args.get(1), args.get(2), Integer.parseInt(args.get(3))); - } - } - return true; - } - - @Override - public List onTabComplete(CommandSender sender, List args) { - if (args.size() == 1) { - return List.of("get", "give"); - } - else if (args.size() == 2) { - if ("get".equals(args.get(0))) { - return filterStartingWith(loots(), args.get(1)); - } - else if ("give".equals(args.get(0))) { - return filterStartingWith(online_players(), args.get(1)); - } - } - else if (args.size() == 3) { - if ("get".equals(args.get(0))) { - return List.of("1", "2", "4", "8", "16", "32", "64"); - } - else if ("give".equals(args.get(0))) { - return filterStartingWith(loots(), args.get(2)); - } - } - else if (args.size() == 4 && "give".equals(args.get(0))) { - return List.of("1", "2", "4", "8", "16", "32", "64"); - } - return null; - } - - private List loots() { - List loots = new ArrayList<>(); - for (Map.Entry en : CustomFishing.getInstance().getLootManager().getWaterLoots().entrySet()) { - if (en.getValue() instanceof DroppedItem) { - loots.add(en.getKey()); - } - } - for (Map.Entry en : CustomFishing.getInstance().getLootManager().getLavaLoots().entrySet()) { - if (en.getValue() instanceof DroppedItem) { - loots.add(en.getKey()); - } - } - return loots; - } -} diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/OpenBagCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/OpenBagCommand.java index 6c015dcf..936a27b7 100644 --- a/src/main/java/net/momirealms/customfishing/commands/subcmd/OpenBagCommand.java +++ b/src/main/java/net/momirealms/customfishing/commands/subcmd/OpenBagCommand.java @@ -2,10 +2,7 @@ package net.momirealms.customfishing.commands.subcmd; import net.momirealms.customfishing.CustomFishing; import net.momirealms.customfishing.commands.AbstractSubCommand; -import net.momirealms.customfishing.commands.SubCommand; import net.momirealms.customfishing.manager.ConfigManager; -import net.momirealms.customfishing.manager.MessageManager; -import net.momirealms.customfishing.util.AdventureUtil; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -14,37 +11,30 @@ import java.util.List; public class OpenBagCommand extends AbstractSubCommand { - public static final SubCommand INSTANCE = new OpenBagCommand(); + public static final OpenBagCommand INSTANCE = new OpenBagCommand(); private OpenBagCommand() { - super("forceopenbag", null); + super("forceopenbag"); } @Override public boolean onCommand(CommandSender sender, List args) { - if (!ConfigManager.enableFishingBag) return true; - if (args.size() < 1){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - return true; - } - if (args.size() == 1) { - Player viewer = Bukkit.getPlayer(args.get(0)); - if (viewer == null) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.playerNotExist); - return true; - } - viewer.closeInventory(); - CustomFishing.getInstance().getBagDataManager().openFishingBag(viewer, viewer, false); - } + if (!ConfigManager.enableFishingBag + || super.lackArgs(sender, 1, args.size()) + || playerNotOnline(sender, args.get(0)) + ) return true; + Player viewer = Bukkit.getPlayer(args.get(0)); + assert viewer != null; + viewer.closeInventory(); + CustomFishing.getInstance().getBagDataManager().openFishingBag(viewer, viewer, false); return true; } @Override public List onTabComplete(CommandSender sender, List args) { - if (!ConfigManager.enableFishingBag) return null; - if (args.size() == 1) { + if (ConfigManager.enableFishingBag && args.size() == 1) { return filterStartingWith(online_players(), args.get(0)); } - return super.onTabComplete(sender, args); + return null; } -} +} \ No newline at end of file diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/ReloadCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/ReloadCommand.java index 221b8804..09e34e84 100644 --- a/src/main/java/net/momirealms/customfishing/commands/subcmd/ReloadCommand.java +++ b/src/main/java/net/momirealms/customfishing/commands/subcmd/ReloadCommand.java @@ -20,7 +20,6 @@ package net.momirealms.customfishing.commands.subcmd; import net.momirealms.customfishing.CustomFishing; import net.momirealms.customfishing.commands.AbstractSubCommand; -import net.momirealms.customfishing.commands.SubCommand; import net.momirealms.customfishing.manager.MessageManager; import net.momirealms.customfishing.util.AdventureUtil; import org.bukkit.command.CommandSender; @@ -29,20 +28,17 @@ import java.util.List; public final class ReloadCommand extends AbstractSubCommand { - public static final SubCommand INSTANCE = new ReloadCommand(); + public static final ReloadCommand INSTANCE = new ReloadCommand(); private ReloadCommand() { - super("reload", null); + super("reload"); } @Override public boolean onCommand(CommandSender sender, List args) { - if (args.size() < 1) { - long time1 = System.currentTimeMillis(); - CustomFishing.getInstance().reload(); - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.reload.replace("{time}", String.valueOf(System.currentTimeMillis() - time1))); - return true; - } - return super.onCommand(sender, args); + long time1 = System.currentTimeMillis(); + CustomFishing.getInstance().reload(); + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.reload.replace("{time}", String.valueOf(System.currentTimeMillis() - time1))); + return true; } } diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/RodCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/RodCommand.java deleted file mode 100644 index 2135b325..00000000 --- a/src/main/java/net/momirealms/customfishing/commands/subcmd/RodCommand.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (C) <2022> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package net.momirealms.customfishing.commands.subcmd; - -import net.momirealms.customfishing.CustomFishing; -import net.momirealms.customfishing.commands.AbstractSubCommand; -import net.momirealms.customfishing.commands.SubCommand; -import net.momirealms.customfishing.manager.MessageManager; -import net.momirealms.customfishing.util.AdventureUtil; -import net.momirealms.customfishing.util.ItemStackUtil; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.List; - -public class RodCommand extends AbstractSubCommand { - - public static final SubCommand INSTANCE = new RodCommand(); - - public RodCommand() { - super("rod", null); - } - - @Override - public boolean onCommand(CommandSender sender, List args) { - if (args.size() < 2) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - return true; - } - if (args.get(0).equalsIgnoreCase("get")) { - if (sender instanceof Player player){ - if (!CustomFishing.getInstance().getEffectManager().getRodItems().containsKey(args.get(1))){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.itemNotExist); - return true; - } - if (args.size() == 2){ - ItemStackUtil.givePlayerRod(player, args.get(1), 1); - AdventureUtil.playerMessage(player, MessageManager.prefix + MessageManager.getItem.replace("{Amount}", "1").replace("{Item}", args.get(1))); - } else { - if (Integer.parseInt(args.get(2)) < 1){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); - return true; - } - ItemStackUtil.givePlayerRod(player, args.get(1), Integer.parseInt(args.get(2))); - AdventureUtil.playerMessage(player, MessageManager.prefix + MessageManager.getItem.replace("{Amount}", args.get(2)).replace("{Item}", args.get(1))); - } - } else { - AdventureUtil.consoleMessage(MessageManager.prefix + MessageManager.noConsole); - } - } - else if (args.get(0).equalsIgnoreCase("give")) { - if (args.size() < 3){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - return true; - } - Player player = Bukkit.getPlayer(args.get(1)); - if (player == null){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.notOnline.replace("{Player}", args.get(1))); - return true; - } - if (!CustomFishing.getInstance().getEffectManager().getRodItems().containsKey(args.get(2))){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.itemNotExist); - return true; - } - if (args.size() == 3) { - ItemStackUtil.givePlayerRod(player, args.get(2), 1); - super.giveItemMsg(sender, args.get(1), args.get(2), 1); - } else { - if (Integer.parseInt(args.get(3)) < 1) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); - return true; - } - ItemStackUtil.givePlayerRod(player, args.get(2), Integer.parseInt(args.get(3))); - super.giveItemMsg(sender, args.get(1), args.get(2), Integer.parseInt(args.get(3))); - } - } - return true; - } - - @Override - public List onTabComplete(CommandSender sender, List args) { - if (args.size() == 1) { - return List.of("get", "give"); - } else if (args.size() == 2) { - if (args.get(0).equals("get")) { - return filterStartingWith(rods(), args.get(1)); - } else if (args.get(0).equals("give")) { - return filterStartingWith(online_players(), args.get(1)); - } - } else if (args.size() == 3) { - if (args.get(0).equals("get")) { - return List.of("1","2","4","8","16","32","64"); - } else if (args.get(0).equals("give")) { - return filterStartingWith(rods(), args.get(2)); - } - } else if (args.size() == 4 && args.get(0).equals("give")) { - return List.of("1","2","4","8","16","32","64"); - } - return null; - } - - private List rods() { - return new ArrayList<>(CustomFishing.getInstance().getEffectManager().getRodItems().keySet()); - } -} diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/SellShopCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/SellShopCommand.java index 5f2e2678..59dad37e 100644 --- a/src/main/java/net/momirealms/customfishing/commands/subcmd/SellShopCommand.java +++ b/src/main/java/net/momirealms/customfishing/commands/subcmd/SellShopCommand.java @@ -2,9 +2,6 @@ package net.momirealms.customfishing.commands.subcmd; import net.momirealms.customfishing.CustomFishing; import net.momirealms.customfishing.commands.AbstractSubCommand; -import net.momirealms.customfishing.commands.SubCommand; -import net.momirealms.customfishing.manager.MessageManager; -import net.momirealms.customfishing.util.AdventureUtil; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -13,25 +10,19 @@ import java.util.List; public class SellShopCommand extends AbstractSubCommand { - public static final SubCommand INSTANCE = new SellShopCommand(); + public static final SellShopCommand INSTANCE = new SellShopCommand(); public SellShopCommand() { - super("sellshop", null); + super("sellshop"); } @Override public boolean onCommand(CommandSender sender, List args) { - if (args.size() < 1) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - return true; - } - + if (super.lackArgs(sender, 1, args.size()) + || playerNotOnline(sender, args.get(0)) + ) return true; Player player = Bukkit.getPlayer(args.get(0)); - if (player == null) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.notOnline.replace("{Player}", args.get(0))); - return true; - } - + assert player != null; player.closeInventory(); CustomFishing.getInstance().getSellManager().openGuiForPlayer(player); return true; @@ -39,6 +30,9 @@ public class SellShopCommand extends AbstractSubCommand { @Override public List onTabComplete(CommandSender sender, List args) { - return online_players(); + if (args.size() == 1) { + return filterStartingWith(online_players(), args.get(0)); + } + return null; } } diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/StatisticsCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/StatisticsCommand.java index 8b692106..6ca0b94d 100644 --- a/src/main/java/net/momirealms/customfishing/commands/subcmd/StatisticsCommand.java +++ b/src/main/java/net/momirealms/customfishing/commands/subcmd/StatisticsCommand.java @@ -2,7 +2,6 @@ package net.momirealms.customfishing.commands.subcmd; import net.momirealms.customfishing.CustomFishing; import net.momirealms.customfishing.commands.AbstractSubCommand; -import net.momirealms.customfishing.commands.SubCommand; import net.momirealms.customfishing.fishing.loot.Loot; import net.momirealms.customfishing.manager.ConfigManager; import net.momirealms.customfishing.manager.MessageManager; @@ -16,55 +15,49 @@ import java.util.stream.Collectors; public class StatisticsCommand extends AbstractSubCommand { - public static final SubCommand INSTANCE = new StatisticsCommand(); + public static final StatisticsCommand INSTANCE = new StatisticsCommand(); public StatisticsCommand() { - super("statistics", null); + super("statistics"); regSubCommand(SetCommand.INSTANCE); regSubCommand(ResetCommand.INSTANCE); } public static class SetCommand extends AbstractSubCommand { - public static final SubCommand INSTANCE = new SetCommand(); + public static final SetCommand INSTANCE = new SetCommand(); public SetCommand() { - super("set", null); + super("set"); } @Override public boolean onCommand(CommandSender sender, List args) { - if (!ConfigManager.enableStatistics) return true; - if (args.size() < 3) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - return true; - } + if (!ConfigManager.enableStatistics + || super.lackArgs(sender, 3, args.size()) + || super.playerNotOnline(sender, args.get(0)) + ) return true; int amount = Integer.parseInt(args.get(2)); if (amount < 0) { AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.negativeStatistics); return true; } - if (CustomFishing.getInstance().getLootManager().hasLoot(args.get(1))) { - Player player = Bukkit.getPlayer(args.get(0)); - if (player != null) { - CustomFishing.getInstance().getStatisticsManager().setData(player.getUniqueId(), args.get(1), amount); - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.setStatistics.replace("{Player}", args.get(0)).replace("{Amount}", args.get(2)).replace("{Loot}", args.get(1))); - } - else { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.notOnline.replace("{Player}", args.get(0))); - } - } - else { + Loot loot = CustomFishing.getInstance().getLootManager().getLoot(args.get(1)); + if (loot == null || loot.isDisableStats()) { AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.statisticsNotExists); + return true; } + Player player = Bukkit.getPlayer(args.get(0)); + assert player != null; + CustomFishing.getInstance().getStatisticsManager().setData(player.getUniqueId(), args.get(1), amount); + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.setStatistics.replace("{Player}", args.get(0)).replace("{Amount}", args.get(2)).replace("{Loot}", args.get(1))); return true; } + @Override public List onTabComplete(CommandSender sender, List args) { if (args.size() == 1) { - return online_players().stream() - .filter(player_name -> player_name.startsWith(args.get(0))) - .collect(Collectors.toList()); + return filterStartingWith(online_players(), args.get(0)); } if (args.size() == 2) { return CustomFishing.getInstance().getLootManager().getAllLoots().stream() @@ -73,48 +66,37 @@ public class StatisticsCommand extends AbstractSubCommand { .collect(Collectors.toList()); } if (args.size() == 3) { - return List.of("0","1","2","4","8","16","32","64"); + return filterStartingWith(List.of("0","1","2","4","8","16","32","64"), args.get(2)); } - return super.onTabComplete(sender, args); + return null; } } public static class ResetCommand extends AbstractSubCommand { - public static final SubCommand INSTANCE = new ResetCommand(); + public static final ResetCommand INSTANCE = new ResetCommand(); public ResetCommand() { - super("reset", null); + super("reset"); } @Override public boolean onCommand(CommandSender sender, List args) { - if (!ConfigManager.enableStatistics) return true; - if (args.size() < 1) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - return true; - } + if (!ConfigManager.enableStatistics + || super.lackArgs(sender, 1, args.size()) + || super.playerNotOnline(sender, args.get(0)) + ) return true; Player player = Bukkit.getPlayer(args.get(0)); - if (player != null) { - if (CustomFishing.getInstance().getStatisticsManager().reset(player.getUniqueId())) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.resetStatistics); - } - else { - AdventureUtil.sendMessage(sender, MessageManager.prefix + "Internal Error, player's data is not loaded"); - } - } - else { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.notOnline.replace("{Player}", args.get(0))); - } + assert player != null; + if (CustomFishing.getInstance().getStatisticsManager().reset(player.getUniqueId())) AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.resetStatistics); + else AdventureUtil.sendMessage(sender, MessageManager.prefix + "Internal Error, player's data is not loaded"); return true; } @Override public List onTabComplete(CommandSender sender, List args) { if (args.size() == 1) { - return online_players().stream() - .filter(player_name -> player_name.startsWith(args.get(0))) - .collect(Collectors.toList()); + return filterStartingWith(online_players(), args.get(0)); } return null; } diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/UtilCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/UtilCommand.java deleted file mode 100644 index 3bfbd42a..00000000 --- a/src/main/java/net/momirealms/customfishing/commands/subcmd/UtilCommand.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (C) <2022> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package net.momirealms.customfishing.commands.subcmd; - -import net.momirealms.customfishing.CustomFishing; -import net.momirealms.customfishing.commands.AbstractSubCommand; -import net.momirealms.customfishing.commands.SubCommand; -import net.momirealms.customfishing.manager.MessageManager; -import net.momirealms.customfishing.util.AdventureUtil; -import net.momirealms.customfishing.util.ItemStackUtil; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.List; - -public class UtilCommand extends AbstractSubCommand { - - public static final SubCommand INSTANCE = new UtilCommand(); - - public UtilCommand() { - super("util", null); - } - - @Override - public boolean onCommand(CommandSender sender, List args) { - if (args.size() < 2) { - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - } - else if (args.get(0).equalsIgnoreCase("get")) { - if (sender instanceof Player player){ - if (!CustomFishing.getInstance().getEffectManager().getUtilItems().containsKey(args.get(1))){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.itemNotExist); - return true; - } - if (args.size() == 2){ - ItemStackUtil.givePlayerUtil(player, args.get(1), 1); - AdventureUtil.playerMessage(player, MessageManager.prefix + MessageManager.getItem.replace("{Amount}", "1").replace("{Item}", args.get(1))); - } else { - if (Integer.parseInt(args.get(2)) < 1){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); - return true; - } - ItemStackUtil.givePlayerUtil(player, args.get(1), Integer.parseInt(args.get(2))); - AdventureUtil.playerMessage(player, MessageManager.prefix + MessageManager.getItem.replace("{Amount}", args.get(2)).replace("{Item}", args.get(1))); - } - } else { - AdventureUtil.consoleMessage(MessageManager.prefix + MessageManager.noConsole); - } - } - else if (args.get(0).equalsIgnoreCase("give")) { - if (args.size() < 3){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.lackArgs); - return true; - } - Player player = Bukkit.getPlayer(args.get(1)); - if (player == null){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.notOnline.replace("{Player}", args.get(1))); - return true; - } - if (!CustomFishing.getInstance().getEffectManager().getUtilItems().containsKey(args.get(2))){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.itemNotExist); - return true; - } - if (args.size() == 3){ - ItemStackUtil.givePlayerUtil(player, args.get(2), 1); - super.giveItemMsg(sender, args.get(1), args.get(2), 1); - } else { - if (Integer.parseInt(args.get(3)) < 1){ - AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); - return true; - } - ItemStackUtil.givePlayerUtil(player, args.get(2), Integer.parseInt(args.get(3))); - super.giveItemMsg(sender, args.get(1), args.get(2), Integer.parseInt(args.get(3))); - } - } - return true; - } - - @Override - public List onTabComplete(CommandSender sender, List args) { - if (args.size() == 1) { - return List.of("get", "give"); - } else if (args.size() == 2) { - if (args.get(0).equals("get")) { - return filterStartingWith(utils(), args.get(1)); - } else if (args.get(0).equals("give")) { - return filterStartingWith(online_players(), args.get(1)); - } - } else if (args.size() == 3) { - if (args.get(0).equals("get")) { - return List.of("1","2","4","8","16","32","64"); - } else if (args.get(0).equals("give")) { - return filterStartingWith(utils(), args.get(2)); - } - } else if (args.size() == 4 && args.get(0).equals("give")) { - return List.of("1","2","4","8","16","32","64"); - } - return null; - } - - private List utils() { - return new ArrayList<>(CustomFishing.getInstance().getEffectManager().getUtilItems().keySet()); - } -} diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/item/BaitCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/item/BaitCommand.java new file mode 100644 index 00000000..ece3853c --- /dev/null +++ b/src/main/java/net/momirealms/customfishing/commands/subcmd/item/BaitCommand.java @@ -0,0 +1,122 @@ +/* + * Copyright (C) <2022> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.momirealms.customfishing.commands.subcmd.item; + +import net.momirealms.customfishing.CustomFishing; +import net.momirealms.customfishing.commands.AbstractSubCommand; +import net.momirealms.customfishing.manager.MessageManager; +import net.momirealms.customfishing.util.AdventureUtil; +import net.momirealms.customfishing.util.ItemStackUtil; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +public class BaitCommand extends AbstractSubCommand { + + public static final BaitCommand INSTANCE = new BaitCommand(); + + public BaitCommand() { + super("bait"); + regSubCommand(GetCommand.INSTANCE); + regSubCommand(GiveCommand.INSTANCE); + } + + public static class GetCommand extends AbstractSubCommand { + + public static final GetCommand INSTANCE = new GetCommand(); + + public GetCommand() { + super("get"); + } + + @Override + public boolean onCommand(CommandSender sender, List args) { + if (super.lackArgs(sender, 1, args.size()) + || super.noConsoleExecute(sender) + || super.itemNotExist(sender, "bait", args.get(0)) + ) return true; + if (args.size() == 1){ + ItemStackUtil.givePlayerBait((Player) sender, args.get(0), 1); + super.getItemMsg(sender, args.get(0), 1); + } else { + if (Integer.parseInt(args.get(1)) < 1){ + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); + return true; + } + ItemStackUtil.givePlayerBait((Player) sender, args.get(0), Integer.parseInt(args.get(1))); + super.getItemMsg(sender, args.get(0), Integer.parseInt(args.get(1))); + } + return true; + } + + @Override + public List onTabComplete(CommandSender sender, List args) { + if (args.size() == 1) { + return filterStartingWith(new ArrayList<>(CustomFishing.getInstance().getEffectManager().getBaitItems().keySet()), args.get(0)); + } else if (args.size() == 2) { + return filterStartingWith(List.of("1", "2", "4", "8", "16", "32", "64"), args.get(1)); + } + return null; + } + } + + public static class GiveCommand extends AbstractSubCommand { + + public static final GiveCommand INSTANCE = new GiveCommand(); + + public GiveCommand() { + super("give"); + } + + @Override + public boolean onCommand(CommandSender sender, List args) { + if (super.lackArgs(sender, 2, args.size()) + || playerNotOnline(sender, args.get(0)) + || itemNotExist(sender, "bait", args.get(1)) + ) return true; + if (args.size() == 2){ + ItemStackUtil.givePlayerBait(Bukkit.getPlayer(args.get(0)), args.get(1), 1); + super.giveItemMsg(sender, args.get(0), args.get(1), 1); + } + else if (args.size() == 3) { + if (Integer.parseInt(args.get(2)) < 1) { + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); + return true; + } + ItemStackUtil.givePlayerBait(Bukkit.getPlayer(args.get(0)), args.get(1), Integer.parseInt(args.get(2))); + super.giveItemMsg(sender, args.get(0), args.get(1), Integer.parseInt(args.get(2))); + } + return true; + } + + @Override + public List onTabComplete(CommandSender sender, List args) { + if (args.size() == 1) { + return filterStartingWith(online_players(), args.get(0)); + } else if (args.size() == 2) { + return filterStartingWith(new ArrayList<>(CustomFishing.getInstance().getEffectManager().getBaitItems().keySet()), args.get(1)); + } else if (args.size() == 3) { + return filterStartingWith(List.of("1", "2", "4", "8", "16", "32", "64"), args.get(2)); + } + return null; + } + } +} diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/ItemsCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/item/ItemsCommand.java similarity index 64% rename from src/main/java/net/momirealms/customfishing/commands/subcmd/ItemsCommand.java rename to src/main/java/net/momirealms/customfishing/commands/subcmd/item/ItemsCommand.java index 4697f8fa..9715b00c 100644 --- a/src/main/java/net/momirealms/customfishing/commands/subcmd/ItemsCommand.java +++ b/src/main/java/net/momirealms/customfishing/commands/subcmd/item/ItemsCommand.java @@ -15,33 +15,19 @@ * along with this program. If not, see . */ -package net.momirealms.customfishing.commands.subcmd; +package net.momirealms.customfishing.commands.subcmd.item; import net.momirealms.customfishing.commands.AbstractSubCommand; -import net.momirealms.customfishing.commands.SubCommand; -import org.bukkit.command.CommandSender; - -import java.util.List; public class ItemsCommand extends AbstractSubCommand { - public static final SubCommand INSTANCE = new ItemsCommand(); + public static final ItemsCommand INSTANCE = new ItemsCommand(); public ItemsCommand() { - super("items", null); + super("items"); regSubCommand(UtilCommand.INSTANCE); regSubCommand(RodCommand.INSTANCE); regSubCommand(BaitCommand.INSTANCE); regSubCommand(LootCommand.INSTANCE); } - - @Override - public boolean onCommand(CommandSender sender, List args) { - return super.onCommand(sender, args); - } - - @Override - public List onTabComplete(CommandSender sender, List args) { - return super.onTabComplete(sender, args); - } } diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/item/LootCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/item/LootCommand.java new file mode 100644 index 00000000..caf88a90 --- /dev/null +++ b/src/main/java/net/momirealms/customfishing/commands/subcmd/item/LootCommand.java @@ -0,0 +1,152 @@ +/* + * Copyright (C) <2022> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.momirealms.customfishing.commands.subcmd.item; + +import net.momirealms.customfishing.CustomFishing; +import net.momirealms.customfishing.commands.AbstractSubCommand; +import net.momirealms.customfishing.manager.MessageManager; +import net.momirealms.customfishing.util.AdventureUtil; +import net.momirealms.customfishing.util.ItemStackUtil; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class LootCommand extends AbstractSubCommand { + + public static final LootCommand INSTANCE = new LootCommand(); + + public LootCommand() { + super("loot"); + regSubCommand(GiveCommand.INSTANCE); + regSubCommand(GetCommand.INSTANCE); + regSubCommand(ImportCommand.INSTANCE); + } + + public static class GiveCommand extends AbstractSubCommand { + + public static final GiveCommand INSTANCE = new GiveCommand(); + + public GiveCommand() { + super("give"); + } + + @Override + public boolean onCommand(CommandSender sender, List args) { + if (super.lackArgs(sender, 2, args.size()) + || playerNotOnline(sender, args.get(0)) + || itemNotExist(sender, "loot", args.get(1)) + ) return true; + if (args.size() == 2){ + ItemStackUtil.givePlayerLoot(Bukkit.getPlayer(args.get(0)), args.get(1), 1); + super.giveItemMsg(sender, args.get(0), args.get(1), 1); + } + else if (args.size() == 3) { + if (Integer.parseInt(args.get(2)) < 1) { + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); + return true; + } + ItemStackUtil.givePlayerLoot(Bukkit.getPlayer(args.get(0)), args.get(1), Integer.parseInt(args.get(2))); + super.giveItemMsg(sender, args.get(0), args.get(1), Integer.parseInt(args.get(2))); + } + return true; + } + + @Override + public List onTabComplete(CommandSender sender, List args) { + if (args.size() == 1) { + return filterStartingWith(online_players(), args.get(0)); + } else if (args.size() == 2) { + return filterStartingWith(new ArrayList<>(CustomFishing.getInstance().getLootManager().getAllKeys()), args.get(1)); + } else if (args.size() == 3) { + return filterStartingWith(List.of("1", "2", "4", "8", "16", "32", "64"), args.get(2)); + } + return null; + } + } + + public static class GetCommand extends AbstractSubCommand { + + public static final GetCommand INSTANCE = new GetCommand(); + + public GetCommand() { + super("get"); + } + + @Override + public boolean onCommand(CommandSender sender, List args) { + if (super.lackArgs(sender, 1, args.size()) + || super.noConsoleExecute(sender) + || super.itemNotExist(sender, "loot", args.get(0)) + ) return true; + if (args.size() == 1){ + ItemStackUtil.givePlayerLoot((Player) sender, args.get(0), 1); + super.getItemMsg(sender, args.get(0), 1); + } else { + if (Integer.parseInt(args.get(1)) < 1){ + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); + return true; + } + ItemStackUtil.givePlayerLoot((Player) sender, args.get(0), Integer.parseInt(args.get(1))); + super.getItemMsg(sender, args.get(0), Integer.parseInt(args.get(1))); + } + return true; + } + + @Override + public List onTabComplete(CommandSender sender, List args) { + if (args.size() == 1) { + return filterStartingWith(CustomFishing.getInstance().getLootManager().getAllKeys(), args.get(0)); + } else if (args.size() == 2) { + return filterStartingWith(List.of("1", "2", "4", "8", "16", "32", "64"), args.get(1)); + } + return null; + } + } + + public static class ImportCommand extends AbstractSubCommand { + + public static final ImportCommand INSTANCE = new ImportCommand(); + + public ImportCommand() { + super("import"); + } + + @Override + public boolean onCommand(CommandSender sender, List args) { + if (super.noConsoleExecute(sender) + || lackArgs(sender, 1, args.size()) + ) return true; + Player player = (Player) sender; + if (ItemStackUtil.saveToFile(player.getInventory().getItemInMainHand(), args.get(0))) AdventureUtil.playerMessage(player, MessageManager.prefix + "Done! File is saved to /CustomFishing/loots/imported.yml"); + else AdventureUtil.playerMessage(player, MessageManager.prefix + "Error. The item can't be null or there already exists loot with that key name"); + return true; + } + + @Override + public List onTabComplete(CommandSender sender, List args) { + if (args.size() == 1) { + return Collections.singletonList(""); + } + return super.onTabComplete(sender, args); + } + } +} diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/item/RodCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/item/RodCommand.java new file mode 100644 index 00000000..b039bd6e --- /dev/null +++ b/src/main/java/net/momirealms/customfishing/commands/subcmd/item/RodCommand.java @@ -0,0 +1,122 @@ +/* + * Copyright (C) <2022> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.momirealms.customfishing.commands.subcmd.item; + +import net.momirealms.customfishing.CustomFishing; +import net.momirealms.customfishing.commands.AbstractSubCommand; +import net.momirealms.customfishing.manager.MessageManager; +import net.momirealms.customfishing.util.AdventureUtil; +import net.momirealms.customfishing.util.ItemStackUtil; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +public class RodCommand extends AbstractSubCommand { + + public static final RodCommand INSTANCE = new RodCommand(); + + public RodCommand() { + super("rod"); + regSubCommand(GetCommand.INSTANCE); + regSubCommand(GiveCommand.INSTANCE); + } + + public static class GiveCommand extends AbstractSubCommand { + + public static final GiveCommand INSTANCE = new GiveCommand(); + + public GiveCommand() { + super("give"); + } + + @Override + public boolean onCommand(CommandSender sender, List args) { + if (super.lackArgs(sender, 2, args.size()) + || playerNotOnline(sender, args.get(0)) + || itemNotExist(sender, "rod", args.get(1)) + ) return true; + if (args.size() == 2){ + ItemStackUtil.givePlayerRod(Bukkit.getPlayer(args.get(0)), args.get(1), 1); + super.giveItemMsg(sender, args.get(0), args.get(1), 1); + } + else if (args.size() == 3) { + if (Integer.parseInt(args.get(2)) < 1) { + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); + return true; + } + ItemStackUtil.givePlayerRod(Bukkit.getPlayer(args.get(0)), args.get(1), Integer.parseInt(args.get(2))); + super.giveItemMsg(sender, args.get(0), args.get(1), Integer.parseInt(args.get(2))); + } + return true; + } + + @Override + public List onTabComplete(CommandSender sender, List args) { + if (args.size() == 1) { + return filterStartingWith(online_players(), args.get(0)); + } else if (args.size() == 2) { + return filterStartingWith(new ArrayList<>(CustomFishing.getInstance().getEffectManager().getRodItems().keySet()), args.get(1)); + } else if (args.size() == 3) { + return filterStartingWith(List.of("1", "2", "4", "8", "16", "32", "64"), args.get(2)); + } + return null; + } + } + + public static class GetCommand extends AbstractSubCommand { + + public static final GetCommand INSTANCE = new GetCommand(); + + public GetCommand() { + super("get"); + } + + @Override + public boolean onCommand(CommandSender sender, List args) { + if (super.lackArgs(sender, 1, args.size()) + || super.noConsoleExecute(sender) + || super.itemNotExist(sender, "rod", args.get(0)) + ) return true; + if (args.size() == 1){ + ItemStackUtil.givePlayerRod((Player) sender, args.get(0), 1); + super.getItemMsg(sender, args.get(0), 1); + } else { + if (Integer.parseInt(args.get(1)) < 1){ + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); + return true; + } + ItemStackUtil.givePlayerRod((Player) sender, args.get(0), Integer.parseInt(args.get(1))); + super.getItemMsg(sender, args.get(0), Integer.parseInt(args.get(1))); + } + return true; + } + + @Override + public List onTabComplete(CommandSender sender, List args) { + if (args.size() == 1) { + return filterStartingWith(new ArrayList<>(CustomFishing.getInstance().getEffectManager().getRodItems().keySet()), args.get(0)); + } else if (args.size() == 2) { + return filterStartingWith(List.of("1", "2", "4", "8", "16", "32", "64"), args.get(1)); + } + return null; + } + } +} diff --git a/src/main/java/net/momirealms/customfishing/commands/subcmd/item/UtilCommand.java b/src/main/java/net/momirealms/customfishing/commands/subcmd/item/UtilCommand.java new file mode 100644 index 00000000..d47ddc15 --- /dev/null +++ b/src/main/java/net/momirealms/customfishing/commands/subcmd/item/UtilCommand.java @@ -0,0 +1,122 @@ +/* + * Copyright (C) <2022> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.momirealms.customfishing.commands.subcmd.item; + +import net.momirealms.customfishing.CustomFishing; +import net.momirealms.customfishing.commands.AbstractSubCommand; +import net.momirealms.customfishing.manager.MessageManager; +import net.momirealms.customfishing.util.AdventureUtil; +import net.momirealms.customfishing.util.ItemStackUtil; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +public class UtilCommand extends AbstractSubCommand { + + public static final UtilCommand INSTANCE = new UtilCommand(); + + public UtilCommand() { + super("util"); + regSubCommand(GetCommand.INSTANCE); + regSubCommand(GiveCommand.INSTANCE); + } + + public static class GetCommand extends AbstractSubCommand { + + public static final GetCommand INSTANCE = new GetCommand(); + + public GetCommand() { + super("get"); + } + + @Override + public boolean onCommand(CommandSender sender, List args) { + if (super.lackArgs(sender, 1, args.size()) + || super.noConsoleExecute(sender) + || super.itemNotExist(sender, "util", args.get(0)) + ) return true; + if (args.size() == 1){ + ItemStackUtil.givePlayerUtil((Player) sender, args.get(0), 1); + super.getItemMsg(sender, args.get(0), 1); + } else { + if (Integer.parseInt(args.get(1)) < 1){ + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); + return true; + } + ItemStackUtil.givePlayerUtil((Player) sender, args.get(0), Integer.parseInt(args.get(1))); + super.getItemMsg(sender, args.get(0), Integer.parseInt(args.get(1))); + } + return true; + } + + @Override + public List onTabComplete(CommandSender sender, List args) { + if (args.size() == 1) { + return filterStartingWith(new ArrayList<>(CustomFishing.getInstance().getEffectManager().getUtilItems().keySet()), args.get(0)); + } else if (args.size() == 2) { + return filterStartingWith(List.of("1", "2", "4", "8", "16", "32", "64"), args.get(1)); + } + return null; + } + } + + public static class GiveCommand extends AbstractSubCommand { + + public static final GiveCommand INSTANCE = new GiveCommand(); + + public GiveCommand() { + super("give"); + } + + @Override + public boolean onCommand(CommandSender sender, List args) { + if (super.lackArgs(sender, 2, args.size()) + || playerNotOnline(sender, args.get(0)) + || itemNotExist(sender, "util", args.get(1)) + ) return true; + if (args.size() == 2){ + ItemStackUtil.givePlayerUtil(Bukkit.getPlayer(args.get(0)), args.get(1), 1); + super.giveItemMsg(sender, args.get(0), args.get(1), 1); + } + else if (args.size() == 3) { + if (Integer.parseInt(args.get(2)) < 1) { + AdventureUtil.sendMessage(sender, MessageManager.prefix + MessageManager.wrongAmount); + return true; + } + ItemStackUtil.givePlayerUtil(Bukkit.getPlayer(args.get(0)), args.get(1), Integer.parseInt(args.get(2))); + super.giveItemMsg(sender, args.get(0), args.get(1), Integer.parseInt(args.get(2))); + } + return true; + } + + @Override + public List onTabComplete(CommandSender sender, List args) { + if (args.size() == 1) { + return filterStartingWith(online_players(), args.get(0)); + } else if (args.size() == 2) { + return filterStartingWith(new ArrayList<>(CustomFishing.getInstance().getEffectManager().getUtilItems().keySet()), args.get(1)); + } else if (args.size() == 3) { + return filterStartingWith(List.of("1", "2", "4", "8", "16", "32", "64"), args.get(2)); + } + return null; + } + } +} \ No newline at end of file diff --git a/src/main/java/net/momirealms/customfishing/fishing/action/VanillaXPImpl.java b/src/main/java/net/momirealms/customfishing/fishing/action/VanillaXPImpl.java index 4071748e..8ad105b4 100644 --- a/src/main/java/net/momirealms/customfishing/fishing/action/VanillaXPImpl.java +++ b/src/main/java/net/momirealms/customfishing/fishing/action/VanillaXPImpl.java @@ -21,7 +21,6 @@ import net.kyori.adventure.key.Key; import net.kyori.adventure.sound.Sound; import net.momirealms.customfishing.CustomFishing; import net.momirealms.customfishing.util.AdventureUtil; -import org.bukkit.entity.EntityType; import org.bukkit.entity.ExperienceOrb; import org.bukkit.entity.Player; diff --git a/src/main/java/net/momirealms/customfishing/fishing/mode/ModeOneGame.java b/src/main/java/net/momirealms/customfishing/fishing/mode/ModeOneGame.java index 4e5986b7..47485b1c 100644 --- a/src/main/java/net/momirealms/customfishing/fishing/mode/ModeOneGame.java +++ b/src/main/java/net/momirealms/customfishing/fishing/mode/ModeOneGame.java @@ -21,7 +21,6 @@ import net.momirealms.customfishing.CustomFishing; import net.momirealms.customfishing.fishing.bar.ModeOneBar; import net.momirealms.customfishing.manager.FishingManager; import net.momirealms.customfishing.util.AdventureUtil; -import org.bukkit.entity.FishHook; import org.bukkit.entity.Player; public class ModeOneGame extends FishingGame { diff --git a/src/main/java/net/momirealms/customfishing/fishing/totem/ActivatedTotem.java b/src/main/java/net/momirealms/customfishing/fishing/totem/ActivatedTotem.java index dfbd3d77..832567da 100644 --- a/src/main/java/net/momirealms/customfishing/fishing/totem/ActivatedTotem.java +++ b/src/main/java/net/momirealms/customfishing/fishing/totem/ActivatedTotem.java @@ -30,7 +30,6 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Set; -import java.util.stream.Collectors; public class ActivatedTotem extends BukkitRunnable { diff --git a/src/main/java/net/momirealms/customfishing/integration/job/JobsRebornImpl.java b/src/main/java/net/momirealms/customfishing/integration/job/JobsRebornImpl.java index a503dbd2..72e5bffd 100644 --- a/src/main/java/net/momirealms/customfishing/integration/job/JobsRebornImpl.java +++ b/src/main/java/net/momirealms/customfishing/integration/job/JobsRebornImpl.java @@ -18,7 +18,6 @@ package net.momirealms.customfishing.integration.job; import com.gamingmesh.jobs.Jobs; -import com.gamingmesh.jobs.PlayerManager; import com.gamingmesh.jobs.container.Job; import com.gamingmesh.jobs.container.JobProgression; import com.gamingmesh.jobs.container.JobsPlayer; diff --git a/src/main/java/net/momirealms/customfishing/integration/quest/OldBetonQuestCFQuest.java b/src/main/java/net/momirealms/customfishing/integration/quest/OldBetonQuestCFQuest.java index e736afc9..83a2ef98 100644 --- a/src/main/java/net/momirealms/customfishing/integration/quest/OldBetonQuestCFQuest.java +++ b/src/main/java/net/momirealms/customfishing/integration/quest/OldBetonQuestCFQuest.java @@ -31,7 +31,6 @@ import pl.betoncraft.betonquest.api.Objective; import pl.betoncraft.betonquest.config.Config; import pl.betoncraft.betonquest.exceptions.InstructionParseException; import pl.betoncraft.betonquest.exceptions.QuestRuntimeException; -import pl.betoncraft.betonquest.objectives.FishObjective; import pl.betoncraft.betonquest.utils.LogUtils; import pl.betoncraft.betonquest.utils.PlayerConverter; diff --git a/src/main/java/net/momirealms/customfishing/manager/EffectManager.java b/src/main/java/net/momirealms/customfishing/manager/EffectManager.java index 60c4774b..0a5f49d9 100644 --- a/src/main/java/net/momirealms/customfishing/manager/EffectManager.java +++ b/src/main/java/net/momirealms/customfishing/manager/EffectManager.java @@ -30,7 +30,6 @@ import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.HashMap; -import java.util.Objects; import java.util.Set; public class EffectManager extends Function { diff --git a/src/main/java/net/momirealms/customfishing/manager/LootManager.java b/src/main/java/net/momirealms/customfishing/manager/LootManager.java index fe47e1c4..8f9d6ffd 100644 --- a/src/main/java/net/momirealms/customfishing/manager/LootManager.java +++ b/src/main/java/net/momirealms/customfishing/manager/LootManager.java @@ -19,9 +19,8 @@ package net.momirealms.customfishing.manager; import net.momirealms.customfishing.CustomFishing; import net.momirealms.customfishing.fishing.MiniGameConfig; -import net.momirealms.customfishing.fishing.action.*; +import net.momirealms.customfishing.fishing.action.Action; import net.momirealms.customfishing.fishing.loot.*; -import net.momirealms.customfishing.fishing.requirements.*; import net.momirealms.customfishing.object.Function; import net.momirealms.customfishing.object.LeveledEnchantment; import net.momirealms.customfishing.util.AdventureUtil; @@ -35,8 +34,6 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.MemorySection; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.inventory.ItemStack; -import org.bukkit.potion.PotionEffect; -import org.bukkit.potion.PotionEffectType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -171,7 +168,7 @@ public class LootManager extends Function { ); setActions(mobSection, loot); - setRequirements(mobSection.getConfigurationSection("requirements"), loot); + loot.setRequirements(ConfigUtil.getRequirements(mobSection.getConfigurationSection("requirements"))); if (mobSection.getBoolean("in-lava", false)) lavaLoots.put(key, loot); else waterLoots.put(key, loot); @@ -238,7 +235,7 @@ public class LootManager extends Function { } setActions(lootSection, loot); - setRequirements(lootSection.getConfigurationSection("requirements"), loot); + loot.setRequirements(ConfigUtil.getRequirements(lootSection.getConfigurationSection("requirements"))); if (key.equals("vanilla")) { vanilla_loot = loot; continue; @@ -272,12 +269,6 @@ public class LootManager extends Function { } } - private void setRequirements(ConfigurationSection section, Loot loot) { - loot.setRequirements(ConfigUtil.getRequirements(section)); - } - - - private MiniGameConfig[] getMiniGames(ConfigurationSection section) { String[] games = section.getStringList("mini-game").size() == 0 ? new String[]{section.getString("mini-game", null)} : section.getStringList("mini-game").toArray(new String[0]); MiniGameConfig[] gameConfigs = new MiniGameConfig[games.length]; @@ -309,6 +300,21 @@ public class LootManager extends Function { return loots; } + public ArrayList getAllKeys() { + ArrayList loots = new ArrayList<>(); + for (Map.Entry en : CustomFishing.getInstance().getLootManager().getWaterLoots().entrySet()) { + if (en.getValue() instanceof DroppedItem) { + loots.add(en.getKey()); + } + } + for (Map.Entry en : CustomFishing.getInstance().getLootManager().getLavaLoots().entrySet()) { + if (en.getValue() instanceof DroppedItem) { + loots.add(en.getKey()); + } + } + return loots; + } + @Nullable public List getCategories(String categoryID) { return category.get(categoryID); diff --git a/src/main/java/net/momirealms/customfishing/manager/SellManager.java b/src/main/java/net/momirealms/customfishing/manager/SellManager.java index d85c2bc7..0281f6e2 100644 --- a/src/main/java/net/momirealms/customfishing/manager/SellManager.java +++ b/src/main/java/net/momirealms/customfishing/manager/SellManager.java @@ -30,7 +30,6 @@ import net.momirealms.customfishing.CustomFishing; import net.momirealms.customfishing.api.event.SellFishEvent; import net.momirealms.customfishing.data.PlayerSellData; import net.momirealms.customfishing.fishing.loot.Item; -import net.momirealms.customfishing.integration.papi.PlaceholderManager; import net.momirealms.customfishing.listener.InventoryListener; import net.momirealms.customfishing.listener.JoinQuitListener; import net.momirealms.customfishing.listener.WindowPacketListener; diff --git a/src/main/java/net/momirealms/customfishing/object/DynamicText.java b/src/main/java/net/momirealms/customfishing/object/DynamicText.java index 90a67fe3..c5d9ae33 100644 --- a/src/main/java/net/momirealms/customfishing/object/DynamicText.java +++ b/src/main/java/net/momirealms/customfishing/object/DynamicText.java @@ -18,15 +18,11 @@ package net.momirealms.customfishing.object; import net.momirealms.customfishing.CustomFishing; -import net.momirealms.customfishing.fishing.competition.Competition; -import net.momirealms.customfishing.fishing.competition.ranking.RankingInterface; import net.momirealms.customfishing.integration.papi.PlaceholderManager; -import net.momirealms.customfishing.manager.MessageManager; import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.List; -import java.util.Optional; public class DynamicText { diff --git a/src/main/resources/categories/default.yml b/src/main/resources/categories/default.yml index f3c8a186..71b8d971 100644 --- a/src/main/resources/categories/default.yml +++ b/src/main/resources/categories/default.yml @@ -3,10 +3,6 @@ # %fishingstats_category_total_% get the total number of a certain category's fish caught # %fishingstats_category_progress_% get the player's exploration of this category of fish normal_fish: - - pufferfish - - cod - - salmon - - tropical_fish - tuna_fish - pike_fish - gold_fish diff --git a/src/main/resources/messages/messages_english.yml b/src/main/resources/messages/messages_english.yml index 1f62ef34..bf27be7d 100644 --- a/src/main/resources/messages/messages_english.yml +++ b/src/main/resources/messages/messages_english.yml @@ -2,35 +2,35 @@ #https://docs.adventure.kyori.net/minimessage/format.html messages: prefix: '[CustomFishing] ' - reload: 'Reloaded' + reload: 'Reloaded. Took {time}ms' no-perm: 'You don''t have permission!' not-online: 'That player is not online!' item-not-exist: 'That item does not exist!' player-not-exist: 'That player does not exist!' escape: 'It has been too long since the fish is hooked. Oh my god, it escaped!' - give-item: 'Successfully given players {Player} {Amount}x {Item}.' + give-item: 'Successfully given player {Player} {Amount}x {Item}.' get-item: 'Successfully obtained {Amount}x {Item}.' no-console: 'This command cannot be executed from the console!' - wrong-amount: 'You cannot give a player an item with a negative quantity!' - lack-args: 'Insufficient parameters.' + wrong-amount: 'You can''t set an negative amount of items!' + lack-args: 'Insufficient arguments.' none-args: 'None arguments!' invalid-args: 'Invalid arguments!' possible-loots: 'Possible loots here: ' - reach-sell-limit: 'You have earned a lot from selling fish! Come tomorrow.' + reach-sell-limit: 'You have earned too much from selling fish! Come tomorrow.' split-char: ', ' no-loot: 'There''s no fish in this place!' - competition-ongoing: 'There is currently a fishing tournament in progress! Start fishing to join the contest for a prize!' - players-not-enough: 'The number of players is not enough for the fishing contest to be held as scheduled!' + competition-ongoing: 'There is currently a fishing competition in progress! Start fishing to join the competition for a prize!' + players-not-enough: 'The number of players is not enough for the fishing competition to be started as scheduled!' no-rank: 'No Rank' - force-competition-success: 'Forced to start a fishing contest' - force-competition-failure: 'This contest does not exist' - force-competition-end: 'Forced to end the current contest' - force-competition-cancel: 'Forced to cancel the contest' - hook-other-entity: 'The bobber is hooked on another entity!' - no-rod: 'You have to obtain a special rod to get loots!' + force-competition-success: 'Forced to start a fishing competition' + force-competition-failure: 'This competition does not exist' + force-competition-end: 'Forced to end the current competition' + force-competition-cancel: 'Forced to cancel the competition' + hook-other-entity: 'The hook is hooked on another entity!' + no-rod: 'You have to fish with a special rod to get loots!' no-player: 'No player' no-score: 'No score' set-statistics: 'Successfully set {Player}''s {Loot} statistics to {Amount}' reset-statistics: 'Successfully reset {Player}''s statistics' negative-statistics: 'Amount should be a value no lower than zero' - statistics-not-exist: 'That statistics does not exist' \ No newline at end of file + statistics-not-exist: 'The statistics does not exist' \ No newline at end of file