gpt4 book ai didi

java - 如何从单独的类访问当前的 IWorld 实例

转载 作者:行者123 更新时间:2023-12-04 09:45:57 27 4
gpt4 key购买 nike

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

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

最佳答案

遵循 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);

关于java - 如何从单独的类访问当前的 IWorld 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62113655/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com