2017-09-09 33 views
0

所以我做了一个实现了ICommand的类,并将其注册到了我的ServerStarting事件中。当我尝试在Minecraft中执行该命令时,我得到了一个没有权限的错误。这里是我的ICommand实现类:我在Forge 1.12.1中的自定义命令不起作用

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

回答

1

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

+0

有没有办法检查玩家是操作还是有权限节点? –

+0

对Ops和命令名使用ICommandSender.canUseCommand和权限级别4。你在说什么权限系统? “Minecraft”和“Forge”都没有内置。 – Shadowfacts