java - 我在 Forge 1.12.1 中的自定义命令不起作用

标签 java minecraft minecraft-forge

所以我创建了一个实现 ICommand 的类并将其注册到我的 ServerStarting 事件中。当我尝试在 Minecraft 中执行该命令时,出现无权限错误。这是我的 ICommand 实现类:

List aliases;

public CMinecraftStoryMod() {
    aliases = new ArrayList();
    aliases.add("msm");
}

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

@Override
public String getUsage(ICommandSender sender) {
    if (sender.getEntityWorld().isRemote) {
        return "/minecraftstorymod";
    } else {
        return "/minecraftstorymod";
    }
}

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

@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
    if (!MinecraftStoryMod.gameInProgress) {
        MinecraftStoryMod.gameInProgress = true;

        if (sender.getEntityWorld().isRemote) {
            sender.sendMessage(new TextComponentString("[CMinecraftStoryMod] Attempting to start game in a multiplayer world..."));
            sender.sendMessage(new TextComponentString("[CMinecraftStoryMod] Checking out the number of players in this world..."));
            if (server.getPlayerList().getCurrentPlayerCount() > 0) {
                sender.sendMessage(new TextComponentString("[CMinecraftStoryMod] There are " + server.getPlayerList().getCurrentPlayerCount() + " players in the server! Generating fun..."));
                MinecraftStoryMod.gameHandler.startGame(server.getPlayerList());
            } else {
                sender.sendMessage(new TextComponentString("[CMinecraftStoryMod] The server has 0 players!"));
                MinecraftStoryMod.gameInProgress = false;
                return;
            }
        } else {
            sender.sendMessage(new TextComponentString("[CMinecraftStoryMod] Singleplayer mode for this mod is still under construction. We're sowwy :)"));
            return;
        }
    } else {
        sender.sendMessage(new TextComponentString("[CMinecraftStoryMod] Another game is in progress! Wait for it ._."));
    }
}

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

@Override
public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos targetPos) {
    return null;
}

@Override
public boolean isUsernameIndex(String[] args, int index) {
    return false;
}

@Override
public int compareTo(ICommand o) {
    return 0;
}

我知道我正确注册了我的命令,因为我可以在游戏中输入/minecraftstorymod 。我使用的是 Forge 1.12.1 14.22.0.2469

最佳答案

您总是从 checkPermission 方法返回 false,这意味着没有人有权执行该命令。如果您希望任何人都能够执行该命令或根据发送者返回不同的值,您始终可以返回 true

关于java - 我在 Forge 1.12.1 中的自定义命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46129917/

相关文章:

java - 为什么Minecraft Forge在构建Gradle时会抛出 “method <init>()V not found”?

java - 如何创建整型变量的实例?

maven - Intellij IDEA Maven 导入问题

java - 用 Java 8 Optional 替换重复的 get 语句

java - Pair 类 getPair 方法

java - Java 如何获取网页的全部内容?

PHP 使用 cURL ping Minecraft 服务器

java - 在对话框中有两个 editText 并根据这些将肯定按钮设置为启用

java - 改进我的搜索方法

Java - emoji4j 静态方法调用结束/消失/死亡,没有错误