2017-03-04 79 views
1

我正在为我的服务器开发一个基本插件,但我无法获得第5个命令。Minecraft Bukkit:命令不起作用

这里是Main.java的代码:

package me.knightgeek.geekessentials; 

import org.bukkit.Bukkit; 
import org.bukkit.ChatColor; 
import org.bukkit.GameMode; 
import org.bukkit.command.Command; 
import org.bukkit.command.CommandSender; 
import org.bukkit.entity.Player; 
import org.bukkit.plugin.java.JavaPlugin; 

public class Main extends JavaPlugin { 

public void onEnable() { //On plugin startup 
    Bukkit.getServer().getLogger().info("Geek Essentials has been Enabled"); 
} 

public void onDisable() { //On plugin close 
    Bukkit.getServer().getLogger().info("Geek Essentials has been Disabled"); 
} 

public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {  
    if (cmd.getName().equalsIgnoreCase("heal")) { 
     if (!(sender instanceof Player)) { 
      sender.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.RED + "The console cannot run this command!"); 

      return true; 
     } 

     Player player = (Player) sender; 

     if (args.length == 0) { 
      player.setHealth(20); 
      player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "You have been healed."); 

      return true; 
     } 

     @SuppressWarnings("deprecation") 
     Player target = Bukkit.getServer().getPlayer(args[0]); 

     if (target == null) { 
      player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.RED + "This player has not been found."); 
      return true; 
     } 
     target.setHealth(20); 
     target.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "You have been healed by " + ChatColor.WHITE + player.getName()); 
     player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "You have succesfully healed " + ChatColor.WHITE + target.getName()); 
     return true; 
    } 



    if (cmd.getName().equalsIgnoreCase("feed")) { 
     if (!(sender instanceof Player)) { 
      sender.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.RED + "The console cannot run this command!"); 

      return true; 
     } 

     Player player = (Player) sender; 

     if (args.length == 0) { 
      player.setFoodLevel(20); 
      player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "You have been fed."); 

      return true; 
     } 

     @SuppressWarnings("deprecation") 
     Player target = Bukkit.getServer().getPlayer(args[0]); 

     if (target == null) { 
      player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.RED + "This player has not been found."); 
      return true; 
     } 
     target.setFoodLevel(20); 
     target.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "You have been fed by " + ChatColor.WHITE + player.getName()); 
     player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "You have succesfully fed by " + ChatColor.WHITE + target.getName()); 
     return true; 
    } 



    if (cmd.getName().equalsIgnoreCase("survival")) { 
     if (!(sender instanceof Player)) { 
      sender.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.RED + "The console cannot run this command!"); 

      return true; 
     } 

     Player player = (Player) sender; 

     if (args.length == 0) { 
      player.setGameMode(GameMode.SURVIVAL); 
      player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "Your gamemode is set to survival."); 
      return true; 
     } 

     @SuppressWarnings("deprecation") 
     Player target = Bukkit.getServer().getPlayer(args[0]); 

     if (target == null) { 
      player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.RED + "This player has not been found."); 
      return true; 
     } 
     target.setGameMode(GameMode.SURVIVAL); 
     target.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "Your gamemode is set to survival by " + player.getName()); 
     player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "You have succesfully set " + target.getName() + "'s gamemode to survival."); 
     return true; 
    } 



    if (cmd.getName().equalsIgnoreCase("creative")) { 
     if (!(sender instanceof Player)) { 
      sender.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.RED + "The console cannot run this command!"); 

      return true; 
     } 

     Player player = (Player) sender; 

     if (args.length == 0) { 
      player.setGameMode(GameMode.CREATIVE); 
      player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "Your gamemode is set to creative."); 
      return true; 
     } 

     @SuppressWarnings("deprecation") 
     Player target = Bukkit.getServer().getPlayer(args[0]); 

     if (target == null) { 
      player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.RED + "This player has not been found."); 
      return true; 
     } 
     target.setGameMode(GameMode.CREATIVE); 
     target.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "Your gamemode is set to creative by " + ChatColor.WHITE + player.getName()); 
     player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "You have succesfully set " + ChatColor.WHITE + target.getName() + ChatColor.GREEN + "'s gamemode to creative."); 
     return true; 
    } 



    if (cmd.getName().equalsIgnoreCase("adventure")) { 
     if (!(sender instanceof Player)) { 
      sender.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.RED + "The console cannot run this command!"); 

      return true; 
     } 

     Player player = (Player) sender; 

     if (args.length == 0) { 
      player.setGameMode(GameMode.ADVENTURE); 
      player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "Your gamemode is set to adventure."); 
      return true; 
     } 
     @SuppressWarnings("deprecation") 
     Player target = Bukkit.getServer().getPlayer(args[0]); 

     if (target == null) { 
      player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.RED + "This player has not been found."); 
      return true; 
     } 
     target.setGameMode(GameMode.ADVENTURE); 
     target.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "Your gamemode is set to adventure by " + ChatColor.WHITE + player.getName()); 
     player.sendMessage(ChatColor.GOLD + "[Geek Essentials] " + ChatColor.GREEN + "You have succesfully set " + ChatColor.WHITE + target.getName() + ChatColor.GREEN + "'s gamemode to adventure"); 
     return true; 
    } 

    return true; 
} 
} 

这里是plugin.yml:

name: GeekEssentials 
main: me.knightgeek.geekessentials.Main 
author: KnightGeek 
description: The essentials plugin for GeekCraft. 
version: 1.0 

commands: 
    heal: 
     usage: /<command> 
     description: Heals a player. 
    feed: 
     usage: /<command> 
     description: Feeds a player. 
    survival: 
     usage: /<command> 
     description: Sets your gamemode to survival. 
    creative: 
     usage: /<command> 
     description: Sets your gamemode to creative. 
    adventure: 
     usage: /<command> 
     description: Sets your gamemode to adventure. 

这里的问题是,它给了我未知的命令文本。当使用/冒险命令时,它给了我这个。所有其他命令都可以正常工作。我已经重写了这个命令的代码,但仍然没有找到解决的办法。

也许有人知道我在做什么错在这里? P.S .:缩进是错误的,我知道。这是因为我不得不重新缩进所有东西,而我并没有打算这么做。在Eclipse中它缩进就像它应该。

+0

找到解决方案: 我把它保存为一个禁用的插件,我也做了。所以我无法使用它。 **我真笨!** –

回答

0

欧普对他的解决方案进行了评论,并给出了答案,因为它可能有助于未来的用户。


这种情况是由于您的插件没有被导出为您期望的插件导致的。

您正在将其导出为不同的jar文件,它不在您的服务器文件夹中,因此您无法测试添加到该插件的任何新代码。

解决这一很简单:

当出口从Eclipse的插件,确保你把它保存在正确的jar文件,作为服务器将只读取plugins目录里面的插件。