2017-04-13 5 views
0

서버용 필수 명령으로 플러그인을 만들고 있는데, 정상적으로 작동하는 몇 가지 이벤트를 넣었습니다. 그러나 명령을 추가하려고하면 작동하지 않습니다. (요청하기 전에 onCommand 섹션의 모든 내용을 간단한 sendMessage로 바꾸 었으며 아무 것도하지 않습니다.) 이 명령을 실행하면 plugin.yml에 넣은 사용법 만 알려줍니다. 여기 bukkit 명령을 인식했습니다. n

내 코드입니다 : 미안 그것은

package com.pepsi.core; 

import org.bukkit.Bukkit; 
import org.bukkit.command.Command; 
import org.bukkit.command.CommandSender; 
import org.bukkit.entity.Player; 
import org.bukkit.event.EventHandler; 
import org.bukkit.event.Listener; 
import org.bukkit.event.player.AsyncPlayerChatEvent; 
import org.bukkit.event.player.PlayerJoinEvent; 
import org.bukkit.plugin.java.JavaPlugin; 

public class Main extends JavaPlugin implements Listener { 

@Override 
public void onEnable() { 

    Bukkit.getLogger().info("PepsiCore >> Enabled!"); 
    Bukkit.getServer().getPluginManager().registerEvents(this, this); 

    getConfig().options().copyDefaults(true); 
    saveConfig(); 

} 

@Override 
public void onDisable() { 

    Bukkit.getLogger().info("PepsiCore >> Disabled!"); 

} 

public boolean onCommand(Command cmd, CommandSender sender, String cmdLbl, String[] args) { 

    if (args.length == 0) { 
     sender.sendMessage(Util.transMsg("&e<!> &6&lPepsiCore &8>> &eNot enough arguments! Use &6/pcore help &e to see a list of commands!")); 
     return false; 
    } 

    if (args.length == 1) { 

     if (args[0].equalsIgnoreCase("help")) { 
      sender.sendMessage(Util.transMsg("&8--------------------<&6&lPepsiCore&8>--------------------")); 
      sender.sendMessage(Util.transMsg("&6/pcore help &8>> &eDisplays the help page")); 
      sender.sendMessage(Util.transMsg("&6/pcore info &8>> &eDisplays the plugin info page")); 
      sender.sendMessage(Util.transMsg("&6/pcore ranks &8>> &eDisplays all the ranks")); 
      sender.sendMessage(Util.transMsg("&6/pcore setrank <player> <rank> &8>> &eDisplays all the ranks")); 
      sender.sendMessage(Util.transMsg("&8--------------------<&6&lPepsiCore&8>--------------------")); 
      return true; 
     } 

     if (args[0].equalsIgnoreCase("info")) { 
      sender.sendMessage(Util.transMsg("&8--------------------<&6&lPepsiCore&8>--------------------")); 
      sender.sendMessage(Util.transMsg("&ePepsiCore version &61.0.0-BETA")); 
      sender.sendMessage(Util.transMsg("&eDeveloped by &6P3pi &efor &6Project: Infernal")); 
      sender.sendMessage(Util.transMsg("&8--------------------<&6&lPepsiCore&8>--------------------")); 
      return true; 
     } 

     if (args[0].equalsIgnoreCase("ranks")) { 
      sender.sendMessage(Util.transMsg("&e<!> &6&lPepsiCore &8>> &eRanks: &6guest&e, &6gold&e, &6diamond&e, &6emerald&e, &6yt&e, &6staff&e, &6developer&e, &6owner")); 
      return false; 
     } 

     if (args[0].equalsIgnoreCase("setrank")) { 
      sender.sendMessage(Util.transMsg("&e<!> &6&lPepsiCore &8>> &eNot enough arguments! Use &6/pcore help&e to see a list of commands!")); 
      return false; 
     } 

     sender.sendMessage(Util.transMsg("&e<!> &6&lPepsiCore &8>> &eInvalid arguments! Use &6/pcore help&e to see a list of commands!")); 
     return false; 
    } 

    if (args.length == 2) { 

     if (args[0].equalsIgnoreCase("setrank")) { 
      sender.sendMessage(Util.transMsg("&e<!> &6&lPepsiCore &8>> &eNot enough arguments! Use &6/pcore help&e to see a list of commands!")); 
      return false; 
     } 

     sender.sendMessage(Util.transMsg("&e<!> &6&lPepsiCore &8>> &eInvalid arguments! Use &6/pcore help&e to see a list of commands!")); 
     return false; 
    } 

    if (args.length == 3) { 

     if (args[0].equalsIgnoreCase("setrank")) { 

      Player t = Bukkit.getServer().getPlayer(args[1]); 
      if (t == null) { 
       sender.sendMessage(Util.transMsg("&e<!> &6&lPepsiCore &8>> &eThe player &6" + args[1] + " &eis not online at the moment!")); 
       return false; 
      } 

      String uuid = t.getUniqueId().toString(); 
      String rank = args[2]; 

      if (rank == ("guest")) { getConfig().set("ranks." + uuid, rank); } 
      else if (rank == ("gold")) { getConfig().set("ranks." + uuid, rank); } 
      else if (rank == ("diamond")) { getConfig().set("ranks." + uuid, rank); } 
      else if (rank == ("emerald")) { getConfig().set("ranks." + uuid, rank); } 
      else if (rank == ("yt")) { getConfig().set("ranks." + uuid, rank); } 
      else if (rank == ("staff")) { getConfig().set("ranks." + uuid, rank); } 
      else if (rank == ("developer")) { getConfig().set("ranks." + uuid, rank); } 
      else if (rank == ("owner")) { getConfig().set("ranks." + uuid, rank); } 
      else { sender.sendMessage(Util.transMsg("&e<!> &6&lPepsiCore &8>> &eThe rank &6" + rank + " &e does not exist! Use &6/pcore ranks &eto see a list of ranks!")); } 

     } 

     sender.sendMessage(Util.transMsg("&e<!> &6&lPepsiCore &8>> &eInvalid arguments! Use &6/pcore help&e to see a list of commands!")); 
     return false; 
    } 

    return true; 
} 

@EventHandler 
public void onPlayerChat(AsyncPlayerChatEvent e) { 

    Player p = e.getPlayer(); 
    String uuid = p.getUniqueId().toString(); 
    String name = p.getName(); 
    String msg = e.getMessage(); 

    String rank = (String) getConfig().get("ranks." + uuid); 

    if (rank == "guest") { e.setFormat(Util.transMsg("&fGuest &7&l" + name + " &8>> &f" + msg)); } 
    else if (rank == "gold") { e.setFormat(Util.transMsg("&eGold &6&l" + name + " &8>> &e" + msg)); } 
    else if (rank == "diamond") { e.setFormat(Util.transMsg("&bDiamond &3&l" + name + " &8>> &b" + msg)); } 
    else if (rank == "emerald") { e.setFormat(Util.transMsg("&aEmerald &2&l" + name + " &8>> &a" + msg)); } 
    else if (rank == "yt") { e.setFormat(Util.transMsg("&dYouTuber &5&l" + name + " &8>> &d" + msg)); } 
    else if (rank == "staff") { e.setFormat(Util.transMsg("&9Staff &1&l" + name + " &8>> &9" + msg)); } 
    else if (rank == "developer") { e.setFormat(Util.transMsg("&cDeveloper &4&l" + name + " &8>> &c" + msg)); } 
    else if (rank == "owner") { e.setFormat(Util.transMsg("&cOwner &4&l" + name + " &8>> &c" + msg)); } 
    else { e.setCancelled(true); p.sendMessage(Util.transMsg("&e<!> &6&lPepsiCore &8>> &eYour rank seems to be broken! Please let a member of staff know!")); } 

} 

@EventHandler 
public void onPlayerJoin(PlayerJoinEvent e) { 

    Player p = e.getPlayer(); 
    String uuid = p.getUniqueId().toString(); 

    if (p.hasPlayedBefore() == false) { 
     getConfig().set("ranks." + uuid, "guest"); 
     saveConfig(); 
     return; 
    } 

} 

} 

여기 내 plugin.yml 정말 길어 : 도움

답변

1

Bukkit에서 명령을 처리하는 방법은 JavaPlugin 클래스의 onCommand 메소드를 실행하는 것입니다. Vlexing가 언급 한 바와 같이이 명령이 실행될 때 당신의 방법을 실행 해 대신에만 포함 JavaPlugin에서 onCommand 방법을 실행하지 않는, 그래서, CommandSender sender, Command command, String label, String[] args

귀하의 방법이 잘못된 순서로 인수를 가지고 인수를 구체적으로 onCommand 방법 return false;. Bukkit은 여전히 ​​plugin.yml 때문에 명령을 인식하지만, 귀하의 방법을 실행하려고했을 때 false을 얻었으므로 사용법 메시지가 인쇄됩니다.

기본적으로 인수의 순서를 수정하고 Vlexing의 대답을 따르고 설정해야합니다.

1

에 대한

name: PepsiCore 
author: P3pi 
version: 1.0.3 
main: com.pepsi.core.Main 

commands: 
    pcore: 
     description: Core command 
     usage: /pcore 
    pepsicore: 
     description: Core command 
     usage: /pepsicore 

덕분에 onCommand() 방법으로 코드를 작성하는 경우 코드 블록은 항상 return true이어야합니다. 예 :

if (args[0].equalsIgnoreCase("ranks")) { 
     sender.sendMessage(Util.transMsg("&e<!> &6&lPepsiCore &8>> &eRanks: &6guest&e, &6gold&e, &6diamond&e, &6emerald&e, &6yt&e, &6staff&e, &6developer&e, &6owner")); 
     return false; 
    } 

return false;을 사용하면 plugin.yml 사용법을 알 수 있습니다.

this spigot thread talking about the same issue을 참조하십시오.

this bukkit thread talking about the same issue을 참조하십시오.

+0

나는 당신이 말한대로했는데 여전히 똑같은 문제가 있습니다 ... onCommand 섹션의 모든 리턴 falses는 이제 사실로 돌아가고 여전히 작동하지 않습니다. 또한 맨 아래쪽에있는 리턴으로 시도했습니다. 거짓과 나머지는 사실로 돌아옵니다 .... 도와주세요? – graphicalcake95

+0

나는 또한 당신의 onCommand() args에'Command cmd, CommandSender sender, String cmdLbl, String [] args'가 있다는 것을 알아 차렸다. args를 가지는 정확한 방법은'public boolean onCommand (CommandSender sender, Command cmd, String commandLabel, String [] args) {}'입니다. 그것이 당신의 주된 문제에 도움이되는지 실제로 알지는 못한다. 그러나 나는 그것을 지적하고 싶다. – Vlexing

+0

모두 반환하고 메시지를 숨겨야합니다. – Squiddie