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

捕获异常“PlayerInteractEvent”并检查位置是否存在|| Minecraft插件Spigt Bukkit

吉鸿宝
2023-03-14

我有一个问题。我有一个我正在尝试使用的我的世界服务器插件,它不存在。

我收到以下错误:

无法将事件PlayerInteractEvent传递给XXX org.bukkit.event.EventException:org.bukit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:319)~[spigot-1.16.jar:git-spigot-57bbdd8-b8dd5ec],org.buk.plugin.RegisteredListener.callEvent(Registered Listener.java:70)~[spigot-116.3.jar:git-spigot-57bbdd8-b8dd5ec](SimplePluginManager.java:589)~[spigot-1.16.jar:git-spigot-57bbdd8-b8dd5ec],位于org.bukkit.plugin.SimplePluginManager调用事件(SimplePluginManager.java:576)~[spigot-1.66.jar:git-spigot-58bbdd8-b 8dd5sec],位于.org.bukkit.craftbukkit v1_16_R2.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory调用事件)(Craft调用事件工厂.java:483)~[spigot-1.1.16.3.jar:git-spigot-57bbDD5ec]8-b8dd5ec]时间org.bukkit.craftbukkit.v1_16_R2.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:450)~[spigot-1.16.jar:git-spigot-57bbdd8-b8dd5ec](位于net.minecraft.server.v1\u16_R2.PlayerInteractitManager.a(PlayerInterractManager.java:148)~[spigot-1.66.jar:git-spigot-58bbdd8-b 8dd5sec],位于net.menecraft.server.v1_ 16_R2.PlayerConnection.a(PlayerConnection.java:1219)(2)~[spigot-1.16.jar:git-spigot-57bbdd8-b8dd5ec],位于net.minecraft.server.v1_16_R2.PacketPlayInBlockDig.a(源文件:40)~[spigot-1.16.jar:git spigot-57bbdd8-b8dd5ec](位于net.menecraft.server.v1_ 16_R2.packetPlay InBlockdig.a(来源文件:10)~[spigot-1.63.jar:git-spigot-7bbdd8-b 8dd5sec],位于net.minecrift.server.v 1_16-R2.PlayerConnectionUtil ls.lambda$0(PlayerConnectionUtils.java:19)~[spigot-1.16.jar:git-spigot-57bbdd8-b8dd5ec]位于net.minecraft.server.v1_16_R2.TickTask.run(源文件:18)~[spigot-1.16.jar:git spigot-57 bbdd8-b 8dd5sec]位于net.minecraft.server.v1\u16_R2.IAsyncTaskHandler.executeTask(源代码:144)~[spigot-1.66.jar:git-Spingot-57bbdd8-b8 dd5ec位于net.mine craft.server.v1_16_R2.IAsync TaskHandlerReentrant。执行任务(源文件:23)~[spigot-1.16.jar:git-spigot-57bbdd8-b8dd5ec]位于net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeNext(源文件:118)~[spigot-1.16.jar:git spigot-57 bbdd8-b 8dd5sec]位于net.minecraft.server.v1_ 16_R2.MinecraftServer.ba(minecraft服务器.java:941)~[spigot-1.66.jar:git-Spugot-57bbdd8-b8 dd5ec位于net.mine craft.服务器.v1_craftServer。executeNext(MinecraftServer.java:934)~[spigot-1.16.jar:git-spigot-57bbdd8-b8dd5ec]位于net.minecraft.server.v1_16_R2.IAsyncTaskHandler.awaitTasks(源文件:127)~[spigot-1.16.jar:git spigot-57 bbdd8-b 8dd5sec]位于net.minecraft.server.v1_ 16_R2.MinecraftServer.sleepForTick(minecraft server.java:918)~[spigot-1.66.jar:git-Spingot-57bbdd8-b8 dd5ec]位于net.mine craft.server.v1_ 16_R2.minecraft craftServer.w(MinecraftServer.java:850)~[spigot-1.6.3.jar:git-spigot-57bbdd8-b8dd5ec]位于net.minecraft.server.v1_16_R2.MinecraftServer.lambda$0(minecraft server.java:164)~[spigot-1.16.jar:git-spigot-57bbdd8-b8dd5ec],位于java.lang.Thread.run(Thread.java:832)[?:?]由:java.lang.NullPointerException引起:无法调用“org.bukkit.Location.getBlockZ()”,因为“this.secondLocation”在三十、 在jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)~[?:?]处的PlayerInteractEventListener.onPlayerUse(PlayerInteractitEventListener.java:128)~[…:?]在jdk.internal.reflect.NativeMethodaccessorImple.invoke(NativeMetHodAccessor Impl.java:64)~[:?](jdk.invert.DelegatengMethodAccess Impl.iinvoke(DelegateingMethodAssessorImp.java:43)~[java.lang.reflect.Method.invoke(Method.java:564)~[?:?]位于org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:315)~[spigot-1.16.jar:git-spigot-57bbdd8-b8dd5ec]…21更多

是否有插口的例外列表?

在这种情况下,我应该使用try和get捕获哪个异常?

有人能提出任何其他检查给定位置是否存在的方法吗?

共有2个答案

孙乐逸
2023-03-14

用这个:

if (secondLocation != null) {
    int someVar = secondLocation.getBlockZ();
}

如果你想捕捉异常,你可以使用这个:

try {
    int someVar = secondLocation.getBlockZ();
} catch (NullPointerException) {
    // Handle exception
}
淳于乐池
2023-03-14

您是否尝试验证位置是否为空?

if (location != null){
   // Do your thing
}
 类似资料:
  • 问题内容: 如何在不使用Type语句的情况下查看文件是否存在? 问题答案: 如果你要检查的原因是可以执行类似的操作,则尝试使用 来打开它会更安全。检查然后打开可能会导致文件被删除或移动,或者介于检查和尝试打开文件之间。 如果你不打算立即打开文件,则可以使用 True如果path是现有的常规文件,则返回。这遵循符号链接,因此,对于同一路径,和都可以为。 如果你需要确保它是一个文件。 从Python

  • 问题内容: 有人告诉我,在Java中,可以在try块中捕获未检查的异常,但是如果捕获了它,就不称为已检查的异常吗? 问题答案: 未检查的异常是不需要在- 块中捕获的异常。未检查的异常是或类的子类。 已检查的异常是需要在- 块中捕获的异常。 可在Java语言规范的11.2节:编译时检查异常中找到检查和未检查异常的定义: 未检查的异常类是类及其子类,以及类及其子类。所有其他异常类都是检查的异常类。 仅

  • 如何检查字节中的某个位是否被设置?

  • 问题内容: 尝试检查我要读取的文件是否存在。 问题答案: 这是另一种方法: 包装的用途和功能: p_DirName in varchar2, – schema object name p_FileName in varchar2 ) return number is l_file_loc bfile; begin l_file_loc := bfilename(upper(p_DirName),

  • 问题内容: 在Java中,引发 检查 异常(Exception或其子类型- IOException,InterruptedException等)的方法必须声明 throws 语句: 不声明语句的 方法不能 引发检查的异常。 但是在Java中使用安全方法捕获检查的异常仍然合法: 其实没有 有点可笑:编译器知道 e 不是检查的异常,因此可以将其重新抛出。事情甚至有些荒谬,此代码无法编译: 第一个片段是

  • 我的RMI服务器接口声明了一个方法foo(),该方法被声明为引发RemoteException和Exception,如下所示: 服务器实现为: 我的客户端在服务器上调用foo: 现在,当我运行客户端时,我得到: 从java类型的foo()中获取异常。rmi。异常异常:未声明的检查异常;嵌套的例外是:java。伊奥。InterruptedIOException:操作超时 Java文档是这样说的。rm