MC服务器与单机存档之间的数据迁移 · black raison detre

您所在的位置:网站首页 怎样邀请玩家进我的世界存档 MC服务器与单机存档之间的数据迁移 · black raison detre

MC服务器与单机存档之间的数据迁移 · black raison detre

2024-07-02 09:29:01| 来源: 网络整理| 查看: 265

前言:本篇文章目标为将服务器低版本存档完美迁移到高版本单机存档,同理单机迁移服务器存档相反操作即可,但最好不要从高版本向低版本迁移。

需求:将手中的服务器存档迁移为单人存档,要求保留正确的背包及末影箱的物品。 第二需求:升级存档从1.12.2至1.19.4,删除合适的区块,使新版本地形得以生成 所用工具:NbtStudio(数据编辑工具)、 MCA Selector(区块域块编辑工具) 迁移前的准备及了解 #

首先了解一下数据保存结构:

本段内容参考: [Mcbbs] 玩家背包的数据在哪里 和 [WiKi]了解player.dat格式

很显然,Wiki告诉我们,一个世界(存档)中和玩家相关的数据储存在 level.dat(.dat 格式)这个文件里面,但仅限单人模式,多人游戏时(服务器)中各个玩家的数据是储存在 playerdata文件夹中的.dat (不同的uuid对应不同的玩家)。 不过据我观察,即使是在单人模式,/playerdata/.dat也会储存玩家自己的数据,并且这里的数据和level.dat中的Player(类型为复合标签)一致,但单人模式下仅修改/playerdata/.dat而不修改level.dat不会影响玩家数据,因此得知单人模式以level.dat为主。

因此我们只需要:

找到服务器内名为"Ling_Yun67"的玩家数据 将其的背包数据与末影箱数据复制 将其粘贴到单人存档内

但经过实测,1.12.2与1.19.4的数据保存格式不同,若直接进行数据修改,会导致物品bug(附魔失效,潜影盒物品丢失)

因此展开来讲,结合我们的两项需求,我们具体需要:

将服务器存档进行合适的修改,使其可以正常的在单人模式加载 在1.12.2版本下找到目标数据,复制到1.12.2的单人存档数据内 删除游玩区域附近不需要的区块 在1.19.4版本直接打开,生成1.19.4新地形,并且自动升级.dat数据 将服务器存档结构修改以适配单人模式 #

本步骤分两部分完成

存档结构了解 #

本人希望迁移的存档为1.12.2版本bukkit服务端,存档结构如下:

D:. ├─world │ │ level.dat //单人模式下会加载的存档数据,服务器模式应该是op的数据? │ │ level.dat_old │ │ session.lock │ │ uid.dat │ │ │ ├─advancements │ │ 00c71676-1488-48bb-9881-ae863cd73b83.json │ │ 00dcb825-d242-47b8-b156-9048f8eb5fe8.json │ │ ......所有玩家.json...... │ │ ffa724e9-373f-4a1a-a483-ced7f251e640.json │ │ ffad1cef-e7f4-478e-a070-5cbb501aabfc.json │ │ │ ├─data │ │ │ idcounts.dat │ │ │ Mansion.dat │ │ │ map_0.dat │ │ │ map_1.dat │ │ │ map_10.dat │ │ │ ....... │ │ │ │ │ ├─advancements │ │ └─functions │ ├─playerdata //玩家背包数据在这里 │ │ 00c1983f-80e4-4a88-b6f0-8632629aa9e5.dat │ │ 00c71676-1488-48bb-9881-ae863cd73b83.dat │ │ ......所有玩家数据.dat...... │ │ ffa724e9-373f-4a1a-a483-ced7f251e640.dat │ │ ffad1cef-e7f4-478e-a070-5cbb501aabfc.dat │ │ │ ├─region //主世界所有方块数据 │ │ r.-1.-1.mca │ │ r.-1.-10.mca │ │ ......所有域块数据...... │ │ r.9.8.mca │ │ r.9.9.mca │ │ │ └─stats │ 00c1983f-80e4-4a88-b6f0-8632629aa9e5.json │ 00c71676-1488-48bb-9881-ae863cd73b83.json │ ......这个大概也是所有玩家的数据...... │ ffa724e9-373f-4a1a-a483-ced7f251e640.json │ ffad1cef-e7f4-478e-a070-5cbb501aabfc.json │ ├─world_nether │ │ level.dat │ │ level.dat_old │ │ session.lock │ │ uid.dat │ │ │ ├─data │ │ │ Fortress.dat │ │ │ villages_nether.dat │ │ │ │ │ └─functions │ ├─DIM-1 │ │ └─region //地狱所有方块数据 │ │ r.-1.-1.mca │ │ r.-1.-10.mca │ │ ......所有域块数据...... │ │ r.9.8.mca │ │ r.9.9.mca │ │ │ └─playerdata │ 这里空的 └─world_the_end │ level.dat │ level.dat_old │ session.lock │ uid.dat │ ├─data │ │ EndCity.dat │ │ villages_end.dat │ │ │ └─functions ├─DIM1 │ └─region //末地所有方块数据 │ r.-1.-1.mca │ r.-1.-10.mca │ ......所有域块数据...... │ r.9.8.mca │ r.9.9.mca │ └─playerdata 这里也是空的

在1.12.2模式新建一个世界,进入地狱和末地创建地图后,可以看到结构如下:

C:. │ icon.png │ level.dat │ level.dat_old │ session.lock │ ├─advancements │ 55d7fbc5-d038-413b-8446-d9e66ccfb206.json │ ├─data │ │ Fortress.dat │ │ Temple.dat │ │ Village.dat │ │ villages.dat │ │ villages_end.dat │ │ villages_nether.dat │ │ │ ├─advancements │ └─functions ├─DIM-1 │ └─region │ r.-1.-1.mca │ r.-1.0.mca │ r.0.-1.mca │ r.0.0.mca │ ├─DIM1 │ └─region │ r.-1.-1.mca │ r.-1.0.mca │ r.0.-1.mca │ r.0.0.mca │ ├─playerdata │ 55d7fbc5-d038-413b-8446-d9e66ccfb206.dat │ ├─region │ r.-1.0.mca │ r.0.0.mca │ └─stats 55d7fbc5-d038-413b-8446-d9e66ccfb206.json 实操 #

打开单人存档,打开playerdata,里面会有一到两个文件,文件的名字是一样的,后缀不一样,大概长这样:099261a8-503b-39d4-9616-f7782702095c.dat,将文件名找个地方记下来。

打开单人存档,将根目录的level.dat复制到一个你不会搞混的地方,比如桌面

现在同时打开服务器存档的World文件夹,可以看到文件结构相当相似,为了保证准确我们将单人存档内的如下文件全部删除,直接将服务器的world文件夹内的所有文件复制到单人存档下

现在打开单人存档的DIM1和DIM-1文件夹,删除里面的所有文件,将world_nether内,注意是內部的所有文件复制到DIM-1,将world_the_end内,注意是內部的所有文件复制到DIM1,其实就是改了个名字,从world_nether改到DIM-1,从world_the_end改到DIM1。

打开单人存档的DIM-1与DIM1,可以看到有这么一个文件夹,将其拿出来

DIM-1代表地狱,DIM1是末地,两个文件夹都要操作

至此服务器存档的三个世界数据已经迁移完毕。

找到目标玩家数据并迁移到单人模式 #

在bukkit服务端中,根目录\world\playerdata存放着玩家数据,玩家数据是一串不知道什么玩意的字符,这个字符并不是随机的,并且与是否打开了正版验证有关。

举例:当我在启动器登录正版后进入一个新的游戏,为我生成的文件是:55d7fbc5-d038-413b-8446-d9e66ccfb206.dat,事实上,这就是我的正版UUID。

刚刚提到过,无论是服务器还是单人模式,都会生成一个UUID.dat文件,在正版验证下若玩家改名,不会导致存档丢失,仅以UUID判断玩家。

我之前在服务器使用的ID是Ling_Yun67,到现在改为Yun67后完全没有受到影响。

当我用盗版模式使用ID:Ling_Yun67,生成的文件是:82a86d15-1ee6-3b3d-9026-7306445dc40f.dat 当我用盗版模式使用ID:Yun67,生成的文件是:099261a8-503b-39d4-9616-f7782702095c.dat 当我用固定的账号正版验证使用任意ID,生成的文件都是:55d7fbc5-d038-413b-8446-d9e66ccfb206.dat

因此如果想在服务器的存档里找到自己的数据,刚刚在单人存档新建的1.12.2的存档的时候生成的.dat文件的名字,也就是你记下的文件名去掉.dat的后缀就是你的uuid。

然后直接在服务器存档\world\playerdata内搜索你的数据,将你的数据复制到一个不会被你搞混的地方,比如桌面。

如果是正版验证,可以在 namemc.com搜索自己现在的id,即可获得uuid。

还记得在刚刚你还把一个level.dat文件也复制出来了么?完成上述两个大步骤,你现在应该已经拥有:

在一个不会被干扰的文件夹拥有一个level.dat文件,这个文件来自1.12.2单人模式,刚创建,很新鲜。 一个UUID.dat文件,里面保存着你想要迁移的数据。这个文件来自服务器存档。

下载这个可以修改 .dat 格式的文件的编辑器(从1.7到1.20都可以) [全版本]NBT Studio 汉化版 —— 更加现代化的 NBT 编辑工具

现在同时选中这两个文件,直接拖进NBT编辑工具。

下面的步骤中你可以使用查找工具,相当好用。

找到UUID.dat/Inventory,选中复制其中所有的数据

找到level.dat/Data/Player/Inventory,先删除其中所有的数据

选中Inventory后粘贴,即可将背包数据迁移。

再找到UUID.dat/EnderItems,复制其中所有的数据,与刚刚类似,找到level.dat/Data/Player/EnderItems,删除其中的数据后粘贴新数据即可完成末影箱的数据迁移。

再找到UUID.dat/Pos,复制其中所有的数据,与刚刚类似,找到level.dat/Data/Player/Pos,删除其中的数据后粘贴新数据即可完成人物坐标的更改。

如果还想继续更改其他数据如剩余血量、当前经验值、身上的状态效果,请参照 [WiKi]了解player.dat格式

第二个大步骤完成了!你现在已经:

完成了三大世界的迁移 完成了背包与末影箱的物品迁移 完成了其他状态迁移

直接在高版本打开低版本存档时,会自动将低版本的附魔信息等数据升级

删除不需要的区块,保证新地形生成 #

下面是最后一步了,如果你不打算在高版本打开该存档,没必要进行此步骤!

此步骤为的是保证新版本地形及特性能够正常生成。

请直接观看XeKr的视频教程

叉尅教你升存档删区块-MC存档升级+MCA Selector 删除区块简要教程



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭