无编辑摘要 |
无编辑摘要 |
||
(未显示2个用户的9个中间版本) | |||
第1行: | 第1行: | ||
[[分类: | [[分类:核心]] | ||
= 什么是PowerNukkitX? = | |||
== 简介 == | == 简介 == | ||
[[文件:PowerNukkitX BANNER.png|缩略图|456x456像素|PowerNukkitX Logo]] | |||
PowerNukkitX(简称PNX)是由包括[[BlocklyNukkit]]团队在内的中国[[Nukkit]]开发者们负责开发维护的Nukkit分支版本,修复了众多BUG,改善了性能,及时跟进新版本支持、支持1.18所有新方块和新物品、支持新版下界、支持史诗地形生成器(Terra)。在这些大更改的情况下,PNX仍然保持了良好的插件兼容性,Nukkit生态中的数千个插件仍然可以在PNX上运行。 得益于完全开源的代码,您在遵守开源协议的情况下使用PowerNukkitX没有任何法律风险,内部的数十万API可以随意调用,您可以深入查看实现,通过JVM生态中的各种工具及其方便地进行开发、调试、注入、拦截。也正因如此,Nukkit生态丰富多彩,成百上千各种各样的插件供您选择,您可以用您喜欢的任意JVM语言编写插件,如Java,Kotlin,Scala,Python,Javascript,Lua…… | |||
大多数为Nukkit制作的插件都可以在PowerNukkitX上使用,但某些插件在运行时可能会出一些错误等或不支持PowerNukkitX添加的新内容。 | |||
==为什么我们要开发PNX?== | |||
最直接的原因就是:只有核心强,生态才能强。 | |||
我们可以毫不掩饰地说,去重之后,Nukkit生态是基岩版作品最多的生态之一,也是基岩版最高技术力的圈子之一。但是,Nukkit核心在开发团队被CubeCraft买去开发Geyser 项目之后,开发强度急剧下降,随着国外众多开发者进入JE圈子,国内BDS圈子向心力逐渐加强,Nukkit系核心渐渐地不再能跟上be社区发展的步伐。作为自由开源精神的践行者, 作为Nukkit生态的主力,我们有必要接过Nukkit系服务端开发的任务,续写被EaseCation遗忘的的国人核心开发的篇章。 | |||
==优势和差异 == | |||
*最新版mcbe协议支持 | |||
*1.18全物品方块及其功能支持 | |||
*384格世界支持 | |||
*新版下界生物群系支持 | |||
*史诗地形生成器 | |||
*修复众多bug | |||
*自定义物品、方块(WIP) | |||
*全开源、全API开放、插件众多 | |||
*更高性能,多核优化(堆核而非堆cpu频率) | |||
==联系链接== | |||
*GitHub https://github.com/BlocklyNukkit/PowerNukkitX | |||
*官网 https://www.powernukkitx.cn/ | |||
*Discord https://discord.com/invite/j7UwsaNu4V | |||
*QQ群 https://jq.qq.com/?_wv=1027&k=6rm3gbUI | |||
=快速入门= | |||
跟随本教程,十分钟(不包括下载耗时)开启您的第一个PowerNukkitX服务器。 | |||
本教程将带您使用PowerNukkitX的启动器(Bootstrap)来快速安装并启动服务器。 | |||
==配置环境== | |||
===下载启动器=== | |||
稳定版:点击下载稳定版启动器[https://assets.powernukkitx.cn/stable/Bootstrap-0.0.1-beta-shaded.jar master-ef2e75c] | |||
最新版: 前往[https://github.com/PowerNukkitX/PowerNukkitX/actions 自动构建页面],打开您要下载的版本的构建界面并下载PowerNukkitX-Bootstrap 构件,下载完成后解压。 | |||
===安装Java环境 === | |||
==== Windows==== | |||
下载OpenJDK17安装包 并按照提示安装,一路默认下一步即可完成安装。 | |||
====Linux==== | |||
Ubuntu系统安装: | |||
<code>sudo apt update && sudo apt upgrade -y</code> | |||
<code>sudo apt-get install openjdk-17-jre</code> | |||
==启动服务器== | |||
===命令行启动=== | |||
将启动器jar包复制到你要开服的文件夹中,并在此文件夹下输入命令: | |||
<code>java -jar Bootstrap-0.0.1-beta-shaded.jar</code> | |||
随后启动器将自动开始配置,按照控制台给出的提示,启动器会自动下载配置好PNX需要的java环境,下载并安装PNX核心及依赖库,随后服务器会自动启动。 | |||
如果您在关服后想要再次开服,再次输入上面的命令即可。 | |||
[[文件:Powernukkitx-0.png|替代=|800x800像素]] | |||
正常开服界面如下:欲关闭服务器,输入<code>stop</code>即可。 | |||
===图形界面启动=== | |||
如果您使用Windows系统、MacOS系统或带有图形界面的Linux系统,可以通过图形界面来管理并启动服务器。 | |||
在Windows或MacOS上,如果您已经正确地配置了Java运行环境,您可以直接双击启动器jar包来打开PNX界面;在Linux上,您可以通过<code>java -jar Bootstrap-0.0.1-beta-shaded.jar --gui</code> | |||
来在安装了图形界面的系统中打开PNX界面,PNX正确启动后会显示如下界面: | |||
[[文件:Powernukkitx-1.png]] | |||
点击 窗口 -> 检查更新,打开更新检查窗口: | |||
[[文件:Powernukkitx-2.png|无框]] | |||
双击标有叉号的项目,挨个双击子项,启动器就会自动修复你点击的子项,直到所有的叉号都消失为止。 | |||
点击 服务端 -> 启动服务端,即可启动PowerNukkitX服务器: | |||
如果出现此界面,输入<code>chs</code>并回车即可以中文模式启动PowerNukkitX服务端。 | |||
[[文件:Powernukkitx-3.png|无框|702x702像素]] | |||
=启动器= | |||
==启动PNX== | |||
===为什么用启动器=== | |||
Bootstrap,启动器,是PNX官方提供的用于启动PowerNukkitX的工具。 | |||
它可以通过命令行和图形界面两种方式使用,提供了简单易用的开服体验,具有以下优点: | |||
*快捷开服,无需复杂配置 | |||
*占用资源少,不会对核心运行造成明显影响 | |||
*自动配置java环境,自动检测并使用性能最高的Java启动PNX | |||
*方便安装依赖库、更新服务端核心 | |||
* 可以在只有Java8的面板服启动PNX | |||
*自动配置复杂的启动参数 | |||
启动器的使用方式,详见“快速入门”章节。 | |||
===不使用启动器开服=== | |||
当然,你也可以不用启动器开服,但开服的配置将会较为复杂,传统的开服命令不再适合PNX。 | |||
首先,你需要前往Github action,选择一个完整的构建任务,点开进入构建详情界面,找到如下的构建物界面: | |||
[[文件:Powernukkitx-4.png|无框|437x437像素]] | |||
确定你登录了Github后,点击下载<code>PowerNukkitX-Core</code>和<code>PowerNukkitX-Libs</code>,这将分别下载PNX服务端核心和依赖库的压缩包。 | |||
下载成功后,解压上述安装包,将服务端核心跟依赖库分别解压到不同的文件夹中。 | |||
接下来,找到你的java17的安装路径,在此路径下找到对应的java二进制文件的绝对路径,记录下来。 | |||
现在,你可以着手开始编写你的开服命令了。 | |||
开服命令模板如下: | |||
<code>%JAVA% -Dfile.encoding=UTF-8 -Djansi.passthrough=true -Dterminal.ansi=true --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED -cp %PNX%%CP_SPLIT%%LIBS_PATH% cn.nukkit.Nukkit</code> | |||
请您将上述模板中的占位符(两侧为%的文字,包括百分号)按照如下说明进行替换: | |||
{| class="wikitable" | |||
!占位符 | |||
!替换为 | |||
|- | |||
|JAVA | |||
|java17二进制文件绝对路径 | |||
|- | |||
|PNX | |||
|PNX核心jar包路径 | |||
|- | |||
|CP_SPLIT | |||
|系统路径分隔符,Windows为;,Linux为: | |||
|- | |||
|LIBS_PATH | |||
|存放依赖库的文件夹路径 | |||
|} | |||
在命令行上输入您修改完的开服命令,即可启动PNX服务端。 | |||
注意,您需要留心依赖库变化,如果依赖库发生变化,您需要手动重新下载依赖库重复上述步骤,依赖库如有变化,恕不另行通知。 | |||
==启动器命令行参数== | |||
当您从命令行启动时,您可以添加一些参数以使用启动器的更多功能。 | |||
===help=== | |||
用法:<code>-h</code> <code>--help</code> | |||
说明:显示命令行帮助 | |||
===version=== | |||
用法:<code>--version</code> <code>--version=[item:string]</code> | |||
参数: | |||
*item 指定检查更新的项目,可选<code>pnx</code> <code>java</code> <code>bootstrap</code> | |||
说明:检测并显示当前服务端核心、Java和启动器的版本 | |||
===autoRestart=== | |||
用法:<code>--autoRestart</code> | |||
说明:服务端关闭后自动重启 | |||
===updatePNX=== | |||
用法:<code>--updatePNX</code> | |||
说明:更新PNX服务端核心 | |||
===updateLibs=== | |||
用法:<code>--updateLibs</code> | |||
说明:更新依赖库 | |||
===updateBootstrap=== | |||
用法:<code>--updateBootstrap</code> | |||
说明:更新启动器 | |||
===updateComponents=== | |||
用法:<code>--updateComponents</code> | |||
说明:更新附加组件 | |||
== 启动器配置文件 == | |||
PNX启动器具有一系列易于使用的默认配置,同时也允许用户自定义自己的配置,用户自定义配置的优先级高于默认配置。 | |||
PNX启动器的用户配置文件为启动器同级目录的<code>bootstrap.ini</code>,默认不会自动创建,您需要手动创建。 | |||
=== 默认配置 === | |||
{| class="wikitable" | |||
!配置键 | |||
!默认值 | |||
!说明 | |||
|- | |||
|language | |||
| | |||
|启动器使用语言的语言代码,如zh-cn(简体中文),en-us(美式英文) | |||
|- | |||
|start-cmd | |||
|%JAVA% -Dfile.encoding=UTF-8 -Djansi.passthrough=true -Dterminal.ansi=true --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED -cp %PNX%%CP_SPLIT%libs/* cn.nukkit.Nukkit | |||
|默认PNX启动命令 | |||
|- | |||
|min-restart-time | |||
|30000 | |||
|最小重启间隔时间(ms),两次启动小于此时间就不再自动重启 | |||
|- | |||
|auto-restart | |||
|false | |||
|是否默认自动重启 | |||
|- | |||
|gui-terminal-color | |||
|PowerNukkitX | |||
|图形界面终端配色(PowerNukkitX/Windows) | |||
|- | |||
|displayLaunchCommand | |||
|false | |||
|是否在CLI界面输出PNX启动命令 | |||
|- | |||
|preferredJVM | |||
|GraalVM | |||
|优先使用名称中带有此配置项的JVM启动PNX | |||
|- | |||
|graalvm.version | |||
|22.0.0.2 | |||
|要下载的GraalVM版本 | |||
|- | |||
|graalvm.win-x86 | |||
|<nowiki>https://download.fastgit.org/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/graalvm-ce-java17-windows-amd64-22.0.0.2.zip</nowiki> | |||
| | |||
|- | |||
|graalvm.linux-x86 | |||
|<nowiki>https://download.fastgit.org/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/graalvm-ce-java17-linux-amd64-22.0.0.2.zip</nowiki> | |||
| | |||
|- | |||
|graalvm.linux-aarch | |||
|<nowiki>https://download.fastgit.org/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/graalvm-ce-java17-linux-aarch64-22.0.0.2.zip</nowiki> | |||
| | |||
|- | |||
|graalvm.darwin-x86 | |||
|<nowiki>https://download.fastgit.org/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/graalvm-ce-java17-darwin-amd64-22.0.0.2.zip</nowiki> | |||
| | |||
|- | |||
|adopt.version | |||
|17.0.2_8 | |||
|要下载的AdoptOpenJDK版本 | |||
|- | |||
|adopt.win-x86 | |||
|<nowiki>https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/17/jre/x64/windows/OpenJDK17U-jre_x64_windows_hotspot_17.0.2_8.zip</nowiki> | |||
| | |||
|- | |||
|adopt.linux-x86 | |||
|<nowiki>https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/17/jre/x64/linux/OpenJDK17U-jre_x64_linux_hotspot_17.0.2_8.tar.gz</nowiki> | |||
| | |||
|- | |||
|adopt.linux-aarch | |||
|<nowiki>https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/17/jre/aarch64/linux/OpenJDK17U-jre_aarch64_linux_hotspot_17.0.2_8.tar.gz</nowiki> | |||
| | |||
|- | |||
|adopt.linux-arm | |||
|<nowiki>https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/17/jre/arm/linux/OpenJDK17U-jre_arm_linux_hotspot_17.0.2_8.tar.gz</nowiki> | |||
| | |||
|- | |||
|adopt.darwin-x86 | |||
|<nowiki>https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/17/jre/x64/mac/OpenJDK17U-jre_x64_mac_hotspot_17.0.2_8.tar.gz</nowiki> | |||
| | |||
|- | |||
|adopt.darwin-aarch | |||
|<nowiki>https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/17/jre/aarch64/mac/OpenJDK17U-jre_aarch64_mac_hotspot_17.0.2_8.tar.gz</nowiki> | |||
|} | |||
=FAQ= | |||
==常见开服问题== | |||
===java.lang.reflect.InaccessibleObjectException=== | |||
====简易处理方式==== | |||
启动命令在<code>-jar</code>前面加上<code>--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED</code> | |||
例如: | |||
<code>Java17目录\bin\java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED -jar powernukkitx-1.6.0.0-PNX-SNAPSHOT-shaded.jar</code> | |||
====完美解决==== | |||
查看报错内容中如下部分: | |||
<code>module A does not "opens B" to unnamed module @C</code> | |||
在启动命令<code>-jar</code>前加上<code>--add-opens A/B=ALL-UNNAMED</code>(A/B中的内容为相关模块名称,可看以下示例)即可,每个不同报错都要这么做 | |||
== | 示例: | ||
如果报错内容为:module <code>java.base</code> does not "opens <code>java.lang</code>" to unnamed module @?????? 那参数配置则为 | |||
<code>--add-opens java.base/java.lang=ALL-UNNAMED</code> | |||
===java.lang.UnsupportedClassVersionError=== | |||
请更换java到java17,下载链接 | |||
===登陆服务器提示“无法连接:过期的服务器!”=== | |||
这种情况发生有两种可能性 | |||
一:服务端协议更新导致服务器过期,等待服务端更新协议 | |||
二:本机电脑的世界与服务端时间相差过大导致无法进入服务器,解决办法为同步本地时间或者在server.properties中设置check-login-time=off | |||
==Terra问题== | |||
===什么是terra=== | |||
Terra是一个第三方开源地形生成器,pnx在terra分支中整合了Terra,您可以在pnx中使用terra生成史诗般的地图。 | |||
===启动Terra=== | |||
要将terra应用到您的世界中,需要如下两步: | |||
在<code>server.properties</code>中,设置: | |||
<code>use-terra=on</code> | |||
在<code>nukkit.yml</code>中,设置: | |||
*<code>worlds:</code> | |||
*<code>世界名称:</code> | |||
*<code>seed: 世界种子</code> | |||
*<code>generator: terra:default</code> | |||
然后,重新启动服务器,即可体验terra地形生成器。 | |||
===黑色生物群系=== | |||
因为Terra会将未完成的生物群系用黑色混凝土方块标注,所以会有这些黑色生物群系。 | |||
如果不希望它们出现,可以使用PNX提供的没有未完成的生物群系的配置包。下载PNX配置包 | |||
下载完成后,请使用默认配置包替换掉<code>./terra/packs/default.zip</code>。重新启动服务器即可完成更改。 | |||
===为什么设置不生效=== | |||
*如果您的世界先前使用的不是terra生成器,那么设置不会生效,您需要使用一个新的地图。 | |||
*如果您的使用的分支不包含terra生成器(terra分支核心文件大小为35MB),您需要更换服务端核心。 | |||
===占用的内存太多=== | |||
很抱歉,由于terra算法复杂,自定义性极高,启动时使用大约300MB内存在所难免。我们已经尽力优化了。 | |||
如果您真的希望减少内存使用,可以尝试修改<code>./terra/config/yml</code>: | |||
*<code>cache:</code> | |||
*<code>structure: 0 # 默认32</code> | |||
*<code>sampler: 0 # 默认128</code> | |||
*<code>biome-provider: 0 # 默认32</code> | |||
请注意,这样做会影响性能,加重CPU负担。 | |||
2022年6月13日 (一) 02:13的最新版本
什么是PowerNukkitX?
简介
PowerNukkitX(简称PNX)是由包括BlocklyNukkit团队在内的中国Nukkit开发者们负责开发维护的Nukkit分支版本,修复了众多BUG,改善了性能,及时跟进新版本支持、支持1.18所有新方块和新物品、支持新版下界、支持史诗地形生成器(Terra)。在这些大更改的情况下,PNX仍然保持了良好的插件兼容性,Nukkit生态中的数千个插件仍然可以在PNX上运行。 得益于完全开源的代码,您在遵守开源协议的情况下使用PowerNukkitX没有任何法律风险,内部的数十万API可以随意调用,您可以深入查看实现,通过JVM生态中的各种工具及其方便地进行开发、调试、注入、拦截。也正因如此,Nukkit生态丰富多彩,成百上千各种各样的插件供您选择,您可以用您喜欢的任意JVM语言编写插件,如Java,Kotlin,Scala,Python,Javascript,Lua……
大多数为Nukkit制作的插件都可以在PowerNukkitX上使用,但某些插件在运行时可能会出一些错误等或不支持PowerNukkitX添加的新内容。
为什么我们要开发PNX?
最直接的原因就是:只有核心强,生态才能强。
我们可以毫不掩饰地说,去重之后,Nukkit生态是基岩版作品最多的生态之一,也是基岩版最高技术力的圈子之一。但是,Nukkit核心在开发团队被CubeCraft买去开发Geyser 项目之后,开发强度急剧下降,随着国外众多开发者进入JE圈子,国内BDS圈子向心力逐渐加强,Nukkit系核心渐渐地不再能跟上be社区发展的步伐。作为自由开源精神的践行者, 作为Nukkit生态的主力,我们有必要接过Nukkit系服务端开发的任务,续写被EaseCation遗忘的的国人核心开发的篇章。
优势和差异
- 最新版mcbe协议支持
- 1.18全物品方块及其功能支持
- 384格世界支持
- 新版下界生物群系支持
- 史诗地形生成器
- 修复众多bug
- 自定义物品、方块(WIP)
- 全开源、全API开放、插件众多
- 更高性能,多核优化(堆核而非堆cpu频率)
联系链接
快速入门
跟随本教程,十分钟(不包括下载耗时)开启您的第一个PowerNukkitX服务器。
本教程将带您使用PowerNukkitX的启动器(Bootstrap)来快速安装并启动服务器。
配置环境
下载启动器
稳定版:点击下载稳定版启动器master-ef2e75c
最新版: 前往自动构建页面,打开您要下载的版本的构建界面并下载PowerNukkitX-Bootstrap 构件,下载完成后解压。
安装Java环境
Windows
下载OpenJDK17安装包 并按照提示安装,一路默认下一步即可完成安装。
Linux
Ubuntu系统安装:
sudo apt update && sudo apt upgrade -y
sudo apt-get install openjdk-17-jre
启动服务器
命令行启动
将启动器jar包复制到你要开服的文件夹中,并在此文件夹下输入命令:
java -jar Bootstrap-0.0.1-beta-shaded.jar
随后启动器将自动开始配置,按照控制台给出的提示,启动器会自动下载配置好PNX需要的java环境,下载并安装PNX核心及依赖库,随后服务器会自动启动。
如果您在关服后想要再次开服,再次输入上面的命令即可。
正常开服界面如下:欲关闭服务器,输入stop
即可。
图形界面启动
如果您使用Windows系统、MacOS系统或带有图形界面的Linux系统,可以通过图形界面来管理并启动服务器。
在Windows或MacOS上,如果您已经正确地配置了Java运行环境,您可以直接双击启动器jar包来打开PNX界面;在Linux上,您可以通过java -jar Bootstrap-0.0.1-beta-shaded.jar --gui
来在安装了图形界面的系统中打开PNX界面,PNX正确启动后会显示如下界面:
点击 窗口 -> 检查更新,打开更新检查窗口:
双击标有叉号的项目,挨个双击子项,启动器就会自动修复你点击的子项,直到所有的叉号都消失为止。
点击 服务端 -> 启动服务端,即可启动PowerNukkitX服务器:
如果出现此界面,输入chs
并回车即可以中文模式启动PowerNukkitX服务端。
启动器
启动PNX
为什么用启动器
Bootstrap,启动器,是PNX官方提供的用于启动PowerNukkitX的工具。
它可以通过命令行和图形界面两种方式使用,提供了简单易用的开服体验,具有以下优点:
- 快捷开服,无需复杂配置
- 占用资源少,不会对核心运行造成明显影响
- 自动配置java环境,自动检测并使用性能最高的Java启动PNX
- 方便安装依赖库、更新服务端核心
- 可以在只有Java8的面板服启动PNX
- 自动配置复杂的启动参数
启动器的使用方式,详见“快速入门”章节。
不使用启动器开服
当然,你也可以不用启动器开服,但开服的配置将会较为复杂,传统的开服命令不再适合PNX。
首先,你需要前往Github action,选择一个完整的构建任务,点开进入构建详情界面,找到如下的构建物界面:
确定你登录了Github后,点击下载PowerNukkitX-Core
和PowerNukkitX-Libs
,这将分别下载PNX服务端核心和依赖库的压缩包。
下载成功后,解压上述安装包,将服务端核心跟依赖库分别解压到不同的文件夹中。
接下来,找到你的java17的安装路径,在此路径下找到对应的java二进制文件的绝对路径,记录下来。
现在,你可以着手开始编写你的开服命令了。
开服命令模板如下:
%JAVA% -Dfile.encoding=UTF-8 -Djansi.passthrough=true -Dterminal.ansi=true --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED -cp %PNX%%CP_SPLIT%%LIBS_PATH% cn.nukkit.Nukkit
请您将上述模板中的占位符(两侧为%的文字,包括百分号)按照如下说明进行替换:
占位符 | 替换为 |
---|---|
JAVA | java17二进制文件绝对路径 |
PNX | PNX核心jar包路径 |
CP_SPLIT | 系统路径分隔符,Windows为;,Linux为: |
LIBS_PATH | 存放依赖库的文件夹路径 |
在命令行上输入您修改完的开服命令,即可启动PNX服务端。
注意,您需要留心依赖库变化,如果依赖库发生变化,您需要手动重新下载依赖库重复上述步骤,依赖库如有变化,恕不另行通知。
启动器命令行参数
当您从命令行启动时,您可以添加一些参数以使用启动器的更多功能。
help
用法:-h
--help
说明:显示命令行帮助
version
用法:--version
--version=[item:string]
参数:
- item 指定检查更新的项目,可选
pnx
java
bootstrap
说明:检测并显示当前服务端核心、Java和启动器的版本
autoRestart
用法:--autoRestart
说明:服务端关闭后自动重启
updatePNX
用法:--updatePNX
说明:更新PNX服务端核心
updateLibs
用法:--updateLibs
说明:更新依赖库
updateBootstrap
用法:--updateBootstrap
说明:更新启动器
updateComponents
用法:--updateComponents
说明:更新附加组件
启动器配置文件
PNX启动器具有一系列易于使用的默认配置,同时也允许用户自定义自己的配置,用户自定义配置的优先级高于默认配置。
PNX启动器的用户配置文件为启动器同级目录的bootstrap.ini
,默认不会自动创建,您需要手动创建。
默认配置
配置键 | 默认值 | 说明 |
---|---|---|
language | 启动器使用语言的语言代码,如zh-cn(简体中文),en-us(美式英文) | |
start-cmd | %JAVA% -Dfile.encoding=UTF-8 -Djansi.passthrough=true -Dterminal.ansi=true --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED -cp %PNX%%CP_SPLIT%libs/* cn.nukkit.Nukkit | 默认PNX启动命令 |
min-restart-time | 30000 | 最小重启间隔时间(ms),两次启动小于此时间就不再自动重启 |
auto-restart | false | 是否默认自动重启 |
gui-terminal-color | PowerNukkitX | 图形界面终端配色(PowerNukkitX/Windows) |
displayLaunchCommand | false | 是否在CLI界面输出PNX启动命令 |
preferredJVM | GraalVM | 优先使用名称中带有此配置项的JVM启动PNX |
graalvm.version | 22.0.0.2 | 要下载的GraalVM版本 |
graalvm.win-x86 | https://download.fastgit.org/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/graalvm-ce-java17-windows-amd64-22.0.0.2.zip | |
graalvm.linux-x86 | https://download.fastgit.org/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/graalvm-ce-java17-linux-amd64-22.0.0.2.zip | |
graalvm.linux-aarch | https://download.fastgit.org/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/graalvm-ce-java17-linux-aarch64-22.0.0.2.zip | |
graalvm.darwin-x86 | https://download.fastgit.org/graalvm/graalvm-ce-builds/releases/download/vm-22.0.0.2/graalvm-ce-java17-darwin-amd64-22.0.0.2.zip | |
adopt.version | 17.0.2_8 | 要下载的AdoptOpenJDK版本 |
adopt.win-x86 | https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/17/jre/x64/windows/OpenJDK17U-jre_x64_windows_hotspot_17.0.2_8.zip | |
adopt.linux-x86 | https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/17/jre/x64/linux/OpenJDK17U-jre_x64_linux_hotspot_17.0.2_8.tar.gz | |
adopt.linux-aarch | https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/17/jre/aarch64/linux/OpenJDK17U-jre_aarch64_linux_hotspot_17.0.2_8.tar.gz | |
adopt.linux-arm | https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/17/jre/arm/linux/OpenJDK17U-jre_arm_linux_hotspot_17.0.2_8.tar.gz | |
adopt.darwin-x86 | https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/17/jre/x64/mac/OpenJDK17U-jre_x64_mac_hotspot_17.0.2_8.tar.gz | |
adopt.darwin-aarch | https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/17/jre/aarch64/mac/OpenJDK17U-jre_aarch64_mac_hotspot_17.0.2_8.tar.gz |
FAQ
常见开服问题
java.lang.reflect.InaccessibleObjectException
简易处理方式
启动命令在-jar
前面加上--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED
例如:
Java17目录\bin\java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED -jar powernukkitx-1.6.0.0-PNX-SNAPSHOT-shaded.jar
完美解决
查看报错内容中如下部分:
module A does not "opens B" to unnamed module @C
在启动命令-jar
前加上--add-opens A/B=ALL-UNNAMED
(A/B中的内容为相关模块名称,可看以下示例)即可,每个不同报错都要这么做
示例:
如果报错内容为:module java.base
does not "opens java.lang
" to unnamed module @?????? 那参数配置则为
--add-opens java.base/java.lang=ALL-UNNAMED
java.lang.UnsupportedClassVersionError
请更换java到java17,下载链接
登陆服务器提示“无法连接:过期的服务器!”
这种情况发生有两种可能性
一:服务端协议更新导致服务器过期,等待服务端更新协议
二:本机电脑的世界与服务端时间相差过大导致无法进入服务器,解决办法为同步本地时间或者在server.properties中设置check-login-time=off
Terra问题
什么是terra
Terra是一个第三方开源地形生成器,pnx在terra分支中整合了Terra,您可以在pnx中使用terra生成史诗般的地图。
启动Terra
要将terra应用到您的世界中,需要如下两步:
在server.properties
中,设置:
use-terra=on
在nukkit.yml
中,设置:
worlds:
世界名称:
seed: 世界种子
generator: terra:default
然后,重新启动服务器,即可体验terra地形生成器。
黑色生物群系
因为Terra会将未完成的生物群系用黑色混凝土方块标注,所以会有这些黑色生物群系。
如果不希望它们出现,可以使用PNX提供的没有未完成的生物群系的配置包。下载PNX配置包
下载完成后,请使用默认配置包替换掉./terra/packs/default.zip
。重新启动服务器即可完成更改。
为什么设置不生效
- 如果您的世界先前使用的不是terra生成器,那么设置不会生效,您需要使用一个新的地图。
- 如果您的使用的分支不包含terra生成器(terra分支核心文件大小为35MB),您需要更换服务端核心。
占用的内存太多
很抱歉,由于terra算法复杂,自定义性极高,启动时使用大约300MB内存在所难免。我们已经尽力优化了。
如果您真的希望减少内存使用,可以尝试修改./terra/config/yml
:
cache:
structure: 0 # 默认32
sampler: 0 # 默认128
biome-provider: 0 # 默认32
请注意,这样做会影响性能,加重CPU负担。