2.6
This commit is contained in:
103
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/0-Nukkit开服教程.md
Normal file
103
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/0-Nukkit开服教程.md
Normal file
@@ -0,0 +1,103 @@
|
||||
---
|
||||
front:
|
||||
hard: 入门
|
||||
time: 60分钟
|
||||
---
|
||||
|
||||
# Nukkit部署教程
|
||||
|
||||
## 前言
|
||||
本文默认认为你了解过Nukkit 或者 通过Waterdogpe + Nukkit搭建过第三方服务器。
|
||||
|
||||
## 准备阶段
|
||||
1. 准备Java版本,建议Java版本为Java17及以上版本
|
||||
2. 准备NukkitMOT分支,NukkitMOT原作者已将中国版打包到github主分支内 https://github.com/MemoriesOfTime/Nukkit-MOT
|
||||
> 目前仅支持接入Nukkit-MOT,其他分支可自行通过参考NukkitMOT源码进行对接
|
||||
3. 准备 WaterDogPE 代理服务端。
|
||||
|
||||
|
||||
## WaterDogPE
|
||||
### config.yml 的配置
|
||||
|
||||
需要修改以下参数,其他配置根据情况自行修改
|
||||
```yaml
|
||||
|
||||
# ....
|
||||
|
||||
netease_client: true # 启用 netease 客户端的支持
|
||||
online_mode: true
|
||||
# 开发测试阶段,需要改为false,否则会提示需要 minecraft验证
|
||||
# 发布阶段时,需要改为true,之后只能用网易手机客户端连接才能进入
|
||||
listener:
|
||||
# .....
|
||||
|
||||
host: 0.0.0.0:19132 # waterdogpe 代理端的IP和端口 。官方提供的机器19132端口可能会被占用,根据实际情况更改
|
||||
priorites: # 按顺序配置,第一个是玩家进入时默认在的服务器。 一般为大厅服
|
||||
- lobby1
|
||||
|
||||
# .....
|
||||
servers: # 子服务器的连接ID配置,如大厅服、游戏服等等。如子服务器不在同一台机器,则需要写具体的ip。
|
||||
lobby1:
|
||||
address: 127.0.0.1:19133
|
||||
public_address: play.myserver.com:19133
|
||||
server_type: bedrock
|
||||
|
||||
|
||||
permissions: # 权限配置,一般用于配置管理员的权限,用于测试、调试。仅通过名字识别,建议发布阶段去掉,改为用插件实现相关调试功能
|
||||
玩家id:
|
||||
- waterdog.player.transfer
|
||||
- waterdog.player.list
|
||||
- waterdog.command.server
|
||||
|
||||
```
|
||||
|
||||
### 装载客户端模组
|
||||
|
||||
当通过waterdogpe代理后,需要将客户端模组存放在waterdogpe 根目录下的 packs 文件夹中,不要存放在NukkitMOT根目录
|
||||
> 除非你仅通过NukkitMOT单端开服 否则waterdogpe 会自动将nukkit模组加载数据包拦截
|
||||
|
||||
> 但如果关闭waterdogpe的资源包功能,Nukkit数据包依然会被waterdogpe拦截而无法正常进入游戏
|
||||
|
||||
确保 config.yml 已启用资源包
|
||||
```yaml
|
||||
enable_packs: true # 必须打开
|
||||
overwrite_client_packs: true # 按需
|
||||
force_server_packs: true # 按需
|
||||
```
|
||||
|
||||
### 模组打包格式
|
||||
|
||||
waterdogpe 仅支持 zip和mcpack包,不支持文件夹。
|
||||
可以将行为包、资源包都存放在packs目录中。
|
||||
目前仅支持 manifest.json ,不支持 pack_manifest.json
|
||||
|
||||
zip打包格式为: 压缩包一级目录下就是 manifest.json,不要额外套一层文件夹
|
||||

|
||||
|
||||
## Nukkit-MOT
|
||||
|
||||
nukkit社区的插件
|
||||
https://cloudburstmc.org/resources/categories/nukkit-plugins.1/
|
||||
|
||||
### server.properties 配置
|
||||
|
||||
为了确保Nukkit-MOT正常接入中国版,您需要调整一些配置
|
||||
```properties
|
||||
xbox-auth=off
|
||||
netease-client-support=on
|
||||
only-allow-netease-client=on
|
||||
```
|
||||
|
||||
### 模组装载
|
||||
|
||||
如果使用 waterdogpe 代理,则需要将模组放在 waterdogpe 目录,而非Nukkit目录
|
||||
如果仅适用Nukkit,则将行为包合资源包都放在Nukkit目录下有关 netease的文件里
|
||||
|
||||
### NukkitMaster插件
|
||||
|
||||
NukkitMaster相当于Spigot服的SpigotMaster,内置封装了PyRPC、订单接口、消息收发等功能,API和使用方法和SpigotMaster一样。
|
||||
|
||||
|
||||
### 自定义物品、方块和实体
|
||||
|
||||
Nukkit-MOT本身已经支持自定义物品、方块、实体的功能,可以参考[官方文档](https://www.nukkit-mot.com/zh/docs/tutorial-extras/custom/custom_item)
|
||||
107
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/0-Nukkit部署教程.md
Normal file
107
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/0-Nukkit部署教程.md
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
front:
|
||||
hard: 入门
|
||||
time: 60分钟
|
||||
---
|
||||
|
||||
# Nukkit部署教程
|
||||
|
||||
## 前言
|
||||
本文默认认为你了解过Nukkit 或者 通过Waterdogpe + Nukkit搭建过第三方服务器。
|
||||
|
||||
如果你没有了解过,请移步到 [2-Nukkit开服教程](2-Server.properties详解.md)
|
||||
|
||||
特别鸣谢(排名不分先后): LT_Name(NukkitMOT作者)、bbbroken(EaseCation服务器开发者)、亦染(社区支持者)
|
||||
|
||||
## 准备阶段
|
||||
1. 准备Java版本,建议Java版本为Java17及以上版本
|
||||
2. 准备NukkitMOT分支,NukkitMOT原作者已将中国版打包到github主分支内 https://github.com/MemoriesOfTime/Nukkit-MOT
|
||||
> 目前仅支持接入Nukkit-MOT,其他分支可自行通过参考NukkitMOT源码进行对接
|
||||
3. 准备 WaterDogPE 代理服务端而。WaterdogPE 已兼容中国版,开源仓库是: https://github.com/MCNeteaseDevs/WaterdogPE_Netease/tree/netease。
|
||||
|
||||
|
||||
## WaterDogPE
|
||||
### config.yml 的配置
|
||||
|
||||
需要修改以下参数,其他配置根据情况自行修改
|
||||
```yaml
|
||||
|
||||
# ....
|
||||
|
||||
netease_client: true # 启用 netease 客户端的支持
|
||||
online_mode: true
|
||||
# 开发测试阶段,需要改为false,否则会提示需要 minecraft验证
|
||||
# 发布阶段时,需要改为true,之后只能用网易手机客户端连接才能进入
|
||||
listener:
|
||||
# .....
|
||||
|
||||
host: 0.0.0.0:19132 # waterdogpe 代理端的IP和端口 。官方提供的机器19132端口可能会被占用,根据实际情况更改
|
||||
priorites: # 按顺序配置,第一个是玩家进入时默认在的服务器。 一般为大厅服
|
||||
- lobby1
|
||||
|
||||
# .....
|
||||
servers: # 子服务器的连接ID配置,如大厅服、游戏服等等。如子服务器不在同一台机器,则需要写具体的ip。
|
||||
lobby1:
|
||||
address: 127.0.0.1:19133
|
||||
public_address: play.myserver.com:19133
|
||||
server_type: bedrock
|
||||
|
||||
|
||||
permissions: # 权限配置,一般用于配置管理员的权限,用于测试、调试。仅通过名字识别,建议发布阶段去掉,改为用插件实现相关调试功能
|
||||
玩家id:
|
||||
- waterdog.player.transfer
|
||||
- waterdog.player.list
|
||||
- waterdog.command.server
|
||||
|
||||
```
|
||||
|
||||
### 装载客户端模组
|
||||
|
||||
当通过waterdogpe代理后,需要将客户端模组存放在waterdogpe 根目录下的 packs 文件夹中,不要存放在NukkitMOT根目录
|
||||
> 除非你仅通过NukkitMOT单端开服 否则waterdogpe 会自动将nukkit模组加载数据包拦截
|
||||
|
||||
> 但如果关闭waterdogpe的资源包功能,Nukkit数据包依然会被waterdogpe拦截而无法正常进入游戏
|
||||
|
||||
确保 config.yml 已启用资源包
|
||||
```yaml
|
||||
enable_packs: true # 必须打开
|
||||
overwrite_client_packs: true # 按需
|
||||
force_server_packs: true # 按需
|
||||
```
|
||||
|
||||
### 模组打包格式
|
||||
|
||||
waterdogpe 仅支持 zip和mcpack包,不支持文件夹。
|
||||
可以将行为包、资源包都存放在packs目录中。
|
||||
目前仅支持 manifest.json ,不支持 pack_manifest.json
|
||||
|
||||
zip打包格式为: 压缩包一级目录下就是 manifest.json,不要额外套一层文件夹
|
||||

|
||||
|
||||
## Nukkit-MOT
|
||||
|
||||
nukkit社区的插件
|
||||
https://cloudburstmc.org/resources/categories/nukkit-plugins.1/
|
||||
|
||||
### server.properties 配置
|
||||
|
||||
为了确保Nukkit-MOT正常接入中国版,您需要调整一些配置
|
||||
```properties
|
||||
xbox-auth=off
|
||||
netease-client-support=on
|
||||
only-allow-netease-client=on
|
||||
```
|
||||
|
||||
### 模组装载
|
||||
|
||||
如果使用 waterdogpe 代理,则需要将模组放在 waterdogpe 目录,而非Nukkit目录
|
||||
如果仅适用Nukkit,则将行为包合资源包都放在Nukkit目录下有关 netease的文件里
|
||||
|
||||
### NukkitMaster插件
|
||||
|
||||
NukkitMaster相当于Spigot服的SpigotMaster,内置封装了PyRPC、订单接口、消息收发等功能,API和使用方法和SpigotMaster一样。
|
||||
|
||||
|
||||
### 自定义物品、方块和实体
|
||||
|
||||
Nukkit-MOT本身已经支持自定义物品、方块、实体的功能,可以参考[官方文档](https://www.nukkit-mot.com/zh/docs/tutorial-extras/custom/custom_item)
|
||||
278
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/1-NukkitMasterAPI文档.md
Normal file
278
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/1-NukkitMasterAPI文档.md
Normal file
@@ -0,0 +1,278 @@
|
||||
---
|
||||
front:
|
||||
hard: 入门
|
||||
time: 60分钟
|
||||
---
|
||||
|
||||
# NukkitMaster文档
|
||||
|
||||
## 准备阶段
|
||||
|
||||
在部署Nukkit服务器之前,您需要阅读一下NukkitMaster的API来进行基本的ModSDK通信与商业化内容接入。
|
||||
NukkitMaster需要安装在Nukkit-MOT服务端中。
|
||||
|
||||
> 需要注意: NukkitMaster是基于Nukkit-MOT分支进行开发的。Nukkit官方服务端版本无法兼容。
|
||||
|
||||
> 如果您需要使用其他分支的Nukkit,您可以参考NukkitMOT源码仓库修改的内容而自行修改服务端以兼容中国版的协议。
|
||||
> 通信内容方面,您可以自行反编译NukkitMaster来兼容您的其他分支的Nukkit服务端。
|
||||
|
||||
> NukkitMOT分支开源地址: https://github.com/MemoriesOfTime/Nukkit-MOT
|
||||
|
||||
## 插件配置
|
||||
|
||||
```yaml
|
||||
# 服务器id(开发者平台中的资源数字id)
|
||||
game_id: ""
|
||||
# 正式服务器key(开发者平台中的签名信息)
|
||||
game_key: ""
|
||||
# 测试服务器key(开发者平台中的签名信息)
|
||||
test_game_key: ""
|
||||
|
||||
# 是否是测试服
|
||||
test_server: false
|
||||
|
||||
# 是否使用自定义商城(false表示使用官方提供的商城功能)
|
||||
custom_shop: false
|
||||
|
||||
|
||||
# 订单服务器地址(一般不用填,保持""即可)
|
||||
shop_server_url: ""
|
||||
# web服务器地址(一般不用填,保持""即可)
|
||||
web_server_url: ""
|
||||
```
|
||||
|
||||
NukkitMaster插件会在 `plugins/NukkitMaster` 下生成 `config.yml` ,需要将服务器的相关数据进行配置,订单API才能生效。
|
||||
其中`gameid`、`rawkey`、`test rawkey`是必须要填写的。
|
||||
`test_server`需要根据服务器部署情况进行修改,这个值会影响NukkitMaster插件使用的是正式服url还是测试服url
|
||||
`custom_shop` 和 [商业化流程](https://mc.163.com/dev/mcmanual/mc-dev/mcguide/27-%E6%89%8B%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F/%E8%AF%BE%E7%A8%8B9%EF%BC%9A%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%BA%BF/%E7%AC%AC3%E8%8A%82%EF%BC%9A%E5%95%86%E4%B8%9A%E5%8C%96%E6%93%8D%E4%BD%9C.html?key=use_custom_shop&docindex=1&type=0) 中 use custom shop 功能同理
|
||||
`shop_server_url`、`web_server_url`为预留配置,目前不需要修改,默认即可
|
||||
|
||||
## API
|
||||
|
||||
### `public void enableCustomShopEntry(boolean useCustomShop)`
|
||||
开启商城插件的入口,该功能已经在NukkitMaster中集成,可修改NukkitMaster的`config.yml`文件。
|
||||
参数: `useCustomShop` —— 是否使用自定义商城入口,为false时,则使用官方商城入口
|
||||
|
||||
### `public void openShop(Player player)`
|
||||
打开指定玩家商城界面 注意:该接口需要使用商城插件,并修改config.yml的`custom_shop`为true。
|
||||
参数: `player` —— 玩家
|
||||
|
||||
### `public void closeShop(Player player)`
|
||||
关闭指定玩家商城界面 注意:该接口需要使用商城插件,并修改config.yml的`custom_shop`为true。
|
||||
参数: `player` —— 玩家
|
||||
|
||||
### `public void getPlayerOrderList(Player player, FutureCallback<Map<String, Object>> callback)`
|
||||
获取玩家未发货订单列表
|
||||
参数:
|
||||
`player` —— 玩家
|
||||
`callback` —— FutureCallBack 回调函数
|
||||
|
||||
例子:
|
||||
回调参数为Map<String,Object>, 目前值为
|
||||
|
||||
| Key | Value |
|
||||
|-------------|------------|
|
||||
| json_result | 订单json数据对象 |
|
||||
| player | Player玩家对象 |
|
||||
|
||||
### `public void finPlayerOrder(Player player, List<String> orderList, FutureCallback<Map<String, Object>> callback)`
|
||||
获取玩家未发货订单列表
|
||||
参数:
|
||||
`player` —— 玩家
|
||||
`orderList` —— 订单id列表
|
||||
`callback` —— FutureCallBack 回调函数
|
||||
|
||||
### `public void listenForNukkitMasterEvent(SpigotMasterEvent event, PyRpcHandler handler)`
|
||||
|
||||
监听spigot master的自定义事件
|
||||
参数:
|
||||
`event` — SpigotMasterEvent的枚举值
|
||||
`handler` — 回调函数
|
||||
|
||||
|
||||
### `public void listenForEvent(String namespace, String system, String event, PyRpcHandler handler)`
|
||||
|
||||
注册客户端事件
|
||||
参数:
|
||||
`namespace` — 来源客户端系统的namespace
|
||||
`system` — 来源客户端系统的systemName
|
||||
`event` — 事件名
|
||||
`handler` — 回调函数
|
||||
|
||||
|
||||
### `public void notifyToClient(Player player, String namespace, String system, String event, Map<String, Object> data)`
|
||||
|
||||
给指定玩家发送服务端事件
|
||||
参数:
|
||||
`player` — 接收事件的玩家
|
||||
`namespace` — 在客户端系统使用ListenForEvent监听的namespace
|
||||
`system` — 在客户端系统使用ListenForEvent监听的systemName
|
||||
`event` — 事件名
|
||||
`data` — 事件参数。注意,要使用-2指代本地玩家的entityId。
|
||||
|
||||
|
||||
### `public void notifyToMultiClients(List<Player> players, String namespace, String system, String event, Map<String, Object> data)`
|
||||
|
||||
给多个玩家发送服务端事件。 因为-2的entityId对于不同玩家来说都指代本机玩家,而非某个固定的实体,所以不要在多播中发送这种信息。
|
||||
参数:
|
||||
`players` — 接收事件的玩家列表
|
||||
`namespace` — 在客户端系统使用ListenForEvent监听的namespace
|
||||
`system` — 在客户端系统使用ListenForEvent监听的systemName
|
||||
`event` — 事件名
|
||||
`data` — 事件参数
|
||||
|
||||
|
||||
### `public void notifyToClientsNearby(@Nullable Player except, Location loc, double dist, String namespace, String system, String event, Map<String, Object> data)`
|
||||
|
||||
给某个位置附近一定半径内的所有玩家发送服务端事件。 因为-2的entityId对于不同玩家来说都指代本机玩家,而非某个固定的实体,所以不要在多播中发送这种信息。
|
||||
参数:
|
||||
`except` — 发送事件时排除掉这个玩家,可以为null表示不排除
|
||||
`loc` — 圆心位置
|
||||
`dist` — 半径
|
||||
`namespace` — 在客户端系统使用ListenForEvent监听的namespace
|
||||
`system` — 在客户端系统使用ListenForEvent监听的systemName
|
||||
`event` — 事件名
|
||||
`data` — 事件参数
|
||||
|
||||
|
||||
### `public void broadcastToAllClient(@Nullable Player except, World world, String namespace, String system, String event, Map<String, Object> data)`
|
||||
|
||||
给某个world内的所有玩家发送服务端事件。 因为-2的entityId对于不同玩家来说都指代本机玩家,而非某个固定的实体,所以不要在多播中发送这种信息。
|
||||
参数:
|
||||
`except` — 发送事件时排除掉这个玩家,可以为null表示不排除
|
||||
`world` — 所在world
|
||||
`namespace` — 在客户端系统使用ListenForEvent监听的namespace
|
||||
`system` — 在客户端系统使用ListenForEvent监听的systemName
|
||||
`event` — 事件名
|
||||
`data` — 事件参数
|
||||
|
||||
|
||||
### `public void broadcastToAllClient(@Nullable Player except, String namespace, String system, String event, Map<String, Object> data)`
|
||||
|
||||
给服务器内的所有玩家发送服务端事件。 因为-2的entityId对于不同玩家来说都指代本机玩家,而非某个固定的实体,所以不要在多播中发送这种信息。
|
||||
参数:
|
||||
`except` — 发送事件时排除掉这个玩家,可以为null表示不排除
|
||||
`namespace` — 在客户端系统使用ListenForEvent监听的namespace
|
||||
`system` — 在客户端系统使用ListenForEvent监听的systemName
|
||||
`event` — 事件名
|
||||
`data` — 事件参数
|
||||
|
||||
|
||||
## API的使用例子
|
||||
|
||||
可以参考Spigot开服的商店DEMO: [商城Demo详解](https://mc.163.com/dev/mcmanual/mc-dev/mcguide/27-%E6%89%8B%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F/%E8%AF%BE%E7%A8%8B10%EF%BC%9A%E4%BD%BF%E7%94%A8Spigot%E5%BC%80%E6%9C%8D/30-Spigot%E6%9C%8DDemo%E8%AF%A6%E8%A7%A3/3-%E5%95%86%E5%9F%8EDemo%E8%AF%A6%E8%A7%A3.html)
|
||||
仅仅只是将其中spigotMaster更换为nukkitMaster,其他逻辑基本相同
|
||||
|
||||
### 获取nukkitMaster对象
|
||||
```java
|
||||
import com.neteasemc.nukkitmaster.NukkitMaster;
|
||||
public final class App extends PluginBase {
|
||||
NukkitMaster nukkitMaster;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
// 可以直接获取instance
|
||||
nukkitMaster = NukkitMaster.getInstance();
|
||||
// 或者通过插件名字获取
|
||||
nukkitMaster = (NukkitMaster)getServer().getPluginManager().getPlugin("NukkitMaster");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 监听玩家购买商品事件、玩家催发货事件和发货逻辑
|
||||
```java
|
||||
public void ListenShop() {
|
||||
PyRpcHandler shipItemHandler = new PyRpcHandler() {
|
||||
@Override
|
||||
public void onEvent(Player player, Map<String, Object> data) {
|
||||
tryShipItem(player);
|
||||
}
|
||||
};
|
||||
// 玩家催发货或者玩家购买物品成功事件进行发货检查
|
||||
nukkitMaster.listenForNukkitMasterEvent(NukkitMasterEvent.PLAYER_BUY_ITEM_SUCCESS, shipItemHandler);
|
||||
nukkitMaster.listenForNukkitMasterEvent(NukkitMasterEvent.PLAYER_URGE_SHIP, shipItemHandler);
|
||||
}
|
||||
|
||||
// 获取玩家订单,并且尝试发货
|
||||
public void tryShipItem(Player player){
|
||||
FutureCallback<Map<String, Object>> cbHandler = new FutureCallback<Map<String, Object>>() {
|
||||
@Override
|
||||
public void completed(Map<String, Object> result) {
|
||||
JSONObject jsonRes = (JSONObject)result.get("json_result");
|
||||
Player requestPlayer = (Player)result.get("player");
|
||||
|
||||
JSONArray entities = (JSONArray)jsonRes.get("entities");
|
||||
// 这里进行entites的订单内容发放
|
||||
List<String> finOrderIds = new ArrayList<>();
|
||||
for(int i = 0; i < entities.size(); ++i){
|
||||
JSONObject order = (JSONObject)entities.get(i);
|
||||
// 取出订单id,判断是否已经发放过,比如说通过本地的数据库等
|
||||
String orderId = order.getAsString("orderid");
|
||||
|
||||
// 对于还未发放的订单, 根据order的cmd字段进行对应的奖励逻辑发放
|
||||
// 如:shipItemToPlayer(requestPlayer);
|
||||
// 发放完之后记录数据库
|
||||
// 如:saveOrder(requestPlayer, orderId);
|
||||
|
||||
// 最后通知网易服务器订单已完成
|
||||
finOrderIds.add(orderId);
|
||||
}
|
||||
finPlayerOrder(requestPlayer, finOrderIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failed(Exception ex) {
|
||||
// 失败原因
|
||||
getLogger().info(ex.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelled() {
|
||||
getLogger().info("取消请求玩家订单");
|
||||
}
|
||||
};
|
||||
nukkitMaster.getPlayerOrderList(player, cbHandler);
|
||||
}
|
||||
|
||||
|
||||
// 通知网易服务器订单完成
|
||||
public void finPlayerOrder(Player player, List<String> finOrderList){
|
||||
FutureCallback<Map<String, Object>> cbHandler = new FutureCallback<Map<String, Object>>() {
|
||||
|
||||
@Override
|
||||
public void completed(Map<String, Object> result) {
|
||||
JSONObject jsonRes = (JSONObject)result.get("json_result");
|
||||
Player requestPlayer = (Player)result.get("player");
|
||||
getLogger().info("玩家:" + requestPlayer.getDisplayName() + " 订单已完成:" + jsonRes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failed(Exception ex) {
|
||||
getLogger().info(ex.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelled() {
|
||||
getLogger().info("取消通知玩家订单完成");
|
||||
}
|
||||
|
||||
};
|
||||
nukkitMaster.finPlayerOrder(player, finOrderList, cbHandler);
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
## NukkitMaster Event事件
|
||||
### `PLAYER_URGE_SHIP("player_urge_ship")`
|
||||
|
||||
玩家催发货事件
|
||||
|
||||
### `PLAYER_BUY_ITEM_SUCCESS("player_buy_item_success")`
|
||||
|
||||
玩家购买成功事件
|
||||
|
||||
### `CLIENT_LOAD_ADDON_FINISH("client_load_addon_finish")`
|
||||
|
||||
玩家客户端加载Mod完成事件
|
||||
271
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/10-NukkitMasterAPI文档.md
Normal file
271
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/10-NukkitMasterAPI文档.md
Normal file
@@ -0,0 +1,271 @@
|
||||
# NukkitMaster文档
|
||||
|
||||
## 准备阶段
|
||||
|
||||
在部署Nukkit服务器之前,您需要阅读一下NukkitMaster的API来进行基本的ModSDK通信与商业化内容接入。
|
||||
NukkitMaster需要安装在Nukkit-MOT服务端中。
|
||||
|
||||
> 需要注意: NukkitMaster是基于Nukkit-MOT分支进行开发的。Nukkit官方服务端版本无法兼容。
|
||||
|
||||
> 如果您需要使用其他分支的Nukkit,您可以自行反编译NukkitMaster
|
||||
|
||||
> NukkitMOT分支开源地址: https://github.com/MemoriesOfTime/Nukkit-MOT
|
||||
|
||||
## 插件配置
|
||||
|
||||
```yaml
|
||||
# 服务器id(开发者平台中的资源数字id)
|
||||
game_id: ""
|
||||
# 正式服务器key(开发者平台中的签名信息)
|
||||
game_key: ""
|
||||
# 测试服务器key(开发者平台中的签名信息)
|
||||
test_game_key: ""
|
||||
|
||||
# 是否是测试服
|
||||
test_server: false
|
||||
|
||||
# 是否使用自定义商城(false表示使用官方提供的商城功能)
|
||||
custom_shop: false
|
||||
|
||||
|
||||
# 订单服务器地址(一般不用填,保持""即可)
|
||||
shop_server_url: ""
|
||||
# web服务器地址(一般不用填,保持""即可)
|
||||
web_server_url: ""
|
||||
```
|
||||
|
||||
NukkitMaster插件会在 `plugins/NukkitMaster` 下生成 `config.yml` ,需要将服务器的相关数据进行配置,订单API才能生效。
|
||||
其中`gameid`、`rawkey`、`test rawkey`是必须要填写的。
|
||||
`test_server`需要根据服务器部署情况进行修改,这个值会影响NukkitMaster插件使用的是正式服url还是测试服url
|
||||
`custom_shop` 和 [商业化流程](https://mc.163.com/dev/mcmanual/mc-dev/mcguide/27-%E6%89%8B%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F/%E8%AF%BE%E7%A8%8B9%EF%BC%9A%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%BA%BF/%E7%AC%AC3%E8%8A%82%EF%BC%9A%E5%95%86%E4%B8%9A%E5%8C%96%E6%93%8D%E4%BD%9C.html?key=use_custom_shop&docindex=1&type=0) 中 use custom shop 功能同理
|
||||
`shop_server_url`、`web_server_url`为预留配置,目前不需要修改,默认即可
|
||||
|
||||
## API
|
||||
|
||||
### `public void enableCustomShopEntry(boolean useCustomShop)`
|
||||
开启商城插件的入口,该功能已经在NukkitMaster中集成,可修改NukkitMaster的`config.yml`文件。
|
||||
参数: `useCustomShop` —— 是否使用自定义商城入口,为false时,则使用官方商城入口
|
||||
|
||||
### `public void openShop(Player player)`
|
||||
打开指定玩家商城界面 注意:该接口需要使用商城插件,并修改config.yml的`custom_shop`为true。
|
||||
参数: `player` —— 玩家
|
||||
|
||||
### `public void closeShop(Player player)`
|
||||
关闭指定玩家商城界面 注意:该接口需要使用商城插件,并修改config.yml的`custom_shop`为true。
|
||||
参数: `player` —— 玩家
|
||||
|
||||
### `public void getPlayerOrderList(Player player, FutureCallback<Map<String, Object>> callback)`
|
||||
获取玩家未发货订单列表
|
||||
参数:
|
||||
`player` —— 玩家
|
||||
`callback` —— FutureCallBack 回调函数
|
||||
|
||||
例子:
|
||||
回调参数为Map<String,Object>, 目前值为
|
||||
|
||||
| Key | Value |
|
||||
|-------------|------------|
|
||||
| json_result | 订单json数据对象 |
|
||||
| player | Player玩家对象 |
|
||||
|
||||
### `public void finPlayerOrder(Player player, List<String> orderList, FutureCallback<Map<String, Object>> callback)`
|
||||
获取玩家未发货订单列表
|
||||
参数:
|
||||
`player` —— 玩家
|
||||
`orderList` —— 订单id列表
|
||||
`callback` —— FutureCallBack 回调函数
|
||||
|
||||
### `public void listenForNukkitMasterEvent(SpigotMasterEvent event, PyRpcHandler handler)`
|
||||
|
||||
监听spigot master的自定义事件
|
||||
参数:
|
||||
`event` — SpigotMasterEvent的枚举值
|
||||
`handler` — 回调函数
|
||||
|
||||
|
||||
### `public void listenForEvent(String namespace, String system, String event, PyRpcHandler handler)`
|
||||
|
||||
注册客户端事件
|
||||
参数:
|
||||
`namespace` — 来源客户端系统的namespace
|
||||
`system` — 来源客户端系统的systemName
|
||||
`event` — 事件名
|
||||
`handler` — 回调函数
|
||||
|
||||
|
||||
### `public void notifyToClient(Player player, String namespace, String system, String event, Map<String, Object> data)`
|
||||
|
||||
给指定玩家发送服务端事件
|
||||
参数:
|
||||
`player` — 接收事件的玩家
|
||||
`namespace` — 在客户端系统使用ListenForEvent监听的namespace
|
||||
`system` — 在客户端系统使用ListenForEvent监听的systemName
|
||||
`event` — 事件名
|
||||
`data` — 事件参数。注意,要使用-2指代本地玩家的entityId。
|
||||
|
||||
|
||||
### `public void notifyToMultiClients(List<Player> players, String namespace, String system, String event, Map<String, Object> data)`
|
||||
|
||||
给多个玩家发送服务端事件。 因为-2的entityId对于不同玩家来说都指代本机玩家,而非某个固定的实体,所以不要在多播中发送这种信息。
|
||||
参数:
|
||||
`players` — 接收事件的玩家列表
|
||||
`namespace` — 在客户端系统使用ListenForEvent监听的namespace
|
||||
`system` — 在客户端系统使用ListenForEvent监听的systemName
|
||||
`event` — 事件名
|
||||
`data` — 事件参数
|
||||
|
||||
|
||||
### `public void notifyToClientsNearby(@Nullable Player except, Location loc, double dist, String namespace, String system, String event, Map<String, Object> data)`
|
||||
|
||||
给某个位置附近一定半径内的所有玩家发送服务端事件。 因为-2的entityId对于不同玩家来说都指代本机玩家,而非某个固定的实体,所以不要在多播中发送这种信息。
|
||||
参数:
|
||||
`except` — 发送事件时排除掉这个玩家,可以为null表示不排除
|
||||
`loc` — 圆心位置
|
||||
`dist` — 半径
|
||||
`namespace` — 在客户端系统使用ListenForEvent监听的namespace
|
||||
`system` — 在客户端系统使用ListenForEvent监听的systemName
|
||||
`event` — 事件名
|
||||
`data` — 事件参数
|
||||
|
||||
|
||||
### `public void broadcastToAllClient(@Nullable Player except, World world, String namespace, String system, String event, Map<String, Object> data)`
|
||||
|
||||
给某个world内的所有玩家发送服务端事件。 因为-2的entityId对于不同玩家来说都指代本机玩家,而非某个固定的实体,所以不要在多播中发送这种信息。
|
||||
参数:
|
||||
`except` — 发送事件时排除掉这个玩家,可以为null表示不排除
|
||||
`world` — 所在world
|
||||
`namespace` — 在客户端系统使用ListenForEvent监听的namespace
|
||||
`system` — 在客户端系统使用ListenForEvent监听的systemName
|
||||
`event` — 事件名
|
||||
`data` — 事件参数
|
||||
|
||||
|
||||
### `public void broadcastToAllClient(@Nullable Player except, String namespace, String system, String event, Map<String, Object> data)`
|
||||
|
||||
给服务器内的所有玩家发送服务端事件。 因为-2的entityId对于不同玩家来说都指代本机玩家,而非某个固定的实体,所以不要在多播中发送这种信息。
|
||||
参数:
|
||||
`except` — 发送事件时排除掉这个玩家,可以为null表示不排除
|
||||
`namespace` — 在客户端系统使用ListenForEvent监听的namespace
|
||||
`system` — 在客户端系统使用ListenForEvent监听的systemName
|
||||
`event` — 事件名
|
||||
`data` — 事件参数
|
||||
|
||||
|
||||
## API的使用例子
|
||||
|
||||
可以参考Spigot开服的商店DEMO: [商城Demo详解](https://mc.163.com/dev/mcmanual/mc-dev/mcguide/27-%E6%89%8B%E6%9C%BA%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F/%E8%AF%BE%E7%A8%8B10%EF%BC%9A%E4%BD%BF%E7%94%A8Spigot%E5%BC%80%E6%9C%8D/30-Spigot%E6%9C%8DDemo%E8%AF%A6%E8%A7%A3/3-%E5%95%86%E5%9F%8EDemo%E8%AF%A6%E8%A7%A3.html)
|
||||
仅仅只是将其中spigotMaster更换为nukkitMaster,其他逻辑基本相同
|
||||
|
||||
### 获取nukkitMaster对象
|
||||
```java
|
||||
import com.neteasemc.nukkitmaster.NukkitMaster;
|
||||
public final class App extends PluginBase {
|
||||
NukkitMaster nukkitMaster;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
// 可以直接获取instance
|
||||
nukkitMaster = NukkitMaster.getInstance();
|
||||
// 或者通过插件名字获取
|
||||
nukkitMaster = (NukkitMaster)getServer().getPluginManager().getPlugin("NukkitMaster");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 监听玩家购买商品事件、玩家催发货事件和发货逻辑
|
||||
```java
|
||||
public void ListenShop() {
|
||||
PyRpcHandler shipItemHandler = new PyRpcHandler() {
|
||||
@Override
|
||||
public void onEvent(Player player, Map<String, Object> data) {
|
||||
tryShipItem(player);
|
||||
}
|
||||
};
|
||||
// 玩家催发货或者玩家购买物品成功事件进行发货检查
|
||||
nukkitMaster.listenForNukkitMasterEvent(NukkitMasterEvent.PLAYER_BUY_ITEM_SUCCESS, shipItemHandler);
|
||||
nukkitMaster.listenForNukkitMasterEvent(NukkitMasterEvent.PLAYER_URGE_SHIP, shipItemHandler);
|
||||
}
|
||||
|
||||
// 获取玩家订单,并且尝试发货
|
||||
public void tryShipItem(Player player){
|
||||
FutureCallback<Map<String, Object>> cbHandler = new FutureCallback<Map<String, Object>>() {
|
||||
@Override
|
||||
public void completed(Map<String, Object> result) {
|
||||
JSONObject jsonRes = (JSONObject)result.get("json_result");
|
||||
Player requestPlayer = (Player)result.get("player");
|
||||
|
||||
JSONArray entities = (JSONArray)jsonRes.get("entities");
|
||||
// 这里进行entites的订单内容发放
|
||||
List<String> finOrderIds = new ArrayList<>();
|
||||
for(int i = 0; i < entities.size(); ++i){
|
||||
JSONObject order = (JSONObject)entities.get(i);
|
||||
// 取出订单id,判断是否已经发放过,比如说通过本地的数据库等
|
||||
String orderId = order.getAsString("orderid");
|
||||
|
||||
// 对于还未发放的订单, 根据order的cmd字段进行对应的奖励逻辑发放
|
||||
// 如:shipItemToPlayer(requestPlayer);
|
||||
// 发放完之后记录数据库
|
||||
// 如:saveOrder(requestPlayer, orderId);
|
||||
|
||||
// 最后通知网易服务器订单已完成
|
||||
finOrderIds.add(orderId);
|
||||
}
|
||||
finPlayerOrder(requestPlayer, finOrderIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failed(Exception ex) {
|
||||
// 失败原因
|
||||
getLogger().info(ex.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelled() {
|
||||
getLogger().info("取消请求玩家订单");
|
||||
}
|
||||
};
|
||||
nukkitMaster.getPlayerOrderList(player, cbHandler);
|
||||
}
|
||||
|
||||
// 通知网易服务器订单完成
|
||||
public void finPlayerOrder(Player player, List<String> finOrderList){
|
||||
FutureCallback<Map<String, Object>> cbHandler = new FutureCallback<Map<String, Object>>() {
|
||||
|
||||
@Override
|
||||
public void completed(Map<String, Object> result) {
|
||||
JSONObject jsonRes = (JSONObject)result.get("json_result");
|
||||
Player requestPlayer = (Player)result.get("player");
|
||||
getLogger().info("玩家:" + requestPlayer.getDisplayName() + " 订单已完成:" + jsonRes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failed(Exception ex) {
|
||||
getLogger().info(ex.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelled() {
|
||||
getLogger().info("取消通知玩家订单完成");
|
||||
}
|
||||
|
||||
};
|
||||
nukkitMaster.finPlayerOrder(player, finOrderList, cbHandler);
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
## NukkitMaster Event事件
|
||||
|
||||
### `PLAYER_URGE_SHIP("player_urge_ship")`
|
||||
|
||||
玩家催发货事件
|
||||
|
||||
### `PLAYER_BUY_ITEM_SUCCESS("player_buy_item_success")`
|
||||
|
||||
玩家购买成功事件
|
||||
|
||||
### `CLIENT_LOAD_ADDON_FINISH("client_load_addon_finish")`
|
||||
|
||||
玩家客户端加载Mod完成事件
|
||||
974
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/2-Server.properties详解.md
Normal file
974
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/2-Server.properties详解.md
Normal file
@@ -0,0 +1,974 @@
|
||||
---
|
||||
front:
|
||||
hard: 入门
|
||||
time: 60分钟
|
||||
---
|
||||
|
||||
# server.properties参数解释
|
||||
|
||||
## 前言
|
||||
|
||||
作者:LT_Name
|
||||
原文: [server.properties](https://www.nukkit-mot.com/zh/docs/server-config/server-properties)
|
||||
|
||||
修改服务器的运行配置,以此来定制一些基本功能。
|
||||
|
||||
## `server-ip`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|---------|
|
||||
| String | 0.0.0.0 |
|
||||
|
||||
服务器的IP
|
||||
|
||||
## `server-port`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-------|
|
||||
| Integer | 19132 |
|
||||
|
||||
服务器的端口
|
||||
|
||||
> 同一端口不能运行多个服务器
|
||||
如果不能访问请检查防火墙
|
||||
基岩版使用 UDP
|
||||
|
||||
## `enable-query`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
启用 Query 查询
|
||||
详见:https://wiki.vg/Query
|
||||
|
||||
## `motd`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|------------------|
|
||||
| String | Minecraft Server |
|
||||
|
||||
服务器名称/显示在服务器列表上的文本
|
||||
|
||||
## `sub-motd`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|-----------------------|
|
||||
| String | Powered by Nukkit-MOT |
|
||||
|
||||
motd 的第二行
|
||||
|
||||
> 只有当在游戏中的好友列表中查看服务器时,才会显示给本地网络中的玩家
|
||||
自 1.16.210 以来不能为空
|
||||
|
||||
## `view-distance`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 8 |
|
||||
|
||||
最大视距(以区块为单位)
|
||||
更大的值 = 加载更多区块 = 更多的内存和 CPU 使用
|
||||
|
||||
## `achievements`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
启用玩家成就
|
||||
|
||||
## `announce-player-achievements`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
向所有玩家广播获得成就的消息
|
||||
|
||||
## `spawn-protection`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 10 |
|
||||
|
||||
非管理员(OP)玩家无法在区块内建造或破坏方块的生成保护区域大小(以方块为单位)
|
||||
|
||||
## `max-players`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 50 |
|
||||
|
||||
服务器允许的最大玩家人数
|
||||
|
||||
## `drop-spawners`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
刷怪笼被挖掘后掉落
|
||||
|
||||
## `spawn-animals`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
启用动物生成
|
||||
|
||||
## `spawn-mobs`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
启用怪物生成
|
||||
|
||||
## `gamemode`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 2 |
|
||||
|
||||
服务器的默认游戏模式
|
||||
0 = 生存, 1 = 创造, 2 = 冒险, 3 = 旁观
|
||||
|
||||
## `force-gamemode`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
每次加入时将玩家游戏模式设置为默认游戏模式
|
||||
|
||||
## `difficulty`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 2 |
|
||||
|
||||
服务器的默认难度(0-3)
|
||||
|
||||
## `hardcore`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
玩家死亡后将其封禁
|
||||
|
||||
## `pvp`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
是否启用玩家对战
|
||||
|
||||
## `white-list`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
仅允许白名单中的玩家加入服务器
|
||||
使用`/whitelist`命令或修改 `white-list.txt` 来添加玩家到白名单
|
||||
|
||||
## `whitelist-reason`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|------------------------|
|
||||
| String | Server is white-listed |
|
||||
|
||||
启用白名单的原因,显示给被阻挡在外的玩家
|
||||
|
||||
## `generator-settings`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|-----|
|
||||
| String | |
|
||||
|
||||
默认级别的特殊世界生成器设置
|
||||
|
||||
## `level-name`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|-------|
|
||||
| String | world |
|
||||
|
||||
默认世界的名称
|
||||
|
||||
## `level-seed`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|-----|
|
||||
| String | |
|
||||
|
||||
默认世界的种子
|
||||
|
||||
## `level-type`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|------|
|
||||
| String | void |
|
||||
|
||||
如果默认世界不存在,则使用的生成器
|
||||
默认支持:default, normal, flat, nether, the_end或void
|
||||
|
||||
## `enable-rcon`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
启用远程控制台访问
|
||||
|
||||
> RCON 不是一个非常安全的远程控制服务器的方式
|
||||
RCON 可以使用与服务器相同的端口(TCP 协议)
|
||||
详见:https://developer.valvesoftware.com/wiki/Source_RCON_Protocol
|
||||
|
||||
## `rcon.password`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|---------|
|
||||
| String | 随机10位字符 |
|
||||
|
||||
RCON 连接的密码
|
||||
|
||||
## `rcon.port`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-------|
|
||||
| Integer | 25575 |
|
||||
|
||||
RCON 连接的端口
|
||||
|
||||
## `auto-save`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
自动保存世界、玩家数据
|
||||
|
||||
> 如果禁用,则对世界的更改不会自动保存,即使在卸载时也是如此,如果需要可以使用插件手动保存
|
||||
|
||||
您可以使用 `worlds-level-auto-save-disabled` 仅禁用自动保存世界
|
||||
|
||||
## `force-resources`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
强制玩家下载服务器的资源包后才能加入
|
||||
还请参阅 `force-resources-allow-client-packs`
|
||||
|
||||
## `force-resources-allow-client-packs`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
在启用 `force-resources` 时不要禁用客户端自己的资源包
|
||||
|
||||
## `xbox-auth`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
需要经过 Xbox 帐户验证后才能加入
|
||||
|
||||
> 不会绕过客户端的限制条件。
|
||||
如果您选择禁用此功能(不推荐这样做),请在玩家名称和 UUIDs 传递给权限管理器或管理员之后,以确保它们已经得到了验证。
|
||||
|
||||
## `encryption`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
启用网络加密
|
||||
如果不使用代理软件,则建议启用此功能
|
||||
|
||||
## `bed-spawnpoints`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
允许玩家使用床和重生锚设置重生点
|
||||
|
||||
## `explosion-break-blocks`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
启用爆炸对方块造成的破坏
|
||||
影响所有爆炸,如 TNT、苦力怕和末影水晶
|
||||
|
||||
## `stop-in-game`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
允许 OP 在游戏中使用 `/stop` 命令
|
||||
|
||||
## `op-in-game`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
允许 OP 在游戏中使用 `/op` 命令对其他玩家进行操作
|
||||
|
||||
## `space-name-mode`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|--------|
|
||||
| String | ignore |
|
||||
|
||||
玩家名称中带有空格的处理方式
|
||||
"disabled" - 禁止带有空格名称的玩家进入服务器
|
||||
"ignore" - 忽略空格名称 (默认)
|
||||
"replacing" - 用"_"替换玩家名称中的空格
|
||||
|
||||
## `xp-bottles-on-creative`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
允许创造模式下玩家扔经验瓶
|
||||
|
||||
## `spawn-eggs`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
启用刷怪蛋,允许通过刷怪蛋生成实体
|
||||
|
||||
## `mob-ai`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
启用 MobPlugin 的生物 AI
|
||||
|
||||
## `entity-auto-spawn-task`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
启用自动生成怪物和动物的任务
|
||||
生成功能依据服务器的游戏难度来工作
|
||||
注意:如果您希望生成任何生物,必须启用`spawn-animals`、`spawn-mobs`其一,或者两者都启用。
|
||||
|
||||
## `entity-despawn-task`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
若启用,则没有使用命名牌命名的生物的会自动消失
|
||||
|
||||
> 末影龙、凋灵和村民不会消失
|
||||
|
||||
## `language`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|-----|
|
||||
| String | eng |
|
||||
|
||||
Nukkit 使用的默认语言
|
||||
|
||||
## `force-language`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
强制使用服务器端翻译
|
||||
只有在你有插件来实现这些翻译时才启用
|
||||
|
||||
## `shutdown-message`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|---------------|
|
||||
| String | Server closed |
|
||||
|
||||
当您停止服务器时向玩家显示的消息
|
||||
可以使用颜色符号`§`,换行请使用 `§n`。
|
||||
|
||||
## `save-player-data`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
如果启用,则以其UUID保存玩家数据的格式,并自动将旧格式的玩家数据转换为新格式
|
||||
如果使用旧版Waterdog代理,请禁用此功能
|
||||
如果存在新的玩家数据,请勿禁用
|
||||
|
||||
## `query-plugins`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
若启用则 Query 查询可以获取插件列表(enable-query=on)
|
||||
|
||||
## `debug-level`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 1 |
|
||||
|
||||
如果您想要更多的调试日志记录,请设置较高的值(1-3)
|
||||
|
||||
## `async-workers`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|------|
|
||||
| String | auto |
|
||||
|
||||
异步工作线程数
|
||||
如果设置为 auto,则会尝试自动检测核心数进行调整
|
||||
|
||||
## `zlib-provider`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 2 |
|
||||
|
||||
选择 zlib 提供程序
|
||||
0 = ZlibOriginal,1 = ZlibSingleThreadLowMem,2 = ZlibThreadLocal
|
||||
默认:2
|
||||
其他提供程序可能会对服务器的性能产生负面影响
|
||||
|
||||
## `compression-level`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 4 |
|
||||
|
||||
发送数据包的 Zlib 压缩级别(0-9)
|
||||
更高的值 = 更多的 CPU 占用 + 更少的网络占用
|
||||
|
||||
## `compression-threshold`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 256 |
|
||||
|
||||
不要压缩小于此值的批处理数据包(仅限Zlib)
|
||||
|
||||
## `use-snappy-compression`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
使用 Snappy 压缩数据包
|
||||
|
||||
## ~~min-mtu~~
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 576 |
|
||||
|
||||
~~设置最小 MTU 大小~~
|
||||
~~默认值:576~~
|
||||
|
||||
## ~~max-mtu~~
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|------|
|
||||
| Integer | 1492 |
|
||||
|
||||
~~设置最大 MTU 大小(576 - 1492)~~
|
||||
~~值越大网络发包越高效,但较小的值或许可以解决某些连接上的问题。~~
|
||||
|
||||
## `rak-packet-limit`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 120 |
|
||||
|
||||
每个ip可以在一个 RakNet 周期(10ms)内发送的数据包数量
|
||||
超过此限制的ip将被暂时封禁
|
||||
|
||||
## `enable-rak-send-cookie`
|
||||
| Data Type | Default Value |
|
||||
|-----------|---------------|
|
||||
| Boolean | on |
|
||||
|
||||
启用此选项后,服务器会在客户端连接时发送一个 Cookie,用于验证客户端的合法性。
|
||||
这将增强连接的安全性,防止潜在的恶意连接或攻击。
|
||||
|
||||
## `timeout-milliseconds`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-------|
|
||||
| Integer | 25000 |
|
||||
|
||||
如果客户端没有响应,服务器应该等待多长时间后踢出玩家
|
||||
单位为毫秒,1000 毫秒 = 1 秒
|
||||
|
||||
## `auto-tick-rate`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
允许服务器自动调整世界游戏刻以维持每秒 20 个游戏刻
|
||||
|
||||
## `auto-tick-rate-limit`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 20 |
|
||||
|
||||
服务器可以临时降低游戏刻速率到多少
|
||||
|
||||
## `base-tick-rate`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 1 |
|
||||
|
||||
基础游戏刻速率
|
||||
1 = 每秒 20 个刻度,2 = 每秒 10 个刻度,以此类推。
|
||||
建议保持默认值(1)。
|
||||
|
||||
## `always-tick-players`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
始终对玩家进行游戏刻更新
|
||||
|
||||
## `light-updates`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
光照更新
|
||||
|
||||
## `clear-chunk-tick-list`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
允许服务器在完成每个游戏刻的逻辑更新后,清空用于追踪哪些区块需要进行逻辑更新的列表 `chunkTickList`。
|
||||
这可以帮助优化服务器性能,防止不必要的计算,特别是在大型服务器或有大量区块需要管理的情况下。
|
||||
|
||||
## `spawn-threshold`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 56 |
|
||||
|
||||
在生成玩家之前需要加载多少个区块
|
||||
|
||||
## `chunk-sending-per-tick`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 4 |
|
||||
|
||||
每游戏刻发送的区块数
|
||||
|
||||
## `chunk-ticking-per-tick`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 40 |
|
||||
|
||||
每游戏刻 `chunkTickList` 存储的区块数
|
||||
|
||||
## `chunk-ticking-radius`
|
||||
| Data Type | Default Value |
|
||||
|-----------|---------------|
|
||||
| Integer | 3 |
|
||||
|
||||
玩家周围需要进行刻算的区块半径
|
||||
|
||||
## `chunk-generation-queue-size`
|
||||
| Data Type | Default Value |
|
||||
|-----------|---------------|
|
||||
| Integer | 8 |
|
||||
|
||||
等待生成的区块数量
|
||||
|
||||
## `chunk-generation-population-queue-size`
|
||||
| Data Type | Default Value |
|
||||
|-----------|---------------|
|
||||
| Integer | 8 |
|
||||
|
||||
等待填充的区块数量
|
||||
|
||||
## `ticks-per-autosave`
|
||||
| Data Type | Default Value |
|
||||
|-----------|---------------|
|
||||
| Integer | 6000 |
|
||||
|
||||
世界自动保存任务运行的频率
|
||||
以刻为单位,20刻 = 1秒
|
||||
|
||||
## `ticks-per-entity-spawns`
|
||||
| Data Type | Default Value |
|
||||
|-----------|---------------|
|
||||
| Integer | 200 |
|
||||
|
||||
实体自动生成任务运行的频率
|
||||
以刻为单位,20刻 = 1秒
|
||||
|
||||
## `ticks-per-entity-despawns`
|
||||
| Data Type | Default Value |
|
||||
|-----------|---------------|
|
||||
| Integer | 12000 |
|
||||
|
||||
实体存活的时间
|
||||
以刻为单位,20刻 = 1秒
|
||||
|
||||
## `thread-watchdog`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
启用线程看门狗
|
||||
|
||||
## `thread-watchdog-tick`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-------|
|
||||
| Integer | 60000 |
|
||||
|
||||
如果 Nukkit-MOT 主线程暂停超过 60000 毫秒,会抛出致命错误并终止执行的毫秒数
|
||||
|
||||
## `nether`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
生成地狱世界
|
||||
|
||||
## `end`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
生成末地世界
|
||||
|
||||
## `vanilla-portals`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
原版传送门
|
||||
|
||||
## `portal-ticks`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 80 |
|
||||
|
||||
玩家触发传送门所需Tick
|
||||
|
||||
## `multi-nether-worlds`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|-----|
|
||||
| String | |
|
||||
|
||||
如果你需要多个地狱世界,在这里列出应该有自己地狱的世界,否则使用默认的地狱世界
|
||||
|
||||
## `anti-xray-worlds`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|-----|
|
||||
| String | |
|
||||
|
||||
启用内置反矿透的世界列表
|
||||
|
||||
示例:`world, survival, factions`
|
||||
|
||||
## `do-not-tick-worlds`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|-----|
|
||||
| String | |
|
||||
|
||||
禁用随机方块刻度的世界列表
|
||||
这将禁用植物生长、树叶腐烂、草方块蔓延、方块掉落等。
|
||||
你可能想在这里添加你的大堂和迷你游戏世界
|
||||
|
||||
## `worlds-entity-spawning-disabled`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|-----|
|
||||
| String | |
|
||||
|
||||
不允许实体自动生成的世界列表
|
||||
|
||||
示例:`lobby, pvp, creative`
|
||||
|
||||
## `load-all-worlds`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
加载所有世界
|
||||
|
||||
## `ansi-title`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
启用在 Windows CMD 标题中显示服务器占用信息
|
||||
<Image img={require('@site/static/images/server-config/windows_cmd_title.png')} alt="Windows 命令行标题" />
|
||||
|
||||
## `block-listener`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
启用用于雪块、铁傀儡、怪物蛋石等的检查
|
||||
|
||||
## `allow-flight`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
启用/禁用飞行反作弊
|
||||
|
||||
## `multiversion-min-protocol`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 0 |
|
||||
|
||||
多版本的最低协议
|
||||
|
||||
## `multiversion-max-protocol`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | -1 |
|
||||
|
||||
多版本的最高协议
|
||||
|
||||
## `vanilla-bossbars`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
显示凋零和末影龙的Boss血条(实验性)
|
||||
|
||||
## `strong-ip-bans`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
强制 IP 封禁
|
||||
|
||||
## `worlds-level-auto-save-disabled`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|-----|
|
||||
| String | |
|
||||
|
||||
禁用自动保存
|
||||
等级的世界
|
||||
|
||||
## `temp-ip-ban-failed-xbox-auth`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
临时封禁 Xbox 身份验证失败的玩家
|
||||
|
||||
## `call-data-pk-send-event`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
如果没有插件使用它,可以禁用 `DataPacketSendEvent` 以获得更好的性能
|
||||
|
||||
## `call-batch-pk-send-event`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
如果没有插件使用它,可以禁用 `BatchPacketsEvent` 以获得更好的性能
|
||||
|
||||
## `do-level-gc`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
在游戏刻之间进行世界垃圾收集
|
||||
|
||||
## `skin-change-cooldown`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 15 |
|
||||
|
||||
玩家皮肤更换冷却时间(秒)
|
||||
|
||||
## ~~check-op-movement~~
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
~~为管理员(OP)启用移动检查~~
|
||||
|
||||
## `do-not-limit-interactions`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
禁用用于限制客户端右键交互垃圾数据包的黑客技术
|
||||
|
||||
## `do-not-limit-skin-geometry`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
禁用最大皮肤几何大小检查
|
||||
可能对某些玩家,皮肤的可用性是必需的
|
||||
|
||||
## `automatic-bug-report`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
启用自动报告错误
|
||||
|
||||
## ~~anvils-enabled~~
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
~~启用铁砧~~
|
||||
~~在 Nukkit 上,铁砧属于实验性功能方块,普遍存在物品重命名、物品数据丢失等问题~~
|
||||
|
||||
## `save-player-data-by-uuid`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
如果启用,则以 NukkitX 使用的格式保存玩家数据,并自动将旧格式的玩家数据转换为新格式
|
||||
如果使用旧版 WaterdogPE 代理,请禁用此功能
|
||||
|
||||
> 如果存在新的玩家数据,请勿禁用
|
||||
|
||||
## `persona-skins`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
允许玩家自己的皮肤
|
||||
|
||||
> 如果禁用,将显示默认的史蒂夫皮肤
|
||||
某些玩家的皮肤可能需要启用 `do-not-limit-skin-geometry` 才能使用
|
||||
|
||||
## ~~call-entity-motion-event~~
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
~~您可以禁用 EntityMotionEvent 以获得更好的性能,如果您的插件没有使用它~~
|
||||
|
||||
## `update-notifications`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
有新的 Nukkit-MOT 版本发布时通知刚加入游戏的管理员(OP)
|
||||
|
||||
## `bstats-metrics`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
启用 bStats 统计
|
||||
https://bstats.org/plugin/server-implementation/Nukkit/
|
||||
匿名收集数据:Nukkit 版本(Nukkit-MOT)、玩家数量、玩家游戏版本、是否开启 Xbox 身份验证、Java 版本、操作系统、CPU 架构及数量、服务器地理位置(粗略)
|
||||
|
||||
## `cache-chunks`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
将区块保存到内存中以加快发送速度
|
||||
|
||||
> 多版本支持的效果不佳
|
||||
|
||||
## `async-chunks`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
启用异步区块发送
|
||||
当向不同版本的玩家发送大量区块时,这可以极大地提高性能
|
||||
建议保持此选项开启
|
||||
|
||||
## `deprecated-verbose`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
当插件使用不推荐 API 时在控制台显示警告。
|
||||
|
||||
## `server-authoritative-movement`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|-------------|
|
||||
| String | server-auth |
|
||||
|
||||
服务器移动验证方式
|
||||
可选:`client-auth / server-auth-with-rewind / server-auth`
|
||||
|
||||
## `server-authoritative-block-breaking`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
服务器权威方块破坏
|
||||
|
||||
## `use-client-spectator`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
使用客户端侧的旁观者模式
|
||||
|
||||
## `enable-experiment-mode`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
启用实验模式
|
||||
|
||||
## `use-waterdog`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
尝试获取 WaterdogPE 提供的客户端真实 IP
|
||||
详见:https://waterdog.dev/
|
||||
|
||||
## `enable-spark`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
启用 Spark 用于性能分析
|
||||
详见:https://spark.lucko.me/docs
|
||||
|
||||
## `hastebin-token`
|
||||
| 数据类型 | 默认值 |
|
||||
|--------|-----|
|
||||
| String | |
|
||||
|
||||
Hastebin 令牌,方便生成 debug 链接
|
||||
详见:https://www.toptal.com/developers/hastebin/documentation
|
||||
|
||||
## `use-native-leveldb`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | off |
|
||||
|
||||
使用原生的 LevelDB 实现
|
||||
|
||||
## `enable-raw-ores`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Boolean | on |
|
||||
|
||||
启用粗矿石;若启用则对高版本玩家掉落粗铜、粗铁、粗金
|
||||
版本自 [BE 1.17.0](https://minecraft.wiki/w/Bedrock_Edition_1.17.0) 起
|
||||
|
||||
## `enable-new-paintings`
|
||||
| Data Type | Default Value |
|
||||
|-----------|---------------|
|
||||
| Boolean | on |
|
||||
|
||||
启用在1.21版本新加入的画
|
||||
|
||||
## `enable-new-chicken-eggs-laying`
|
||||
| Data Type | Default Value |
|
||||
|-----------|---------------|
|
||||
| Boolean | on |
|
||||
|
||||
启用鸡产出新类型鸡蛋
|
||||
(蓝色鸡蛋&棕色鸡蛋)
|
||||
|
||||
## `leveldb-cache-mb`
|
||||
| 数据类型 | 默认值 |
|
||||
|---------|-----|
|
||||
| Integer | 80 |
|
||||
|
||||
与 `use-native-leveldb` 一同使用
|
||||
用于减少每个世界硬盘读写操作的区块数据最大缓存大小
|
||||
如果你拥有大量内存并且仅有几个大型世界,可以调高此缓存大小
|
||||
|
||||
## `forced-safety-enchant`
|
||||
| Data Type | Default Value |
|
||||
|-----------|---------------|
|
||||
| Boolean | on |
|
||||
|
||||
启用强制安全附魔(限制附魔最大等级)
|
||||
|
||||
## `netease-client-support`
|
||||
| Data Type | Default Value |
|
||||
|-----------|---------------|
|
||||
| Boolean | off |
|
||||
|
||||
启用网易客户端支持,启用后将允许网易玩家进入服务器
|
||||
|
||||
## `only-allow-netease-client`
|
||||
| Data Type | Default Value |
|
||||
|-----------|---------------|
|
||||
| Boolean | off |
|
||||
|
||||
仅允许网易玩家进入服务器,开启后将禁止微软版玩家进入服务器,仅允许网易玩家加入服务器
|
||||
|
||||
|
||||
30
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/3-客户端打包教程.md
Normal file
30
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/3-客户端打包教程.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
front:
|
||||
hard: 入门
|
||||
time: 60分钟
|
||||
---
|
||||
|
||||
# 客户端打包教程
|
||||
|
||||
## 前言
|
||||
|
||||
为了能够让MC Server识别到开发者在客户端的模组,除了将资源文件放在服务端/代理端相应位置以外,还需要将行为包和资源包打包成可被解析的包体
|
||||
|
||||
## 打包与上传
|
||||
|
||||
客户端的包体您可以将他视作一个地图Addons去看待
|
||||
|
||||
里面的内容都与地图addons相似
|
||||
|
||||

|
||||
|
||||
获取到这些文件后,用压缩软件压缩成7z格式的压缩包
|
||||
|
||||
目录格式如下
|
||||
|
||||

|
||||

|
||||
|
||||
打包完后,上传客户端即可
|
||||
|
||||
> 入驻上传的客户端没有做机审验证,上架期间上传的客户端是有机审验证的,从而确保格式正确
|
||||
0
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/README.md
Normal file
0
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/README.md
Normal file
BIN
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/images/img.png
LFS
Normal file
BIN
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/images/img.png
LFS
Normal file
Binary file not shown.
BIN
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/images/img_1.png
LFS
Normal file
BIN
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/images/img_1.png
LFS
Normal file
Binary file not shown.
BIN
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/images/img_2.png
LFS
Normal file
BIN
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/images/img_2.png
LFS
Normal file
Binary file not shown.
BIN
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/images/img_3.png
LFS
Normal file
BIN
docs/mcguide/27-手机网络游戏/课程11:使用Nukkit开服/images/img_3.png
LFS
Normal file
Binary file not shown.
Reference in New Issue
Block a user