本帖最后由 10935336 于 2020-12-11 19:05 编辑

在模组服中,腐竹可能会遇到以下问题:
某个玩家无法进入服务器/玩家进入某个范围服务器就崩溃/玩家拿出某个物品服务器就崩溃
这些问题一直是许多腐竹的心头大患,今天我就来教大家缓解此问题。

解决这些问题的通常做法是回档,但是作为一个大型服务器,回档会导致很多问题。
更高级的办法是查看崩溃报告,检查该模组是否开源,报告问题,或是直接尝试修复。
今天我们要教的是一种简单粗暴的方式,直接删除地图文件中出问题的物品或方块。


打开 Forge 的自动移除错误功能
1.打开 Forge 配置文件
这个文件在 服务端/config/forge.cfg
1.15等高版本Forge配置文件在 服务端/存档文件夹/serverconfig/forge-server.toml
找到这两行

B:removeErroringEntities=false
B:removeErroringTileEntities=false

2.把 false 改成 true

B:removeErroringEntities=true
B:removeErroringTileEntities=true

这样 Forge 在遇到 Entities实体 或者 TileEntities 错误时能自动的把错误的物品移除,大大减少了蹦服几率。
这样做的代价是可能会导致某些物品凭空消失,不过我目前没遇到过。
但是这样也不是能100%解决的。


区块文件和玩家文件的位置
首先我们打开存档文件夹,通常能看到一下几个文件夹

region 文件夹内储存的是主世界的区块文件,其他世界的区块文件存在对应世界编号文件夹里面的 region 文件夹
在控制台输入 forge tps 能看到对应编号的世界是哪一个

playerdata 文件夹内储存的是玩家数据,包括背包,所在位置等。



当玩家使用某物品蹦服时
我们举一个栗子
某玩家报告说自己拿出某种物品时,客户端/服务端崩掉了,拿的是什么已经不记得了。

1.问玩家的ID是多少

2.如果是正版服务器,到https://mcuuid.net/ 输入ID查询UUID
例如 10935336 的 UUID 是 2b09d9e5-0f4c-4949-b476-9d50acbe3b98

3.如果是盗版服务器,把 OfflinePlayer:玩家ID 进行 32 位 MD5 加密得到的就是玩家UUID
例如 OfflinePlayer:10935336 进行 32 位 MD5 加密得到的是AC4149B4A41DD357DA160254C5AB4314
对应的 UUID 是 ac4149b4-a41d-3357-9a16-0254c5ab4314

站长之家MD5加密工具:https://tool.chinaz.com/tools/md5.aspx


4.下载 NBTexplorer,下载地址 https://github.com/jaquadro/NBTExplorer/releases

5.到 存档文件夹里面的 playerdata 内找到玩家对应的 UUID.dat 文件

6.使用 NBTexplorer 打开

Inventory 里面就是玩家背包内的物品,点击+号就能看到物品名称等详细信息

7.查看崩溃报告找到是什么东西蹦服的,或是直接问玩家,再不济就全部删除吧
比如说是这本任务书导致的蹦服,我们选中这个 4 entries 按下键盘上的 Del 删除按键,然后按上面的保存按钮保存。

然后把修改后的文件放回服务端的存档文件夹原位,重启服务器。
Duang 玩家背包里的任务书不见了,崩溃也不复存在。


当某个区块导致蹦服时
我们举一个栗子
某玩家报告说自己在地上放了一个方块,然后自己客户端崩了。而且不记得坐标。

1.询问玩家的ID是多少,并问清楚在哪一个世界崩溃的

2.如果是正版服务器,到 https://mcuuid.net/ 输入ID查询UUID
例如 10935336 的 UUID 是 2b09d9e5-0f4c-4949-b476-9d50acbe3b98

3.如果是盗版服务器,把 OfflinePlayer:玩家ID 进行 32 位 MD5 加密得到的就是玩家UUID
例如 OfflinePlayer:10935336 进行 32 位 MD5 加密得到的是AC4149B4A41DD357DA160254C5AB4314
对应的 UUID 是 ac4149b4-a41d-3357-9a16-0254c5ab4314

站长之家MD5加密工具:https://tool.chinaz.com/tools/md5.aspx


4.下载 NBTexplorer,下载地址 https://github.com/jaquadro/NBTExplorer/releases

5.到 存档文件夹里面的 playerdata 内找到玩家对应的 UUID.dat 文件

6.使用 NBTexplorer 打开

Pos 里面就是玩家所在的坐标,图中的坐标就是 X:-208   Z:-777   Y:141 注意正负号

6.使用 Dinnerbone 的坐标工具来得到所在的区块文件。
在第一栏输入玩家所在的坐标,注意正负号
然后第三栏就会出现,对应的区块文件的名字

如图所示,我们得到的区块文件是 r.-1.-2.mca

7.打开对应世界对应维度的 reign 文件夹,找到 r.-1.-2.mca ,使用 NBTexplorer 打开

8.查看 Dinnerbone 的坐标工具的第二行,我这里是 X:-13 Z:-49 ,Y不需要。

我们选中这个 Chunk 按下键盘上的 Del 删除按键,然后按上面的保存按钮保存。
然后把修改后的文件放回服务端的存档文件夹原位,重启服务器。
Duang 这个区块回到了最开始的状态,崩溃也不复存在。