Java 如何从单独的类访问Overworld的当前IWorld实例

Java 如何从单独的类访问Overworld的当前IWorld实例,java,minecraft,minecraft-forge,Java,Minecraft,Minecraft Forge,我目前正试图从一个单独的线程中修改一个特定块的BlockState(在一个已知位置),该线程正在监视并等待外部事件发生(与Minecraft无关)。为此,我需要获取overworld实例并调用IWorld类的setBlockState方法。由于这个单独的线程没有传递任何服务器或世界参数,因此我需要以某种方式手动获取实例(可能来自公共静态变量或getter方法) 是否有一种简单的方法可以从类(不可用的MinecraftServer.getServer()方法的替代方法)中获取当前超世界的IWorl

我目前正试图从一个单独的线程中修改一个特定块的BlockState(在一个已知位置),该线程正在监视并等待外部事件发生(与Minecraft无关)。为此,我需要获取overworld实例并调用IWorld类的
setBlockState
方法。由于这个单独的线程没有传递任何服务器或世界参数,因此我需要以某种方式手动获取实例(可能来自
公共静态
变量或getter方法)


是否有一种简单的方法可以从类(不可用的MinecraftServer.getServer()方法的替代方法)中获取当前超世界的IWorld实例?

通过遵循
MinecraftServer
参数的用法、实现和层次结构,我发现
ServerLifecycleHooks
类具有以下声明
private static MinecraftServer currentServer
,其中包含对当前运行的
MinecraftServer
实例的引用。此变量有一个getter方法,可以通过
ServerLifecycleHooks.getCurrentServer()
调用该方法

然后,您可以存储服务器实例,或者立即对其调用
getWorld(DimensionType-dimension)
方法,以获取任何世界的引用。此函数返回一个
MinecraftServer
类型,该类型扩展了
IWorld
类型,可根据需要使用。示例实现如下所示,分别获取上世界、下世界和最终世界:

MinecraftServer currentServer = ServerLifecycleHooks.getCurrentServer();

IWorld currentOverworld = currentServer.getWorld(DimensionType.OVERWORLD);
IWorld currentNether = currentServer.getWorld(DimensionType.THE_NETHER);
IWorld currentEnd = currentServer.getWorld(DimensionType.THE_END);