在建立或编辑词条前,请先阅读MineWiki方针与指引

PowerNukkitX:修订间差异

来自MineWiki
无编辑摘要
YYT讨论 | 贡献
无编辑摘要
 
(未显示同一用户的4个中间版本)
第1行: 第1行:
[[分类:核心]]
[[分类:核心]]
[[文件:PowerNukkitX BANNER.png|缩略图|463x463像素|PowerNukkitX Logo]]
= 什么是PowerNukkitX? =
= 什么是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……
PowerNukkitX(简称PNX)是由包括[[BlocklyNukkit]]团队在内的中国[[Nukkit]]开发者们负责开发维护的Nukkit分支版本,修复了众多BUG,改善了性能,及时跟进新版本支持、支持1.18所有新方块和新物品、支持新版下界、支持史诗地形生成器(Terra)。在这些大更改的情况下,PNX仍然保持了良好的插件兼容性,Nukkit生态中的数千个插件仍然可以在PNX上运行。 得益于完全开源的代码,您在遵守开源协议的情况下使用PowerNukkitX没有任何法律风险,内部的数十万API可以随意调用,您可以深入查看实现,通过JVM生态中的各种工具及其方便地进行开发、调试、注入、拦截。也正因如此,Nukkit生态丰富多彩,成百上千各种各样的插件供您选择,您可以用您喜欢的任意JVM语言编写插件,如Java,Kotlin,Scala,Python,Javascript,Lua……


== 为什么我们要开发PNX? ==
大多数为Nukkit制作的插件都可以在PowerNukkitX上使用,但某些插件在运行时可能会出一些错误等或不支持PowerNukkitX添加的新内容。
 
==为什么我们要开发PNX?==
最直接的原因就是:只有核心强,生态才能强。
最直接的原因就是:只有核心强,生态才能强。


我们可以毫不掩饰地说,去重之后,Nukkit生态是基岩版作品最多的生态之一,也是基岩版最高技术力的圈子之一。但是,Nukkit核心在开发团队被CubeCraft买去开发Geyser 项目之后,开发强度急剧下降,随着国外众多开发者进入JE圈子,国内BDS圈子向心力逐渐加强,Nukkit系核心渐渐地不再能跟上be社区发展的步伐。作为自由开源精神的践行者, 作为Nukkit生态的主力,我们有必要接过Nukkit系服务端开发的任务,续写被EaseCation遗忘的的国人核心开发的篇章。
我们可以毫不掩饰地说,去重之后,Nukkit生态是基岩版作品最多的生态之一,也是基岩版最高技术力的圈子之一。但是,Nukkit核心在开发团队被CubeCraft买去开发Geyser 项目之后,开发强度急剧下降,随着国外众多开发者进入JE圈子,国内BDS圈子向心力逐渐加强,Nukkit系核心渐渐地不再能跟上be社区发展的步伐。作为自由开源精神的践行者, 作为Nukkit生态的主力,我们有必要接过Nukkit系服务端开发的任务,续写被EaseCation遗忘的的国人核心开发的篇章。


== 优势和差异 ==
==优势和差异 ==


* 最新版mcbe协议支持
*最新版mcbe协议支持
* 1.18全物品方块及其功能支持
*1.18全物品方块及其功能支持
* 384格世界支持
*384格世界支持
* 新版下界生物群系支持
*新版下界生物群系支持
* 史诗地形生成器
*史诗地形生成器
* 修复众多bug
*修复众多bug
* 自定义物品、方块(WIP)
*自定义物品、方块(WIP)
* 全开源、全API开放、插件众多
*全开源、全API开放、插件众多
* 更高性能,多核优化(堆核而非堆cpu频率)
*更高性能,多核优化(堆核而非堆cpu频率)


== 联系链接 ==
==联系链接==
* GitHub https://github.com/BlocklyNukkit/PowerNukkitX
*GitHub https://github.com/BlocklyNukkit/PowerNukkitX
* 官网 https://www.powernukkitx.cn/
*官网 https://www.powernukkitx.cn/
* Discord https://discord.com/invite/j7UwsaNu4V
*Discord https://discord.com/invite/j7UwsaNu4V
* QQ群 https://jq.qq.com/?_wv=1027&k=6rm3gbUI
*QQ群 https://jq.qq.com/?_wv=1027&k=6rm3gbUI


= 快速入门 =
=快速入门=
跟随本教程,十分钟(不包括下载耗时)开启您的第一个PowerNukkitX服务器。
跟随本教程,十分钟(不包括下载耗时)开启您的第一个PowerNukkitX服务器。


本教程将带您使用PowerNukkitX的启动器(Bootstrap)来快速安装并启动服务器。
本教程将带您使用PowerNukkitX的启动器(Bootstrap)来快速安装并启动服务器。


== 配置环境 ==
==配置环境==


=== 下载启动器 ===
===下载启动器===
稳定版:点击下载稳定版启动器[https://assets.powernukkitx.cn/stable/Bootstrap-0.0.1-beta-shaded.jar master-ef2e75c]
稳定版:点击下载稳定版启动器[https://assets.powernukkitx.cn/stable/Bootstrap-0.0.1-beta-shaded.jar master-ef2e75c]


最新版: 前往[https://github.com/PowerNukkitX/PowerNukkitX/actions 自动构建页面],打开您要下载的版本的构建界面并下载PowerNukkitX-Bootstrap 构件,下载完成后解压。
最新版: 前往[https://github.com/PowerNukkitX/PowerNukkitX/actions 自动构建页面],打开您要下载的版本的构建界面并下载PowerNukkitX-Bootstrap 构件,下载完成后解压。


=== 安装Java环境 ===
===安装Java环境 ===


==== Windows ====
==== Windows====
下载OpenJDK17安装包 并按照提示安装,一路默认下一步即可完成安装。
下载OpenJDK17安装包 并按照提示安装,一路默认下一步即可完成安装。


==== Linux ====
====Linux====
Ubuntu系统安装:
Ubuntu系统安装:


第54行: 第55行:
<code>sudo apt-get install openjdk-17-jre</code>
<code>sudo apt-get install openjdk-17-jre</code>


== 启动服务器 ==
==启动服务器==


=== 命令行启动 ===
===命令行启动===
将启动器jar包复制到你要开服的文件夹中,并在此文件夹下输入命令:
将启动器jar包复制到你要开服的文件夹中,并在此文件夹下输入命令:


第69行: 第70行:
正常开服界面如下:欲关闭服务器,输入<code>stop</code>即可。
正常开服界面如下:欲关闭服务器,输入<code>stop</code>即可。


=== 图形界面启动 ===
===图形界面启动===
如果您使用Windows系统、MacOS系统或带有图形界面的Linux系统,可以通过图形界面来管理并启动服务器。
如果您使用Windows系统、MacOS系统或带有图形界面的Linux系统,可以通过图形界面来管理并启动服务器。


第90行: 第91行:
[[文件:Powernukkitx-3.png|无框|702x702像素]]
[[文件:Powernukkitx-3.png|无框|702x702像素]]


= 启动PNX =
=启动器=


== 为什么用启动器 ==
==启动PNX==
 
===为什么用启动器===
Bootstrap,启动器,是PNX官方提供的用于启动PowerNukkitX的工具。
Bootstrap,启动器,是PNX官方提供的用于启动PowerNukkitX的工具。


它可以通过命令行和图形界面两种方式使用,提供了简单易用的开服体验,具有以下优点:
它可以通过命令行和图形界面两种方式使用,提供了简单易用的开服体验,具有以下优点:


* 快捷开服,无需复杂配置
*快捷开服,无需复杂配置
* 占用资源少,不会对核心运行造成明显影响
*占用资源少,不会对核心运行造成明显影响
* 自动配置java环境,自动检测并使用性能最高的Java启动PNX
*自动配置java环境,自动检测并使用性能最高的Java启动PNX
* 方便安装依赖库、更新服务端核心
*方便安装依赖库、更新服务端核心
* 可以在只有Java8的面板服启动PNX
* 可以在只有Java8的面板服启动PNX
* 自动配置复杂的启动参数
*自动配置复杂的启动参数


启动器的使用方式,详见“快速入门”章节。
启动器的使用方式,详见“快速入门”章节。


== 不使用启动器开服 ==
===不使用启动器开服===
当然,你也可以不用启动器开服,但开服的配置将会较为复杂,传统的开服命令不再适合PNX。
当然,你也可以不用启动器开服,但开服的配置将会较为复杂,传统的开服命令不再适合PNX。


第127行: 第130行:
请您将上述模板中的占位符(两侧为%的文字,包括百分号)按照如下说明进行替换:
请您将上述模板中的占位符(两侧为%的文字,包括百分号)按照如下说明进行替换:
{| class="wikitable"
{| class="wikitable"
|+
!占位符
!占位符
!替换为
!替换为
第147行: 第149行:
注意,您需要留心依赖库变化,如果依赖库发生变化,您需要手动重新下载依赖库重复上述步骤,依赖库如有变化,恕不另行通知。
注意,您需要留心依赖库变化,如果依赖库发生变化,您需要手动重新下载依赖库重复上述步骤,依赖库如有变化,恕不另行通知。


== 注意事项 ==
==启动器命令行参数==
当您从命令行启动时,您可以添加一些参数以使用启动器的更多功能。
 
===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应用到您的世界中,需要如下两步:


* PowerNukkitX要求的最低Java版本为17
在<code>server.properties</code>中,设置:
* 补充: 如果您的服务器不能安装Java17,你也可以用使用团队提供的[https://ci.lt-name.com/job/PowerNukkitX/job/master/ BootStrap]


== 兼容性 ==
<code>use-terra=on</code>
大多数为Nukkit制作的插件都可以在PowerNukkitX上使用,但某些插件在运行时可能会出一些错误等或不支持PowerNukkitX添加的新内容。
 
在<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 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频率)

联系链接

快速入门

跟随本教程,十分钟(不包括下载耗时)开启您的第一个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-CorePowerNukkitX-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负担。