我尝试用一个存档的playerdate文件夹和stats文件夹覆盖另一个存档的相应文件夹,结果是,同名玩家的背包内容完全没有改变。为什么我会这么做?因为我将本地端存档覆盖了服务端的world文件夹(文件夹名字了已经改成world了),然后发现玩家背包是空的,后来把minecraft文件夹下的usernamecache.json和usercache.json覆盖了,还是无法将玩家背包的内容拷过去。
还有,我的minecraft是从pcl启动器上下载的,不知道这是否影响
如果能解决的话感激不尽
还有,我的minecraft是从pcl启动器上下载的,不知道这是否影响
如果能解决的话感激不尽
如果是单人游戏,当前玩家无论叫哪个名字,用的哪个uuid,都跟playerdate里的没关系,只跟level.dat有关
无敌三脚猫 发表于 2023-4-26 16:27
如果是单人游戏,当前玩家无论叫哪个名字,用的哪个uuid,都跟playerdate里的没关系,只跟level.dat有关 ...
那如果是服务端呢
Fichit 发表于 2023-4-26 16:32
那如果是服务端呢
“将本地端存档覆盖了服务端的world文件夹”
这句话的意思是“用本地端存档覆盖了服务端的world文件夹”?
还是“将本地端存档覆盖为了服务端的world文件夹”?
无敌三脚猫 发表于 2023-4-26 16:51
“将本地端存档覆盖了服务端的world文件夹”
这句话的意思是“用本地端存档覆盖了服务端的world文件夹” ...
用本地端存档覆盖了服务端的world文件夹
Fichit 发表于 2023-4-26 16:56
用本地端存档覆盖了服务端的world文件夹
你单人和服务器是不是有其中一个用了正版登录?要么两个都用,要么都不用
客户端的图你也截了两张了,服务端也截一张图看看
无敌三脚猫 发表于 2023-4-26 16:59
你单人和服务器是不是有其中一个用了正版登录?要么两个都用,要么都不用
客户端的图你也截了两张了,服 ...
你说的服务端正版登陆是不是在服务端里的server.properties里的正版验证
这个我关了
如果是的话,我都没有用正版登录
Fichit 发表于 2023-4-26 17:10
你说的服务端正版登陆是不是在服务端里的server.properties里的正版验证
这个我关了
如果是的话,我都没有 ...
诶?你这服务端怪啊,但凡服务端应该有一个jar文件在旁边的
无敌三脚猫 发表于 2023-4-26 17:17
诶?你这服务端怪啊,但凡服务端应该有一个jar文件在旁边的
那还有什么办法吗
把你服务端里的run.bat和run.sh两个用于启动的文件发出来,我看一下。
Dream_Star_mc 发表于 2023-4-26 17:26
把你服务端里的run.bat和run.sh两个用于启动的文件发出来,我看一下。
在这……
我暂时也不知道出了什么问题。
不过如果你只是想要迁移玩家背包数据的话,我给你一个建议:先备份将要被导入数据的地图,再将储存着要导入数据的地图直接导入到服务器中,安装一个备份玩家背包的模组,将玩家背包备份后再到要被导入数据的地图中恢复备份,玩家背包数据就被迁移了。
不过如果你只是想要迁移玩家背包数据的话,我给你一个建议:先备份将要被导入数据的地图,再将储存着要导入数据的地图直接导入到服务器中,安装一个备份玩家背包的模组,将玩家背包备份后再到要被导入数据的地图中恢复备份,玩家背包数据就被迁移了。
不过我这里可以给楼主提供一个不同存档间转移玩家背包数据的方法,需要其他工具。首先你需要先了解一下MC的存档(世界)格式:
了解Java版世界格式:https://minecraft.fandom.com/zh/ ... C%E6%A0%BC%E5%BC%8F
了解player.dat格式:https://minecraft.fandom.com/zh/wiki/Player.dat%E6%A0%BC%E5%BC%8F
很显然,Wiki告诉我们,一个世界(存档)中和玩家相关的数据储存在 level.dat(.dat 格式)这个文件里面,但仅限单人模式,多人游戏时(服务器)中各个玩家的数据是储存在 playerdata文件夹中的<uuid>.dat (不同的uuid对应不同的玩家)。不过据我观察,即使是在单人模式,/playerdata/<uuid>.dat也会储存玩家自己的数据,并且这里的数据和level.dat中的Player(类型为复合标签)一致。
而其中玩家的背包数据则储存在<uuid>.dat中的Inventory(列表标签)里面,所以转移不同存档的玩家背包数据的关键就在转移不同地图中的Inventory
 
 
这里给出一个可以修改 .dat 格式的文件的编辑器(从1.7到1.20都可以):
[全版本]NBT Studio 汉化版 —— 更加现代化的 NBT 编辑工具
https://www.mcbbs.net/thread-1417770-1-1.html
(出处: Minecraft(我的世界)中文论坛)
下载好这个软件之后,将所有的 .dat 格式的文件都默认用这个软件打开
楼主的情况是想将单人模式的存档中的玩家背包数据转移到服务端的存档,那好,看看下面的方法吧:
首先是选择你自己的玩家数据文件,你可以先打开一次游戏,进一次地图,然后退出,看playerdata文件夹中哪个.dat文件的修改日期变成了今天,那么你的玩家数据文件就是它(假定今天是2023年4月26日)(uuid是经过混淆处理过的,不管就是)
 
 
用这个方式分别打开你想要从中转移玩家背包数据的地图(旧)和想要转移到的地图(新)中的对应文件(/playerdata/<uuid>.dat)。之后打开旧地图的<uuid>.dat(如果旧地图是单人模式也可以直接在level.dat中提取),选择Inventory(列表标签),展开里面的所有数据按shift从头到尾全选,然后点击上面的复制(ctrl+C也行)。之后打开新地图的/playerdata/<uuid>.dat,同理展开Inventory,将里面原有的数据全部删掉(按delete或上面的删除,全删后Inventory后面显示为“[0 entries]”),之后点击Inventory,再点击粘贴(ctrl+V也行)即可完成玩家背包数据的替换(记得最后保存一下)。
 
 
 
 
 
 
 
 
为防止意外,强烈建议在操作之前将相关的文件备份一下
我这里在两个单人存档之间进行了一次测试,成功将两个存档的物品替换。因此我想可以用上述方法来转移你那里的存档的玩家的背包数据的互换
整理不易,希望对你有帮助。如果你试了还有问题也欢迎向我追问 
 
如果成了,我会考虑将上述回答放在游戏技巧版(确信)
了解Java版世界格式:https://minecraft.fandom.com/zh/ ... C%E6%A0%BC%E5%BC%8F
了解player.dat格式:https://minecraft.fandom.com/zh/wiki/Player.dat%E6%A0%BC%E5%BC%8F
很显然,Wiki告诉我们,一个世界(存档)中和玩家相关的数据储存在 level.dat(.dat 格式)这个文件里面,但仅限单人模式,多人游戏时(服务器)中各个玩家的数据是储存在 playerdata文件夹中的<uuid>.dat (不同的uuid对应不同的玩家)。不过据我观察,即使是在单人模式,/playerdata/<uuid>.dat也会储存玩家自己的数据,并且这里的数据和level.dat中的Player(类型为复合标签)一致。
而其中玩家的背包数据则储存在<uuid>.dat中的Inventory(列表标签)里面,所以转移不同存档的玩家背包数据的关键就在转移不同地图中的Inventory
 
这里给出一个可以修改 .dat 格式的文件的编辑器(从1.7到1.20都可以):
[全版本]NBT Studio 汉化版 —— 更加现代化的 NBT 编辑工具
https://www.mcbbs.net/thread-1417770-1-1.html
(出处: Minecraft(我的世界)中文论坛)
下载好这个软件之后,将所有的 .dat 格式的文件都默认用这个软件打开
楼主的情况是想将单人模式的存档中的玩家背包数据转移到服务端的存档,那好,看看下面的方法吧:
首先是选择你自己的玩家数据文件,你可以先打开一次游戏,进一次地图,然后退出,看playerdata文件夹中哪个.dat文件的修改日期变成了今天,那么你的玩家数据文件就是它(假定今天是2023年4月26日)(uuid是经过混淆处理过的,不管就是)
 
用这个方式分别打开你想要从中转移玩家背包数据的地图(旧)和想要转移到的地图(新)中的对应文件(/playerdata/<uuid>.dat)。之后打开旧地图的<uuid>.dat(如果旧地图是单人模式也可以直接在level.dat中提取),选择Inventory(列表标签),展开里面的所有数据按shift从头到尾全选,然后点击上面的复制(ctrl+C也行)。之后打开新地图的/playerdata/<uuid>.dat,同理展开Inventory,将里面原有的数据全部删掉(按delete或上面的删除,全删后Inventory后面显示为“[0 entries]”),之后点击Inventory,再点击粘贴(ctrl+V也行)即可完成玩家背包数据的替换(记得最后保存一下)。
 
 
 
 
为防止意外,强烈建议在操作之前将相关的文件备份一下
我这里在两个单人存档之间进行了一次测试,成功将两个存档的物品替换。因此我想可以用上述方法来转移你那里的存档的玩家的背包数据的互换
整理不易,希望对你有帮助。如果你试了还有问题也欢迎向我追问
如果成了,我会考虑将上述回答放在游戏技巧版(确信)
JasonKosac 发表于 2023-4-26 23:52
不过我这里可以给楼主提供一个不同存档间转移玩家背包数据的方法,需要其他工具。首先你需要先了解一下MC的 ...
感谢你的解答,我使用的版本为1.18.2,存档下同时有level.dat和playerdate,按你说的做,仅更改playerdate的话并没有更改玩家物品栏(很怪),但是我将level.dat和playerdate同时修改后就成功了。
不过我还想说的是,事实上,在我尝试从单人档覆盖服务端存档时就遇到了完全无法把玩家背包数据迁移的情况,经过我的测试,哪怕我更改了服务端存档下的level.dat和playerdate,都无济于事,在玩家下线后这些文件都会被统一覆盖,更古怪的是,我在登入服务器时在背包里放入了64个讲台,下线后那些dat文件里inventory下的竟然是spruce_sign,也就是云杉木告示牌。
我记得没错的话,在我将本地存档覆盖服务端存档失败后出一下下策,就是将所有玩家呼唤上线并将背包物品置入箱子内,存档下线后我物品栏第一位恰好是云杉木告示牌
在两天后我重新启动了服务器,再次进入我的物品栏再一次被清空,在此期间我没有动过存档,唯一的操作就是关闭服务端后,也关闭了那台云服务器。
我怀疑forge服务端玩家数据就不在world文件下,也或许是因为我的不当操作引起的吧。
再次感谢你的解答,鉴于这里是单人问题板块和你的详细解答,我还是给你最佳回答吧,现在我已经成功将服务端存档拷到本地。
 本帖最后由 JasonKosac 于 2023-4-27 18:46 编辑 
感谢您的选择
主要是本人对服务端不熟悉,仅仅靠看Wiki和个人在客户端的实验还是有些局限性的,在我单人存档间能成功,但在单人存档和服务端存档间,我没有机会实验
不过,我觉得将我的回答结合您实际操作后遇到的一些问题和您的解决方案结合,放在论坛的「游戏技巧」板块,旨在帮助更多有这一个需求的人。能否说一下您的后续解决步骤?
Fichit 发表于 2023-4-27 18:09
感谢你的解答,我使用的版本为1.18.2,存档下同时有level.dat和playerdate,按你说的做,仅更改playerdate ...
感谢您的选择
主要是本人对服务端不熟悉,仅仅靠看Wiki和个人在客户端的实验还是有些局限性的,在我单人存档间能成功,但在单人存档和服务端存档间,我没有机会实验
不过,我觉得将我的回答结合您实际操作后遇到的一些问题和您的解决方案结合,放在论坛的「游戏技巧」板块,旨在帮助更多有这一个需求的人。能否说一下您的后续解决步骤?
JasonKosac 发表于 2023-4-27 18:45
感谢您的选择
主要是本人对服务端不熟悉,仅仅靠看Wiki和个人在客户端的实验还是有些局限性的,在我单人 ...
这个我也不太清楚,我已经放弃开服打算了