gpt4 book ai didi

java - 如何为现有命令创建别名?

转载 作者:行者123 更新时间:2023-12-02 01:35:19 24 4
gpt4 key购买 nike

所以,我正在制作一个 Minecraft mod,它允许为现有命令创建别名,例如 /tp/spawnpoint/setblock等等,以及将许多命令集中在一个命令中并按顺序执行,如下所示:

/alias add sun "time set day" "weather clear"

我已经制作了 /alias 命令本身的基础,但我仍然不知道如何实现它的功能。

public class CommandAlias extends CommandBase {

private final List<String> aliases = Lists.newArrayList(Reference.MODID, "alias", "al");

@Override
public String getName() {
return "alias";
}

@Override
public String getUsage(ICommandSender sender) {
return "/alias add|remove|edit <alias> <command(s)>";
}

@Override
public List<String> getAliases() {
return aliases;
}

@Override
public boolean checkPermission(MinecraftServer server, ICommandSender sender) {
return true;
}

@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
// sender.sendMessage(new TextComponentString("Hi " + sender.getName() + "!"));

if (args.length < 1) {
sender.sendMessage(new TextComponentString(TextFormatting.RED + "Invalid arguments!"));
return;
}

String alias = args[0];
String cmd = args[1];

if (args[0] == "add"){
// something
} else if (args[0] == "remove" || args[0] == "delete"){
// something
} else if (args[0] == "edit"){
// something
}
}
}

最佳答案

您需要一些东西:

  1. 已注册的所有别名的列表
  2. 别名执行器,将在键入别名命令时执行该命令
  3. 将别名命令注册到 bukkit

这里有一些示例:

  1. 别名列表
HashMap<String, String> aliasList = new HashMap<String>;

添加别名时,您需要将其添加到它所使用的别名的命令中:

aliasList.put(myAliasString, commandToReplace);
  • 别名执行器,将在键入别名命令时执行该命令
  • executeAlias(String alias, ICommandSender sender, String[] args) {
    if(aliasList.contains(alias) {
    String aliasedCommand = aliastList.get(alias);

    // Here you will need to convert the args array to a spaced string (if needed).
    // Then send the command:
    Bukkit.getServer().dispatchCommand(sender, commandString);
    }
    }
  • 在命令进来时注册它们:
  • if (args[0] == "add"){
    // Make the AliasListener have the code from part 2
    Bukkit.getCommand(args[1]).setExecutor(aliasListener)

    // Store the alias and the command it replaces in the list.
    this.aliasList.put(args[1], args[2])
    }

    关于java - 如何为现有命令创建别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57523376/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com