From 0243a46401f7654be2b61457880681fb027271bf Mon Sep 17 00:00:00 2001 From: bowser0000 Date: Sun, 2 Aug 2020 19:19:11 -0400 Subject: Add tab complete to commands --- me/Danker/commands/ArmourCommand.java | 10 ++++++++++ me/Danker/commands/BankCommand.java | 10 ++++++++++ me/Danker/commands/DisplayCommand.java | 21 +++++++++++++++++---- me/Danker/commands/GuildOfCommand.java | 12 ++++++++++++ me/Danker/commands/LootCommand.java | 12 ++++++++++++ me/Danker/commands/MoveCommand.java | 11 +++++++++++ me/Danker/commands/PetsCommand.java | 10 ++++++++++ me/Danker/commands/SkillsCommand.java | 12 ++++++++++++ me/Danker/commands/SlayerCommand.java | 13 +++++++++++-- me/Danker/commands/ToggleCommand.java | 11 +++++++++++ me/Danker/utils/CommandUtils.java | 23 +++++++++++++++++++++++ 11 files changed, 139 insertions(+), 6 deletions(-) create mode 100644 me/Danker/utils/CommandUtils.java diff --git a/me/Danker/commands/ArmourCommand.java b/me/Danker/commands/ArmourCommand.java index 4d89bcd..fa2973d 100644 --- a/me/Danker/commands/ArmourCommand.java +++ b/me/Danker/commands/ArmourCommand.java @@ -11,6 +11,7 @@ import com.google.gson.JsonObject; import me.Danker.handlers.APIHandler; import me.Danker.handlers.ConfigHandler; +import me.Danker.utils.CommandUtils; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; @@ -18,6 +19,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -43,6 +45,14 @@ public class ArmourCommand extends CommandBase { public int getRequiredPermissionLevel() { return 0; } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return CommandUtils.getMatchingPlayers(args[0]); + } + return null; + } @Override public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { diff --git a/me/Danker/commands/BankCommand.java b/me/Danker/commands/BankCommand.java index f569e7f..0dd00e7 100644 --- a/me/Danker/commands/BankCommand.java +++ b/me/Danker/commands/BankCommand.java @@ -8,10 +8,12 @@ import com.google.gson.JsonObject; import me.Danker.handlers.APIHandler; import me.Danker.handlers.ConfigHandler; +import me.Danker.utils.CommandUtils; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -38,6 +40,14 @@ public class BankCommand extends CommandBase { return 0; } + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return CommandUtils.getMatchingPlayers(args[0]); + } + return null; + } + @Override public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { // MULTI THREAD DRIFTING diff --git a/me/Danker/commands/DisplayCommand.java b/me/Danker/commands/DisplayCommand.java index e32f9d2..761aa30 100644 --- a/me/Danker/commands/DisplayCommand.java +++ b/me/Danker/commands/DisplayCommand.java @@ -1,10 +1,13 @@ package me.Danker.commands; +import java.util.List; + import me.Danker.handlers.ConfigHandler; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -26,6 +29,16 @@ public class DisplayCommand extends CommandBase { return 0; } + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "fishing", "off"); + } else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) { + return getListOfStringsMatchingLastWord(args, "winter"); + } + return null; + } + @Override public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { final EntityPlayer player = (EntityPlayer) arg0; @@ -43,14 +56,14 @@ public class DisplayCommand extends CommandBase { display = "spider"; } else if (arg1[0].equalsIgnoreCase("zombie")) { display = "zombie"; - } else if (arg1[0].equalsIgnoreCase("off")) { - display = "off"; - } else if (arg1[0].equalsIgnoreCase("fishing")) { + } else if (arg1[0].equalsIgnoreCase("fishing")) { if (arg1.length > 1 && arg1[1].equalsIgnoreCase("winter")) { display = "fishingwinter"; } else { display = "fishing"; - } + } + } else if (arg1[0].equalsIgnoreCase("off")) { + display = "off"; } else { player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: /display [winter]")); return; diff --git a/me/Danker/commands/GuildOfCommand.java b/me/Danker/commands/GuildOfCommand.java index 568c710..74fb728 100644 --- a/me/Danker/commands/GuildOfCommand.java +++ b/me/Danker/commands/GuildOfCommand.java @@ -1,15 +1,19 @@ package me.Danker.commands; +import java.util.List; + import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import me.Danker.handlers.APIHandler; import me.Danker.handlers.ConfigHandler; +import me.Danker.utils.CommandUtils; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -30,6 +34,14 @@ public class GuildOfCommand extends CommandBase { return 0; } + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return CommandUtils.getMatchingPlayers(args[0]); + } + return null; + } + @Override public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { // MULTI THREAD DRIFTING diff --git a/me/Danker/commands/LootCommand.java b/me/Danker/commands/LootCommand.java index 5853cee..f93eda9 100644 --- a/me/Danker/commands/LootCommand.java +++ b/me/Danker/commands/LootCommand.java @@ -1,12 +1,14 @@ package me.Danker.commands; import java.text.NumberFormat; +import java.util.List; import java.util.Locale; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -118,6 +120,16 @@ public class LootCommand extends CommandBase { public int getRequiredPermissionLevel() { return 0; } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return getListOfStringsMatchingLastWord(args, "wolf", "spider", "zombie", "fishing"); + } else if (args.length == 2 && args[0].equalsIgnoreCase("fishing")) { + return getListOfStringsMatchingLastWord(args, "winter"); + } + return null; + } @Override public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { diff --git a/me/Danker/commands/MoveCommand.java b/me/Danker/commands/MoveCommand.java index 797cffa..1232e18 100644 --- a/me/Danker/commands/MoveCommand.java +++ b/me/Danker/commands/MoveCommand.java @@ -1,10 +1,13 @@ package me.Danker.commands; +import java.util.List; + import me.Danker.handlers.ConfigHandler; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -27,6 +30,14 @@ public class MoveCommand extends CommandBase { public int getRequiredPermissionLevel() { return 0; } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return getListOfStringsMatchingLastWord(args, "coords", "display"); + } + return null; + } @Override public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { diff --git a/me/Danker/commands/PetsCommand.java b/me/Danker/commands/PetsCommand.java index 8c53732..6d7f241 100644 --- a/me/Danker/commands/PetsCommand.java +++ b/me/Danker/commands/PetsCommand.java @@ -10,10 +10,12 @@ import com.google.gson.JsonObject; import me.Danker.handlers.APIHandler; import me.Danker.handlers.ConfigHandler; +import me.Danker.utils.CommandUtils; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -68,6 +70,14 @@ public class PetsCommand extends CommandBase { public int getRequiredPermissionLevel() { return 0; } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return CommandUtils.getMatchingPlayers(args[0]); + } + return null; + } @Override public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { diff --git a/me/Danker/commands/SkillsCommand.java b/me/Danker/commands/SkillsCommand.java index dc70175..e248757 100644 --- a/me/Danker/commands/SkillsCommand.java +++ b/me/Danker/commands/SkillsCommand.java @@ -1,13 +1,17 @@ package me.Danker.commands; +import java.util.List; + import com.google.gson.JsonObject; import me.Danker.handlers.APIHandler; import me.Danker.handlers.ConfigHandler; +import me.Danker.utils.CommandUtils; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -190,6 +194,14 @@ public class SkillsCommand extends CommandBase { return 0; } + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return CommandUtils.getMatchingPlayers(args[0]); + } + return null; + } + @Override public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { // MULTI THREAD DRIFTING diff --git a/me/Danker/commands/SlayerCommand.java b/me/Danker/commands/SlayerCommand.java index 8f528e6..a6fe85e 100644 --- a/me/Danker/commands/SlayerCommand.java +++ b/me/Danker/commands/SlayerCommand.java @@ -1,17 +1,18 @@ package me.Danker.commands; import java.text.NumberFormat; +import java.util.List; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; import com.google.gson.JsonObject; import me.Danker.handlers.APIHandler; import me.Danker.handlers.ConfigHandler; +import me.Danker.utils.CommandUtils; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -32,6 +33,14 @@ public class SlayerCommand extends CommandBase { return 0; } + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return CommandUtils.getMatchingPlayers(args[0]); + } + return null; + } + @Override public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { // MULTI THREAD DRIFTING diff --git a/me/Danker/commands/ToggleCommand.java b/me/Danker/commands/ToggleCommand.java index 0e893c4..218378f 100644 --- a/me/Danker/commands/ToggleCommand.java +++ b/me/Danker/commands/ToggleCommand.java @@ -1,11 +1,14 @@ package me.Danker.commands; +import java.util.List; + import me.Danker.handlers.ConfigHandler; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -29,6 +32,14 @@ public class ToggleCommand extends CommandBase implements ICommand { return 0; } + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + if (args.length == 1) { + return getListOfStringsMatchingLastWord(args, "gparty", "coords", "golden", "list"); + } + return null; + } + @Override public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException { final EntityPlayer player = (EntityPlayer)arg0; diff --git a/me/Danker/utils/CommandUtils.java b/me/Danker/utils/CommandUtils.java new file mode 100644 index 0000000..7b10ad5 --- /dev/null +++ b/me/Danker/utils/CommandUtils.java @@ -0,0 +1,23 @@ +package me.Danker.utils; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; + +public class CommandUtils { + public static List getMatchingPlayers(String arg) { + List matchingPlayers = new ArrayList<>(); + List players = Minecraft.getMinecraft().theWorld.playerEntities; + + for (EntityPlayer player : players) { + String playerName = player.getName(); + if (playerName.toLowerCase().startsWith(arg.toLowerCase())) { + matchingPlayers.add(playerName); + } + } + + return matchingPlayers; + } +} -- cgit