本帖最后由 逗比的幻影 于 2019-8-4 11:03 编辑
NukkitX


Nukkit是一款高性能,基于Java的一款高效基岩版服务端,它的结构十分类似与Bukkit/Spigot,阅读本帖可能对你了解Nukkit有一定的帮助。
让我来扩大你对Nukkit的认知吧!

项目简介


Nukkit 由 Java 编写,拥有强大的多线程性能,可以更好地利用你的主机资源,让玩家们更欢快的游戏源代码根据 LGPL 协议开放,方便开发者和腐竹对于 Nukkit 的学习采用了类似 PocketMine-MP 的结构,提供了高效的插件解决方案,也便于大家对 Nukkit 作出代码贡献。
特点:
  • Nukkit 由 Java 编写,稳定性 可靠性 高于PM
  • 其结构也类似于 PocketMine-MP 高效
  • 将PocketMine-MP插件重写到Nukkit插件很容易
  • 了解Bukkit的开发的开发组入手Nukkit开发很容易
  • 更新速度飞快,如今核心NukkitX达到1.12.0版本
  • Nukkit随着基岩版更新,速度极快


NukkitX配置


Nukkit基础配置讲解

  1. motd=A Nukkit Powered Server
  2. sub-motd=https://nukkitx.com
  3. server-port=19132
  4. server-ip=0.0.0.0
  5. view-distance=10
  6. white-list=off
  7. achievements=on
  8. announce-player-achievements=on
  9. spawn-protection=16
  10. max-players=20
  11. allow-flight=off
  12. spawn-animals=on
  13. spawn-mobs=on
  14. gamemode=0
  15. force-gamemode=off
  16. hardcore=off
  17. pvp=on
  18. difficulty=1
  19. generator-settings=
  20. level-name=world
  21. level-seed=
  22. level-type=DEFAULT
  23. allow-nether=on
  24. enable-query=on
  25. enable-rcon=off
  26. rcon.password=kMGJhZjRjZ
  27. auto-save=on
  28. force-resources=off
  29. bug-report=on
  30. xbox-auth=on
复制代码

高级配置



  1. # Nukkit 高级设置
  2. # 警告:此处部分设置是安全的,而一些在设置不当的情况下可能会损害您的服务器
  3. # 升级后,新的设置及默认值将不会自动显示在这里,它们将以默认值运行直到你手动更新配置文件

  4. settings:
  5. #多语言设置
  6. #可用:eng, chs, cht, jpn, rus, spa, pol, bra, kor, ukr, deu, ltu, cze
  7. language: "chs"
  8. #服务器强制语言
  9. force-language: false
  10. shutdown-message: "服务器已关闭"
  11. #允许使用Query协议查询您的插件
  12. query-plugins: true
  13. #当某插件使用不被推荐的API时,在控制台提醒
  14. deprecated-verbose: true
  15. #异步线程数量
  16. #如果设置为auto,则自动识别CPU核心数量(最少4线程)
  17. async-workers: auto

  18. network:
  19. #数据包大小阀值(单位:字节)。仅这些包会被压缩
  20. #设为 0 以压缩全部。设为 -1 以禁用此功能
  21. batch-threshold: 256
  22. #压缩等级。等级越高,CPU 占用越高,占用带宽越少
  23. compression-level: 7
  24. #异步压缩。通过增加半个/一个 tick 的延迟缓解主线程 CPU 负载
  25. async-compression: false

  26. debug:
  27. #当调试级别 > 1 时,将在控制台显示调试信息
  28. level: 1
  29. #启用命令 /status /gc
  30. commands: false

  31. timings:
  32. #默认启用核心和插件的性能分析
  33. enabled: false
  34. #启用详细级别的监控,包括高频记录
  35. verbose: false
  36. #以 tick 为单位的历史帧间隔
  37. #默认五分钟(6000 ticks)
  38. history-interval: 6000
  39. #以 tick 为单位的整个分析历史时长
  40. #默认一小时(72000 ticks)
  41. #该值上限为历史间隔(history-interval,即上一配置)的 12 倍
  42. history-length: 72000
  43. #对于有特殊权限以绕过最大值的服务器的特殊情况
  44. #最大值有助于保持数据文件大小合理,以便在 Aikar 的性能分析器端进行处理
  45. #设置此选项不会帮你绕过最大值限制,除非 Aikar 在 API 端添加了一个例外
  46. bypass-max: false
  47. #将此设置为 true,你的服务器名就不会被发送出去
  48. privacy: false
  49. #设置忽略部分。这些部分不会被送往 Aikar 的性能分析器
  50. #例如: [all] 或 [settings, timings]
  51. ignore: []

  52. level-settings:
  53. #默认生成的地图格式
  54. default-format: anvil
  55. #自动改变世界 TPS 以维持每秒 20 ticks(TPS:ticks per second)
  56. auto-tick-rate: true
  57. auto-tick-rate-limit: 20
  58. #设置基本 TPS(1 = 20TPS,2 = 10TPS,以此类推)
  59. base-tick-rate: 1
  60. #始终保持玩家Tick,即使其他选项不允许这么做
  61. always-tick-players: false

  62. chunk-sending:
  63. #每 tick 内发送给玩家区块的数量
  64. per-tick: 4
  65. #玩家附近的区块发送数量
  66. max-chunks: 192
  67. #玩家生成前需要的区块数量
  68. spawn-threshold: 56
  69. #在内存中存储一系列的区块复制以加快区块发送
  70. #在多玩家同时加入一个大多是静态的服务器时较有效
  71. cache-chunks: false

  72. chunk-ticking:
  73. #每 tick 中处理的区块数量
  74. per-tick: 40
  75. #玩家周围区块处理的半径
  76. tick-radius: 3
  77. light-updates: false
  78. clear-tick-list: false

  79. chunk-generation:
  80. #等待队列中,被生成的区块的数量上限
  81. queue-size: 8
  82. #等待队列中,被填充的区块的数量上限
  83. population-queue-size: 8

  84. ticks-per:
  85. animal-spawns: 400
  86. monster-spawns: 1
  87. autosave: 6000
  88. cache-cleanup: 900

  89. spawn-limits:
  90. #实体生成数量设置
  91. monsters: 70
  92. animals: 15
  93. water-animals: 5
  94. ambient: 15

  95. player:
  96. #决定服务器是否以 players/playername.dat 的形式保存玩家数据。默认 true 为保存。
  97. #如果设置为 false,nukkit 将不会保存玩家数据,这样一些与玩家数据有关的插件就可以大展身手了。
  98. save-player-data: true

  99. aliases:
  100. #指令别称
  101. #例如:
  102. #showtheversion: version
  103. #savestop: [save-all, stop]

  104. worlds:
  105. #这些设定将覆盖 server.properties 中的设定,并支持加载多世界
  106. #例如:
  107. #world:
  108. # seed: 404
  109. # generator: FLAT:2;7,59x1,3x3,2;1;decoration(treecount=80 grasscount=45)
复制代码
基本命令


Commands
  • version
  • plugins
  • seed
更多命令等待作者更新

Version
说明:显示有关Nukkit的版本信息
命令: /version
别名: {ver, about}
权限: {nukkit.command.version}

Plugins
说明:显示当前安装的插件
命令: /plugins
别名: {pl}
权限: {nukkit.command.plugins}

Seed
说明:显示你所处的世界的种子
命令: /seed
权限: {nukkit.command.seed}
附加教程



a. 如何创建一个超平坦世界

在nukkit.yml的最后行
  1. worlds:
  2. world:
  3.   seed: 404
  4.   generator: FLAT:2;7,59x1,3x3,2;1;decoration(treecount=80 grasscount=45)
复制代码
将 # 删去,重启 Nukkit 将会吧 world 世界改为超平坦世界,修改 world: 即可修改世界例如
  1. worlds:
  2. test:
  3.   seed: 404
  4.   generator: FLAT:2;7,59x1,3x3,2;1;decoration(treecount=80 grasscount=45)
复制代码
这下 test 世界就是超平坦了,如果没有 他会自己创建
b. 如何将JE存档转为NK存档

1. Jar转换
目前暂时没有比较好的方法,目前的方法 Java2Nukkit-World-Converter
站内搬运:https://www.mcbbs.net/thread-890820-1-1.html
该方法已经遭到了很多反馈,无法使用,但仅仅是旧版,等待作者更新
或者可以自行前往 Github 构建最新版测试

2. 强制导入
需要插件:
DbLib
WorldEdit
MultiWorld
何为强制导入呢,就是删除地图文件中除 regin level.dat 以外的文件
将整体更名导入worlds,使用 MultiWorld 进行加载
/mw load 世界名 即可加载世界
为什么不直接把世界改成 world 导入 worlds?
因为直接导入 可能会导致无法进入游戏
进入该世界,用 WorldEdit 选取区域,使用命令
//replace ID 替换ID 将BUG方块替换为其他方块

这就是BUG方块了 你可用 //replace ID 替换ID  替换成任意方块已知BUG方块ID
ID 248 若没替换完则再用 249 再次替换

ID 126


c. 如何制作原版生存
目前使用Nukkit制作原版生存是很难做到的,毕竟Nukkit的特性还是比较少的,这时候就体现了跨服的用处
主要思路: 以Nukkit作为大厅,基岩版官服 BedRock 做生存进行跨服
我的跨服思路并不是使用其他核心而是插件 参考
准备插件 TransferCommand
使用客户端重定向进行跨服
我设置了Nukkit端口为19132 作为大厅
  1. server-port=19132
复制代码
设置BDS端口为19135作为子服
  1. server-port=19135
复制代码

现在是Nukkit搭建的大厅

现在输入命令 /transfer IP 端口
由于我是本地 所以我填写的是 /transfer 127.0.0.1 19135



跨服成功 耗时6秒


项目介绍


Nemisys是什么?Nemisys是类似于BungeeCord属于Nukkit的跨服主体核心!
完全启动时:



安装设置


a. 设置server.properties中的配置
synapse-ip: 服务器IP
Synapse-port: SSR协议端口 (让Nemisys与所有子服通讯)
Password: SPP身份验证的密码
b. 其他设置
dynamic-player-count: 置最大人数 ( 例如245/246 )

下载Synapse到你的子服plugins中,
SynapseAPI Nukkit使用
SynapsePM PocketMine使用
对Synapse配置进行修改
修改端口/密码
Nemisys配置


  1. #标语
  2. motd=Nemisys Proxy
  3. # 服务器IP
  4. server-ip=0.0.0.0
  5. # 服务器端口
  6. server-port=19132
  7. # 子服IP
  8. synapse-ip=0.0.0.0
  9. # 子服端口
  10. synapse-port=10305
  11. # 密码
  12. password=1234567890123456
  13. # 语言
  14. lang=eng
  15. # 异步工作
  16. async-workers=auto
  17. # 概况分析
  18. enable-profiling=off
  19. # 概况分析时间
  20. profile-report-trigger=20
  21. # 最大玩家数
  22. max-players=20
  23. # N+1玩家数
  24. plus-one-max-count=off
  25. # 动态玩家数
  26. dynamic-player-count=off
  27. # 玩家线程
  28. players-per-thread=50
  29. # 启用查询
  30. enable-query=on
  31. # 启用rcon
  32. enable-rcon=off
  33. # rcon密码
  34. rcon.password=lZmYxNDg3M
  35. debug=1
  36. # 启用Synapse线程
  37. enable-synapse-client=off
  38. # 标题显示统计信息
  39. display-stats-in-title=on
复制代码

  1. # 配置Synapse
  2. disable-rak: false
  3. # 是否启用
  4. enable: true

  5. entries:
  6. # 服务器IP
  7.   - server-ip: 127.0.0.1
  8. # 子服端口,请务必修改
  9.     server-port: 10305
  10. # 是否为主服
  11.     isMainServer: true
  12. # 是否为大厅服
  13.     isLobbyServer: true
  14. # 是否关服后返回著大厅
  15.     transferOnShutdown: true
  16. # SSP密码 在Nemisys中配置的密码
  17.     password: must16keyslength
  18. # 描述
  19.     description: Synapse Nukkit Server
  20. # 自动连接
  21.     autoConnect: true
复制代码


[groupid=1572]Nukkit Plugin Studio[/groupid]