2014-04-06 2 views
0

Bukit 플러그인에서 손을 잡고 있으며 처음에는 약간의 어려움을 겪고 있습니다. 서버용 콘솔에서 명령을 실행할 수 없습니다. 리뷰를 얻을 수 있다면 무슨 일이 일어나는지 설명하는 것이 도움이 될 것입니다.Minecraft, FTB, MCPC +, Multicraft, Plugin : 콘솔이 권한없이 명령을 실행할 수 없습니다.

클래스 코드 : 이것은 단지 관련 코드 덩어리입니다.

//Overrides bukkits onCommand with modified code 
@Override 
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { 
    if (args.length > 1) {//No more then 1 argument 
     sender.sendMessage("[ConsoleFilter] Too many arguments!"); //Sends player a message 
     return false; 
    } 
    if (args.length < 1) {//No less then 1 argument 
     sender.sendMessage("[ConsoleFilter] Not enough arguments!"); //Sends player a message 
     return false; 
    } 
    if (cmd.getName().equalsIgnoreCase("CF")) { //Checks for /CF 
     if (args[0].equalsIgnoreCase("Reload")){ //Checks for /CF Reload 
      Player player = null; //Sets player 
      if (sender instanceof Player){ //if sender is a player entity 
       player = (Player) sender; //player = sender 
       //plugin.yml will actually validate permissions, however additional provisions allows for 
       //further security and further extendability. 
       if (player.isOp() || player.hasPermission("ConsoleFilter.Reload")){ //Is the player an Op or have specified Permission 
        this.reloadConfig(); //Reloads config file back into memory 
        player.sendMessage(ChatColor.DARK_GREEN + "Config Reloaded!"); //Sends player a message 
        getLogger().info("[ConsoleFilter] Config Reloaded"); 
        return true; //Close True 
       } 
      } 
      else{ 
       this.reloadConfig(); //Reloads config file back into memory 
       getLogger().info("[ConsoleFilter] Config Reloaded"); 
       return true; //Close True 
      } 
     } 
    } 
    return false; 
} 

서버 출력 : [서버] INFO 당신은 ConsoleFilter 권한 노드 - ConsoleFilter.Reload이

Plugin.yml이 없습니다 :이 파일은 제대로 어떤 간격 오류를 분석 게시 때문이다.

name: ConsoleFilter 
main: com.dirtyredz.ConsoleFilter.ConsoleFilter 
version: 0.0.1 
commands: 
    CF: 
     description: This is a demo reload command. 
     usage: /CF Reload 
     permission: ConsoleFilter.Reload 
     permission-message: You don't have ConsoleFilter Permissions node- ConsoleFilter.Reload 
permissions: 
    ConsoleFilter.*: 
     description: Complete access to consolefilter commands 
    children: 
     ConsoleFilter.reload: false 
    ConsoleFilter.reload: 
     description: Test reload 
     default: false 
+1

. 그리고 그것의 얼굴에, 당신의 "plugin.yml"파일은 명시 적으로 그 허락을 "false"로 설정하고 있습니다. 네가해야할 일이 무엇인지 분명하지 않니? 힌트 : ** 오류 메시지를 읽으십시오. ** –

+0

내 플러그인은 권한이 필요 없으며, 내 플러그인은 "plugin.yml"을 통해 권한을 생성합니다. Ontop의 "콘솔"은 플레이어 엔티티가 아니며 서버에있는 모든 것 위에는 권한이 필요 없습니다. 여기서 문제는 내 코드가 콘솔처럼 콘솔을 콘솔로 취급하지 않는다는 것입니다. – DirtyRedz

+0

저는 Bukkit 전문가는 아니지만, 당신의 가정이 틀렸다는 증거가 나와 함께합니다. minecraft 공개 토론은 이것 같이 질문하는 더 나은 장소이다. 그것이 Minecraft 전문가들이 행하는 곳입니다. –

답변

0

이렇게 나 혼자서 생각해 냈습니다. 문제는 plugin.yml이 false로 설정되지 않았기 때문에 사실 그대로 defualt의 사용자가 명령에 액세스 할 수 없도록 유지하려고합니다. 내 문제는 plugin.yml의 명령 블록 아래에 Permission-Node를 남겼다는 것이다. 기본 Bukkit API (명령 블록 허용) 및 업데이트 된 Bukkit API (사용 권한 차단 사용)를 사용하려고 시도하고있었습니다. 명령 블록 권한이 우선 순위에 있었고 내가 가지고 있던 모든 코드를 덮어 씁니다. 삭제함으로써 :

permission: ConsoleFilter.Reload 
permission-message: You don't have ConsoleFilter Permissions node- ConsoleFilter.Reload 

plugin.yml에서 나는 코드 작업을 할 수있었습니다.

는 또한 몇 가지 코드 변경은 최종 결과에 기여 할 수 있습니다 : 그것은 당신의 플러그인이없는있는 권한이 필요합니다 오류 메시지에서 꽤 명확한 것 같다

//Overrides bukkits onCommand with modified code 
@Override 
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { 
    if (args.length > 1) {//No more then 1 argument 
     sender.sendMessage("[ConsoleFilter] Too many arguments!"); //Sends player a message 
     return false; 
    } 
    if (args.length < 1) {//No less then 1 argument 
     sender.sendMessage("[ConsoleFilter] Not enough arguments!"); //Sends player a message 
     return false; 
    } 
    //plugin.yml will actually validate permissions, however additional provisions allows for 
    //further security and further extendability. 
    if (sender instanceof Player){ //if sender is a player entity 
     Player player = (Player) sender; //Sets player to sender 
     if (player.isOp() || player.hasPermission("ConsoleFilter.Reload")){//Is the player an Op or have specified Permission 
      if (cmd.getName().equalsIgnoreCase("CF")) { //Checks for /CF 
       if (args[0].equalsIgnoreCase("Reload")){ //Checks for /CF Reload 
        this.reloadConfig(); //Reloads config file back into memory 
        player.sendMessage(ChatColor.DARK_GREEN + "Config Reloaded!"); //Sends player a message 
        getLogger().info("[ConsoleFilter] Config Reloaded"); 
        return true; //Close True 
       } 
      } 
     }else{ 
      player.sendMessage("You do not have the appropriate Permissions. (ConsoleFilter.Reload)");; 
     } 
    }else{ 
     this.reloadConfig(); //Reloads config file back into memory 
     getLogger().info("[ConsoleFilter] Config Reloaded"); 
     return true; //Close True 
    } 
    return false; 
}