3TUSK 发表于 2021-8-11 02:10
我假定你是在 1.16.5 或附近的版本上,因为我也找到了。
……但不是在 main 方法里,而是在 Main 类的静态 ...
还真是在<clinit>方法中(1.16.4),是我记错了
这么说,现在的Mod是不兼容MacOS的,那解决方案是不是就只有改用JavaFX或OpenGL了。如果改用JavaFX,部分简化的JRE将不被支持;如果改用OpenGL,要么得编写大量本地代码实现要么依赖LWJGL的API从而放弃对物理服务端的支持。虽然可以在客户端改用OpenGL,并在服务端保持原来的方式不变,但这种不一致性个人又觉得不大好。问一下有没有合适的解决方案。
lovexyn0827 发表于 2021-8-11 03:10
还真是在方法中(1.16.4),是我记错了
这么说,现在的Mod是不兼容MacOS的,那解决方案是不是就只有改用J ...
MacOS
你可以考虑不支持 macOS。
改用JavaFX
虽说有类似 BellSoft Liberica 这样的发行版还在 bundle 相关库,但大部分我知道的发行版都是没有 bundle 的,需要用户自行安装并配置 classpath。
所以如你所说,会是一个大问题,而且不只是「部分简化的 JRE」。
放弃对物理服务端的支持
我建议你跳出思维定势:在服务器上的渲染非得要通过 LWJGL 完成?
我的想法是,在服务器上,区块加载小地图的数据是以 JSON 或者别的格式呈现的,由一套简单的 HTTP 后端API 暴露出来,然后在服务器启动时顺手启动一个 HTTP 服务器提供基于 HTML(5?) 的渲染。
3TUSK 发表于 2021-8-11 03:21
你可以考虑不支持 macOS。
个人认为放弃对MacOS的支持是不可取的
统一迁移到JavaFX看来也不可取
渲染部分确实可以用给出的方式实现,但是在目前的设计中还有一些需要与服务端直接交互的功能,如移动地图显示范围和手动加载区块,不知道这种方案中能否实现。
目前个人认为最合适的方法就是尝试将两种不同环境下的渲染分开,在物理客户端使用OpenGL,在物理服务端使用Swing(实际上原版的服务器GUI也是基于Swing搭建的)。
lovexyn0827 发表于 2021-8-11 03:47
个人认为放弃对MacOS的支持是不可取的
统一迁移到JavaFX看来也不可取
渲染部分确实可以用给出的方式实现 ...
移动地图显示范围
可以做一个 API endpoint 来实现增量请求。
手动加载区块
发一个 POST 请求。