本帖最后由 丶米饭 于 2021-7-29 16:20 编辑
很多人并不懂如何正确序列化ItemStack 我个人愚见, 做过最完美的尝试 看下面
很简单的的俩个方法,保存这个string。到你想要的mysql,sqlite,yml。。。里就行了,反正就个字符串随便玩
建议学习了的,把学习了三个字打在公屏上
复制代码
来自群组: Server CT
很多人并不懂如何正确序列化ItemStack 我个人愚见, 做过最完美的尝试 看下面
很简单的的俩个方法,保存这个string。到你想要的mysql,sqlite,yml。。。里就行了,反正就个字符串随便玩
建议学习了的,把学习了三个字打在公屏上
- /**
- * 序列化itemStack为String
- *
- * @param itemStack 物品
- * @Return String
- */
- public static String itemStackSerialize(ItemStack itemStack) {
- YamlConfiguration yml = new YamlConfiguration();
- yml.set("item", itemStack);
- return yml.saveToString();
- }
- /**
- * 反序列化String为itemStack
- *
- * @param str 物品str
- * @return ItemStack
- */
- public static ItemStack itemStackDeserialize(String str) {
- YamlConfiguration yml = new YamlConfiguration();
- ItemStack item;
- try {
- yml.loadFromString(str);
- item = yml.getItemStack("item");
- } catch (InvalidConfigurationException ex) {
- item = new ItemStack(Material.AIR, 1);
- }
- return item;
- }
来自群组: Server CT
注:此方法无法保存物品nbt
纯萌新,我想,使用ItemStack#serialize,然后使用Gson转为json来保存也可以
https://www.mcbbs.net/thread-1213792-1-2.html
一、基础问题 II.拓展功能 6.如何序列化/反序列化ItemStack?
一、基础问题 II.拓展功能 6.如何序列化/反序列化ItemStack?
什么几把gson,直接base64
本帖最后由 丶米饭 于 2021-7-29 09:57 编辑
目前使用过base64保存 mm自定义装备, 但是base64会导致nbt顺序错乱,然后物品无法正常叠加
转而使用现在的可以完美保存目前遇到的各种插件mm等自定义物品而能正常叠加
因为不研究mod,所以暂不知对mod的兼容性
结冰的离季 发表于 2021-7-28 20:33
注:此方法无法保存物品nbt
目前使用过base64保存 mm自定义装备, 但是base64会导致nbt顺序错乱,然后物品无法正常叠加
转而使用现在的可以完美保存目前遇到的各种插件mm等自定义物品而能正常叠加
因为不研究mod,所以暂不知对mod的兼容性
Rothes 发表于 2021-7-28 20:36
纯萌新,我想,使用ItemStack#serialize,然后使用Gson转为json来保存也可以
byxiaobai 发表于 2021-7-28 21:50
https://www.mcbbs.net/thread-1213792-1-2.html
一、基础问题 II.拓展功能 6.如何序列化/反序列化ItemSt ...

好哇,好哇,真好哇
洞穴夜莺 发表于 2021-7-29 12:40
nbt底层用的是HashMap
是没有顺序的
所以才这样转string不会乱,转回去跟转之前顺序一致