aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/eu/olli/cowmoonication/command
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/eu/olli/cowmoonication/command')
-rw-r--r--src/main/java/eu/olli/cowmoonication/command/MooCommand.java115
1 files changed, 115 insertions, 0 deletions
diff --git a/src/main/java/eu/olli/cowmoonication/command/MooCommand.java b/src/main/java/eu/olli/cowmoonication/command/MooCommand.java
new file mode 100644
index 0000000..ca4722c
--- /dev/null
+++ b/src/main/java/eu/olli/cowmoonication/command/MooCommand.java
@@ -0,0 +1,115 @@
+package eu.olli.cowmoonication.command;
+
+import eu.olli.cowmoonication.Cowmoonication;
+import eu.olli.cowmoonication.config.MooConfig;
+import net.minecraft.client.Minecraft;
+import net.minecraft.command.CommandBase;
+import net.minecraft.command.CommandException;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.util.BlockPos;
+import net.minecraft.util.ChatComponentTranslation;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.MathHelper;
+
+import java.util.List;
+import java.util.Set;
+
+public class MooCommand extends CommandBase {
+ private final Cowmoonication main;
+
+ public MooCommand(Cowmoonication main) {
+ this.main = main;
+ }
+
+ @Override
+ public void processCommand(ICommandSender sender, String[] args) throws CommandException {
+ if (args.length == 0) {
+ main.getUtils().sendMessage(new ChatComponentTranslation(getCommandUsage(sender)));
+ return;
+ }
+ if (args.length == 2 && args[0].equalsIgnoreCase("add")) {
+ main.getUtils().sendMessage(EnumChatFormatting.RED + "Edit the best friends list via ESC > Mod Options > Cowmoonication > Config > bestFriends.");
+ // TODO replace with a proper command
+ // handleBestFriendAdd(args[1]);
+ } else if (args.length == 2 && args[0].equalsIgnoreCase("remove") && main.getUtils().isValidMcName(args[1])) {
+ main.getUtils().sendMessage(EnumChatFormatting.RED + "Edit the best friends list via ESC > Mod Options > Cowmoonication > Config > bestFriends.");
+ // TODO replace with a proper command
+ // handleBestFriendRemove(args[1]);
+ } else if (args[0].equalsIgnoreCase("list")) {
+ handleListBestFriends();
+ } else if (args[0].equalsIgnoreCase("toggle")) {
+ main.getConfig().toggleNotifications();
+ main.getUtils().sendMessage(EnumChatFormatting.GREEN + "Switched all non-best friend login/logout notifications " + (MooConfig.filterFriendNotifications ? EnumChatFormatting.DARK_GREEN + "off" : EnumChatFormatting.DARK_RED + "on"));
+ } else if (args[0].equalsIgnoreCase("guiscale")) {
+ int currentGuiScale = (Minecraft.getMinecraft()).gameSettings.guiScale;
+ if (args.length == 1) {
+ main.getUtils().sendMessage(EnumChatFormatting.GREEN + "Current GUI scale: " + EnumChatFormatting.DARK_GREEN + currentGuiScale);
+ } else {
+ int scale = Math.min(10, MathHelper.parseIntWithDefault(args[1], 6));
+ Minecraft.getMinecraft().gameSettings.guiScale = scale;
+ main.getUtils().sendMessage(EnumChatFormatting.GREEN + "New GUI scale: " + EnumChatFormatting.DARK_GREEN + scale + EnumChatFormatting.GREEN + " (previous: " + EnumChatFormatting.DARK_GREEN + currentGuiScale + EnumChatFormatting.GREEN + ")");
+ }
+ } else {
+ main.getUtils().sendMessage(new ChatComponentTranslation(getCommandUsage(sender)));
+ }
+ }
+
+ private void handleBestFriendAdd(String username) {
+ if (!main.getUtils().isValidMcName(username)) {
+ main.getUtils().sendMessage(EnumChatFormatting.DARK_RED + username + EnumChatFormatting.RED + "? This... doesn't look like a valid username.");
+ return;
+ }
+
+ // TODO Add check if 'best friend' is on normal friend list
+ boolean added = main.getFriends().addBestFriend(username, true);
+ if (added) {
+ main.getUtils().sendMessage(EnumChatFormatting.GREEN + "Added " + EnumChatFormatting.DARK_GREEN + username + EnumChatFormatting.GREEN + " as best friend.");
+ } else {
+ main.getUtils().sendMessage(EnumChatFormatting.DARK_RED + username + EnumChatFormatting.RED + " is a best friend already.");
+ }
+ }
+
+ private void handleBestFriendRemove(String username) {
+ if (!main.getUtils().isValidMcName(username)) {
+ main.getUtils().sendMessage(EnumChatFormatting.DARK_RED + username + EnumChatFormatting.RED + "? This... doesn't look like a valid username.");
+ return;
+ }
+
+ boolean removed = main.getFriends().removeBestFriend(username);
+ if (removed) {
+ main.getUtils().sendMessage(EnumChatFormatting.GREEN + "Removed " + EnumChatFormatting.DARK_GREEN + username + EnumChatFormatting.GREEN + " from best friends list.");
+ } else {
+ main.getUtils().sendMessage(EnumChatFormatting.DARK_RED + username + EnumChatFormatting.RED + " isn't a best friend.");
+ }
+ }
+
+ private void handleListBestFriends() {
+ Set<String> bestFriends = main.getFriends().getBestFriends();
+
+ // TODO show fancy gui with list of best friends (maybe just the mod's settings?)
+ main.getUtils().sendMessage(EnumChatFormatting.GREEN + "Best friends: " + String.join(", ", bestFriends));
+ }
+
+ @Override
+ public String getCommandName() {
+ return "moo";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender sender) {
+ return Cowmoonication.MODID + ":command.moo.usage";
+ }
+
+ @Override
+ public int getRequiredPermissionLevel() {
+ return 0;
+ }
+
+ @Override
+ public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
+ if (args.length == 1) {
+ return getListOfStringsMatchingLastWord(args, "add", "remove", "list", "toggle", "guiscale");
+ }
+ return null;
+ }
+}