本帖最后由 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%解决的。
区块文件和玩家文件的位置首先我们打开存档文件夹,通常能看到一下几个文件夹
x9XjQvuZ1Dig8tc3-image-1593773456602.png (31.38 KB, 下载次数: 7)
下载附件
2020-7-3 19:56 上传
region 文件夹内储存的是主世界的区块文件,其他世界的区块文件存在对应世界编号文件夹里面的 region 文件夹在控制台输入 forge tps 能看到对应编号的世界是哪一个
9QPerg48RmnqkJQ2-image-1593773768830.png (8.94 KB, 下载次数: 6)
下载附件
2020-7-3 19:56 上传
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
cBVm4zYr5IAzzSuc-image-1593774784857.png (6.74 KB, 下载次数: 6)
下载附件
2020-7-3 19:57 上传
4.下载 NBTexplorer,下载地址 https://github.com/jaquadro/NBTExplorer/releases
5.到 存档文件夹里面的 playerdata 内找到玩家对应的 UUID.dat 文件
6.使用 NBTexplorer 打开
JfP7ZCCpU4SvKkyo-image-1593775922958.png (10.25 KB, 下载次数: 9)
下载附件
2020-7-3 19:57 上传
Inventory 里面就是玩家背包内的物品,点击+号就能看到物品名称等详细信息
7.查看崩溃报告找到是什么东西蹦服的,或是直接问玩家,再不济就全部删除吧比如说是这本任务书导致的蹦服,我们选中这个 4 entries 按下键盘上的 Del 删除按键,然后按上面的保存按钮保存。
dID2W6Jz5N67WItb-image-1593776111194.png (4.12 KB, 下载次数: 5)
下载附件
2020-7-3 19:57 上传
然后把修改后的文件放回服务端的存档文件夹原位,重启服务器。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 打开
W5SrFlRxXm8waYRQ-image-1593776460005.png (8.82 KB, 下载次数: 7)
下载附件
2020-7-3 19:58 上传
Pos 里面就是玩家所在的坐标,图中的坐标就是 X:-208 Z:-777 Y:141 注意正负号
6.使用 Dinnerbone 的坐标工具来得到所在的区块文件。Dinnerbone 的坐标工具:https://dinnerbone.com/minecraft/tools/coordinates/ 在第一栏输入玩家所在的坐标,注意正负号然后第三栏就会出现,对应的区块文件的名字
tQJ2wj3iR2zHbyAv-image-1593776781348.png (34.85 KB, 下载次数: 9)
下载附件
2020-7-3 19:58 上传
如图所示,我们得到的区块文件是 r.-1.-2.mca
7.打开对应世界对应维度的 reign 文件夹,找到 r.-1.-2.mca ,使用 NBTexplorer 打开
8.查看 Dinnerbone 的坐标工具的第二行,我这里是 X:-13 Z:-49 ,Y不需要。
Wx3xNnbJxcTifX7q-image-1593776881101.png (48.03 KB, 下载次数: 6)
下载附件
2020-7-3 19:58 上传
我们选中这个 Chunk 按下键盘上的 Del 删除按键,然后按上面的保存按钮保存。然后把修改后的文件放回服务端的存档文件夹原位,重启服务器。Duang 这个区块回到了最开始的状态,崩溃也不复存在。