Skip to content

Commit

Permalink
lang 14 rework
Browse files Browse the repository at this point in the history
  • Loading branch information
FireInstall committed Feb 1, 2024
1 parent bc8c4c2 commit 72241b1
Show file tree
Hide file tree
Showing 75 changed files with 1,077 additions and 704 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package au.com.mineauz.minigames;

import au.com.mineauz.minigames.managers.MinigameMessageManager;
import au.com.mineauz.minigames.managers.language.langkeys.MinigameLangKey;
import au.com.mineauz.minigames.managers.language.MinigameMessageType;
import au.com.mineauz.minigames.managers.language.MinigamePlaceHolderKey;
import au.com.mineauz.minigames.managers.language.langkeys.MinigameLangKey;
import au.com.mineauz.minigames.objects.MinigamePlayer;
import au.com.mineauz.minigames.tool.MinigameTool;
import net.kyori.adventure.text.Component;
Expand Down Expand Up @@ -71,8 +71,8 @@ public class MinigameUtils {
* Converts seconds into weeks, days, hours, minutes and seconds to be neatly
* displayed.
*
* @param duration - The duration to be converted
* @param small - If the time should be shortened to: hh:mm:ss
* @param duration - The duration to be converted
* @param small - If the time should be shortened to: hh:mm:ss
* @return A message with a neat time
*/
public static Component convertTime(Duration duration, boolean small) { //todo make reverse methode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@
import java.util.regex.Pattern;

public class Minigames extends JavaPlugin {
private static ComponentLogger componentLogger = null;
private static final Pattern COMPILE = Pattern.compile("-?[0-9]+");
private static ComponentLogger componentLogger = null;
private static Minigames plugin;
private static Economy econ;
private static SignBase minigameSigns;
Expand Down Expand Up @@ -102,7 +102,7 @@ public PlaceHolderManager getPlaceHolderManager() {
return placeHolderManager;
}

public CommandDispatcher getCommandDispatcher(){
public CommandDispatcher getCommandDispatcher() {
return disp;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package au.com.mineauz.minigames.commands;

import au.com.mineauz.minigames.Minigames;
import net.kyori.adventure.text.Component;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public boolean onCommand(final @NotNull CommandSender sender,
Futures.addCallback(future, new FutureCallback<>() {
@Override
public void onFailure(@NotNull Throwable t) {
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_BACKEND_ERROR_INTERNAL,
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_ERROR_INTERNAL,
Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), t.getMessage()));
Minigames.getCmpnntLogger().error("An internal error occurred while exporting.", t);
}
Expand All @@ -76,7 +76,7 @@ public void onSuccess(Void result) { // success gets handled by notifier
}
}, directExecutor());
} catch (IllegalArgumentException e) {
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_BACKEND_ERROR_INTERNAL,
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_ERROR_INTERNAL,
Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), e.getMessage()));
Minigames.getCmpnntLogger().error("An internal error occurred while exporting.", e);
}
Expand All @@ -89,7 +89,7 @@ public void onSuccess(Void result) { // success gets handled by notifier
Futures.addCallback(future, new FutureCallback<>() {
@Override
public void onFailure(@NotNull Throwable t) {
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_BACKEND_ERROR_INTERNAL,
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_ERROR_INTERNAL,
Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), t.getMessage()));
Minigames.getCmpnntLogger().error("An internal error occurred while exporting.", t);
}
Expand All @@ -101,7 +101,7 @@ public void onSuccess(Void result) {
}
}, directExecutor());
} catch (IllegalArgumentException e) {
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_BACKEND_ERROR_INTERNAL,
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_ERROR_INTERNAL,
Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), e.getMessage()));
Minigames.getCmpnntLogger().error("An internal error occurred while exporting.", e);
}
Expand Down Expand Up @@ -136,7 +136,7 @@ public void onComplete() {

@Override
public void onError(Exception e, String state, int count) {
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_BACKEND_ERROR_INTERNAL,
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_ERROR_INTERNAL,
Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), e.getMessage()));
Minigames.getCmpnntLogger().error("Exporting error at " + state + ": " + count, e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,34 @@ public class CommandDispatcher implements CommandExecutor, TabCompleter {
registerCommand(new ResourcePackCommand());
}

public static @NotNull Collection<ACommand> getCommands(){
public static @NotNull Collection<ACommand> getCommands() {
return commands.values();
}

public static void registerCommand(ACommand command) {
commands.put(command.getName(), command);
}

public static @Nullable ACommand getCommand(@NotNull String name) {
ACommand comd = null;
if (commands.containsKey(name.toLowerCase())) {
comd = commands.get(name.toLowerCase());
} else {
AliasCheck:
for (ACommand com : commands.values()) {
if (com.getAliases() != null) {
for (String alias : com.getAliases()) {
if (name.equalsIgnoreCase(alias)) {
comd = com;
break AliasCheck;
}
}
}
}
}
return comd;
}

public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
Player ply = null;
if (sender instanceof Player) {
Expand Down Expand Up @@ -104,7 +124,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MinigameLangKey.MINIGAME_ERROR_NOPERMISSION);
}
} else {
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_ERROR_NOTAPLAYER);
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_ERROR_SENDERNOTAPLAYER);
}
return true;
}
Expand All @@ -120,26 +140,6 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
return false;
}

public static @Nullable ACommand getCommand(@NotNull String name) {
ACommand comd = null;
if (commands.containsKey(name.toLowerCase())) {
comd = commands.get(name.toLowerCase());
} else {
AliasCheck:
for (ACommand com : commands.values()) {
if (com.getAliases() != null) {
for (String alias : com.getAliases()) {
if (name.equalsIgnoreCase(alias)) {
comd = com;
break AliasCheck;
}
}
}
}
}
return comd;
}

public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
if (args != null && args.length > 0) {
ACommand comd = commands.get(args[0].toLowerCase());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public boolean onCommand(@NotNull CommandSender sender,
mgm.displayMenu(mgPlayer);
return true;
} else {
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_ERROR_NOTAPLAYER);
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_ERROR_SENDERNOTAPLAYER);
}
} else {
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MinigameLangKey.MINIGAME_ERROR_NOMINIGAME,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package au.com.mineauz.minigames.commands;

import au.com.mineauz.minigames.MinigameUtils;
import au.com.mineauz.minigames.Minigames;
import au.com.mineauz.minigames.gametypes.MinigameTypeBase;
import au.com.mineauz.minigames.gametypes.MultiplayerType;
import au.com.mineauz.minigames.managers.MinigameMessageManager;
Expand All @@ -22,7 +21,8 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class EndCommand extends ACommand {
Expand Down Expand Up @@ -142,7 +142,7 @@ public boolean onCommand(@NotNull CommandSender sender,
} else if (args.length > 0) { // not a player. return proper message
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MinigameLangKey.MINIGAME_ERROR_NOPERMISSION);
} else {
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_ERROR_NOTAPLAYER);
MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.ERROR, MgCommandLangKey.COMMAND_ERROR_SENDERNOTAPLAYER);
return false;
}

Expand Down Expand Up @@ -228,10 +228,10 @@ private void forceEndForGlobal(@NotNull CommandSender sender, Minigame minigame)
result.addAll(PLUGIN.getMinigameManager().getAllMinigames().keySet());

return MinigameUtils.tabCompleteMatch(result, args[0]);
} else if (args.length == 2){
} else if (args.length == 2) {
Minigame minigame = PLUGIN.getMinigameManager().getMinigame(args[0]);

if (minigame != null){
if (minigame != null) {
if (minigame.isTeamGame()) {
TeamsModule teamsModule = TeamsModule.getMinigameModule(minigame);
List<String> result = teamsModule.getTeams().stream().map(team -> team.getColor().toString()).toList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import au.com.mineauz.minigames.Minigames;
import au.com.mineauz.minigames.managers.MinigameManager;
import au.com.mineauz.minigames.managers.MinigameMessageManager;
import au.com.mineauz.minigames.managers.language.langkeys.MgCommandLangKey;
import au.com.mineauz.minigames.menu.Menu;
import au.com.mineauz.minigames.menu.MenuItem;
import au.com.mineauz.minigames.menu.MenuItemDisplayLoadout;
Expand Down Expand Up @@ -37,14 +39,12 @@ public boolean canBeConsole() {

@Override
public @NotNull Component getDescription() {
return "Opens the Loadout edit window for Global Loadouts. These loadouts may be used in any Minigame.";
return MinigameMessageManager.getMgMessage(MgCommandLangKey.COMMAND_GLOBALLOADOUT_DESCRIPTION);
}

@Override
public String[] getUsage() {
return new String[]{
"/minigame globalloadout"
};
public Component getUsage() {
return MinigameMessageManager.getMgMessage(MgCommandLangKey.COMMAND_GLOBALLOADOUT_USAGE);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,31 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;

public class HelpCommand extends ACommand {
private final Pattern NUM_PATTERN = Pattern.compile("^\\d*$");
private final int COMMANDS_PER_SITE = 6; // just a random number. Change it if you know a better one!

private static boolean sendHelpInfo(@NotNull CommandSender sender, @NotNull ICommandInfo setCommand) {
if (setCommand.getPermission() != null || sender.hasPermission(setCommand.getPermission())) {
Component info = Component.empty();
if (setCommand.getAliases() != null) {
info = info.append(Component.join(JoinConfiguration.arrayLike(), Arrays.stream(setCommand.getAliases()).map(Component::text).toList()));
}

MinigameMessageManager.sendMessage(sender, MinigameMessageType.NONE,
MinigameMessageManager.getMgMessage(MgCommandLangKey.COMMAND_HELP_INFO_HEADER,
Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), setCommand.getName())).appendNewline().
append(info.appendNewline().append(setCommand.getUsage()).appendNewline().append(setCommand.getDescription())));//todo needs formatting (not hardcoded)
return true;
} else {
return false;
}
}

@Override
public @NotNull String getName() {
return "help";
Expand All @@ -54,16 +69,16 @@ public Component getUsage() {
return "minigame.help";
}

private Component makePage(@NotNull Permissible permissible, int pageNumber){
private Component makePage(@NotNull Permissible permissible, int pageNumber) {
List<ICommandInfo> allCommands = new ArrayList<>(CommandDispatcher.getCommands());
allCommands.addAll(SetCommand.getSetCommands());
// filter per permission
allCommands = allCommands.stream().filter(cmd -> cmd.getPermission() == null || permissible.hasPermission(cmd.getPermission())).toList();

final int numPages = (int)Math.ceil((float) allCommands.size() / COMMANDS_PER_SITE);
final int numPages = (int) Math.ceil((float) allCommands.size() / COMMANDS_PER_SITE);
pageNumber = Math.max(1, Math.min(pageNumber, numPages)); // stay in range

final List<ICommandInfo> commandsOfPage = allCommands.subList(COMMANDS_PER_SITE*(pageNumber-1), Math.min(allCommands.size(), pageNumber*COMMANDS_PER_SITE));
final List<ICommandInfo> commandsOfPage = allCommands.subList(COMMANDS_PER_SITE * (pageNumber - 1), Math.min(allCommands.size(), pageNumber * COMMANDS_PER_SITE));
// command name + description + click event for detailed info
final Component pageCore = Component.join(JoinConfiguration.newlines(), commandsOfPage.stream().
map(cmd -> Component.text(cmd.getName()).append(Component.text(" - ")).append(cmd.getDescription()).
Expand All @@ -72,32 +87,15 @@ private Component makePage(@NotNull Permissible permissible, int pageNumber){
final Component header = MinigameMessageManager.getMgMessage(MgCommandLangKey.COMMAND_HELP_LIST_HEADER,
Placeholder.unparsed(MinigamePlaceHolderKey.NUMBER.getKey(), String.valueOf(pageNumber)),
Placeholder.unparsed(MinigamePlaceHolderKey.MAX.getKey(), String.valueOf(numPages)));
//todo clickable next/back buttons on footer
final Component footer = MinigameMessageManager.getMgMessage(MgCommandLangKey.COMMAND_DIVIDER_LARGE); //todo clickable next/back buttons on footer

return header.appendNewline().append(pageCore);
}

private static boolean sendHelpInfo(@NotNull CommandSender sender, @NotNull ICommandInfo setCommand) {
if (setCommand.getPermission() != null || sender.hasPermission(setCommand.getPermission())){
Component info = Component.empty();
if (setCommand.getAliases() != null) {
info = info.append(Component.text("[").append(Component.text(String.join(", ", setCommand.getAliases()))).append(Component.text("]")));
}

MinigameMessageManager.sendMessage(sender, MinigameMessageType.NONE,
MinigameMessageManager.getMgMessage(MgCommandLangKey.COMMAND_HELP_INFO_HEADER,
Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), setCommand.getName())).appendNewline().
append(info.appendNewline().append(setCommand.getUsage()).appendNewline().append(setCommand.getDescription())));//todo needs formatting (not hardcoded)
return true;
} else {
return false;
}
return header.appendNewline().append(pageCore).appendNewline().append(footer);
}

@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull String @NotNull [] args) {
if (args.length > 0) {
if (NUM_PATTERN.matcher(args[0]).matches()){
if (NUM_PATTERN.matcher(args[0]).matches()) {
MinigameMessageManager.sendMessage(sender, MinigameMessageType.NONE, makePage(sender, Integer.parseInt(args[0])));
} else {
ACommand subCommand = CommandDispatcher.getCommand(args[0]);
Expand All @@ -107,7 +105,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull String @NotNull
} else {
ASetCommand setCommand = SetCommand.getSetCommand(args[0]);

if (setCommand != null){
if (setCommand != null) {
return sendHelpInfo(sender, setCommand);
} else {
return false;
Expand All @@ -128,7 +126,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull String @NotNull
// filter per permission
allCommands = allCommands.stream().filter(cmd -> cmd.getPermission() == null || sender.hasPermission(cmd.getPermission())).toList();
// get number of filtered commands before the next step
final int numPages = (int)Math.ceil((float) allCommands.size() / COMMANDS_PER_SITE);
final int numPages = (int) Math.ceil((float) allCommands.size() / COMMANDS_PER_SITE);

// can't reuse the stream from above, since using Stream#count() would terminate it.
// first map commands to name + aliases, then append all possible page numbers
Expand Down
Loading

0 comments on commit 72241b1

Please sign in to comment.