package blusunrize.immersiveengineering.common.util.commands; import blusunrize.immersiveengineering.api.Lib; import blusunrize.immersiveengineering.common.util.commands.CommandHandler.IESubCommand; import net.minecraft.command.ICommandSender; import net.minecraft.server.MinecraftServer; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.util.text.translation.I18n; import java.util.ArrayList; import java.util.Locale; public class CommandHelp extends IESubCommand { @Override public String getIdent() { return "help"; } @Override public void perform(CommandHandler handler, MinecraftServer server, ICommandSender sender, String[] args) { if(args.length>1) { String sub = ""; for(int i=2;i<args.length;i++) sub += "."+args[i]; for(IESubCommand com : handler.commands) { if(com.getIdent().equalsIgnoreCase(args[1])) { String h = I18n.translateToLocal(com.getHelp(sub)); for(String s : h.split("<br>")) sender.addChatMessage(new TextComponentString(s)); } } } else { String h = I18n.translateToLocal(getHelp("")); for(String s : h.split("<br>")) sender.addChatMessage(new TextComponentString(s)); String sub = ""; int i=0; for(IESubCommand com : handler.commands) sub += ((i++)>0?", ":"")+com.getIdent(); sender.addChatMessage(new TextComponentTranslation(Lib.CHAT_COMMAND+"available",sub)); } } @Override public ArrayList<String> getSubCommands(CommandHandler h, MinecraftServer server, ICommandSender sender, String[] args) { ArrayList<String> list = new ArrayList<>(); for(IESubCommand sub : h.commands) if(sub!=this && sender.canCommandSenderUseCommand(sub.getPermissionLevel(),h.getCommandName())) { if(args.length==1) { if(args[0].isEmpty() || sub.getIdent().startsWith(args[0].toLowerCase(Locale.ENGLISH))) list.add(sub.getIdent()); } else if(sub.getIdent().equalsIgnoreCase(args[0])) { String[] redArgs = new String[args.length-1]; System.arraycopy(args, 1, redArgs, 0, redArgs.length); ArrayList<String> subCommands = sub.getSubCommands(h, server, sender, redArgs); if(subCommands!=null) list.addAll(subCommands); } } return list; } @Override public int getPermissionLevel() { return 0; } }