当前位置: 首页 > 知识库问答 >
问题:

NullPointer在主类中注册新命令时的异常

赖鸿羲
2023-03-14

我想在我正在开发的minecraft插件中创建一个新命令。它应该给玩家一个物品。我在主类和插件中注册了该命令。但是当服务器加载插件时,它总是抛出NullPointerException。

我真的很感激你的帮助

谢啦!

这是我的主要课程:


package dungeonsremake.dungeonsremake;

import dungeonsremake.dungeonsremake.commands.GiveCustomItem;
import org.bukkit.plugin.java.JavaPlugin;

public final class Main extends JavaPlugin {

    @Override
    public void onEnable() {
    
            this.getCommand("item").setExecutor(new GiveCustomItem());
    
    }
    
    @Override
    public void onDisable() {
        getLogger().info("Shutting down Plugin");
    }

}

这是我的命令类:


package dungeonsremake.dungeonsremake.commands;

import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;

public class GiveCustomItem implements CommandExecutor {

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        System.out.println("activated");
        if(!(sender instanceof Player)) {
            return true;
        }
        Player player = (Player) sender;
    
        if(command.getName().equalsIgnoreCase("item")) {
            ItemStack fot = new ItemStack(Material.LEGACY_RED_ROSE);
            fot.setAmount(1);
            player.getInventory().addItem(fot);
            return true;
        }
    
        return true;
    
    }

}

我的plugin.yml:

name: DungeonsRemake
main: dungeonsremake.dungeonsremake.Main
version: 1.0

commands:
item:
usage: /<command>
description: gives the player a custom item.
aliases: [giveitem, item, customitem, ci, gci]

错误信息:

    java.lang.NullPointerException: Cannot invoke "org.bukkit.command.PluginCommand.setExecutor(org.bukkit.command.CommandExecutor)" because the return value of "dungeonsremake.dungeonsremake.Main.getCommand(String)" is null
    at dungeonsremake.dungeonsremake.Main.onEnable(Main.java:15) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot-api-1.18.2-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:342) ~[spigot-api-1.18.2-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480) ~[spigot-api-1.18.2-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_18_R2.CraftServer.enablePlugin(CraftServer.java:517) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3465-Spigot-ffceeae-3ec79a2]
    at org.bukkit.craftbukkit.v1_18_R2.CraftServer.enablePlugins(CraftServer.java:431) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3465-Spigot-ffceeae-3ec79a2]
    at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:612) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3465-Spigot-ffceeae-3ec79a2]
    at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:414) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3465-Spigot-ffceeae-3ec79a2]
    at net.minecraft.server.dedicated.DedicatedServer.e(DedicatedServer.java:263) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3465-Spigot-ffceeae-3ec79a2]
    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1007) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3465-Spigot-ffceeae-3ec79a2]
    at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:304) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3465-Spigot-ffceeae-3ec79a2]
    at java.lang.Thread.run(Thread.java:833) [?:?]

共有1个答案

班展
2023-03-14

根据文件

命令需要在PluginDescriptionFile中注册才能在运行时存在。

它找不到<code>项

commands:
  item:
   usage: /<command>
   description: gives the player a custom item.
   aliases: [giveitem, item, customitem, ci, gci]

这应该是正确的缩进。

 类似资料:
  • 这篇文章是applicationcontext.xml中bean声明的连续性 我有一个使用Spring3和Hibernate4以及JSF2的小应用程序,当我运行我得到的应用程序时。 ManagedBean: 并且我有注入注释: 在EmployeeService中,我有如下注释: 更新2 ApplicationContext.xml:

  • 问题内容: 因此,这可能是一个愚蠢的问题,但是何时使用以下方法注册课程: 当前,我正在类似接口的类的构造函数中执行此操作,该类在其他类中用于简化数据存储对我的应用程序的使用。但是,我收到此错误: 尝试两次注册种类“用户” 所以,我想我的问题是,您多久在一次Objective中注册类? 谢谢! PS这是我的整个课程: 问题答案: 更新资料 这是最佳实践解决方案: 使用您自己的服务,这可以确保在使用O

  • 我们正在使用实例ID API切换通知架构体系,以使用新的GCM 3.0注册机制。以前我们使用旧的机制使用GCMRegistrar.register()方法。 我们遇到的问题是,我们注意到,如果设备是用旧的GCMRegistar注册的,那么在更新并用新的实例ID API注册之后,两个注册令牌都是有效的,并且可以接收通知。 我预计旧的注册令牌将被停用,并且当向旧令牌发送通知时,我们的推送服务器将收到规

  • 我尝试将它注入函数,就像您应该对服务做的那样,以便在全局范围内拥有一个实例,但这并不奏效

  • 我有一个插件,但我一直有一个问题注册一个命令。该命令与plugin.yml一起在onEnable中设置。有什么可能出错的想法吗? 主类

  • 问题内容: 当我尝试运行项目时,Tomcat返回异常。 有人可以帮助解决这个问题吗?配置类:https : //github.com/intrade/inventory/blob/master/src/main/java/com/springapp/mvc/InitApp/SecurityConfig.java 堆栈跟踪: 安全过滤器出现问题。项目链接:GitHub 问题答案: 该问题与SEC-2