结冰的离季
本帖最后由 结冰的离季 于 2023-3-30 23:44 编辑

数据库不像 yml 。
yml存String 不支持特殊字符,除了json之外, 想减小体积一般得转base64。又不支持bytes数组的存储(有 ByteList 但是很蛋疼不好用)
数据库支持直接存字节流,
所以利用 BukkitObjectOutputStream 直接把物品转为字节流
再用 GZIPOutputStream 压缩字节流是一个比较节省空间又方便的做法
你可以看看我的实现, 同个文件还有集合 map 的转换方式
https://github.com/Iseason2000/B ... it/ItemUtils.kt#L96
https://github.com/Iseason2000/B ... t/ItemUtils.kt#L774


Berry_so
针织薄外套 发表于 2023-3-30 23:31
直接序列化成字符串保存入数据库,取用反序列化即可。
也可以保存为base64减小储存空间占用。https://www.m ...

谢谢大佬!!我这就去实践一下!!!!

Berry_so
结冰的离季 发表于 2023-3-30 23:41
数据库不像 yml 。
yml存String 不支持特殊字符,除了json之外, 想减小体积一般得转base64。又不支持bytes ...

好的,我尝试一下

Berry_so
穆色 发表于 2023-3-30 23:33
【抛砖引玉】Itemstack类有一个序列化和反序列化的内容,序列化返回的一个map集合,把集合的键值对分别存入 ...

收到!!这个思路好棒,我尝试以下!

青蛙的名单
直接nms存对象是我喜欢的方法

teddyxlandlee
不太懂Bukkit系的数据库和序列化、反序列化,但是据我所知,一个ItemStack无非就三部分:Item(Material)即物品类型、Count即物品数量、NBT。
Item和Count不必多说
NBT由于与JSON、YAML格式均有或多或少的差异,故如果能用SNBT序列化将NBT部分转换为字符串(最直观),或者用NBT的二进制序列化并使用base64转换为字符串(序列化、反序列化效率最高),固然是最好的。然而我不知道Bukkit API有没有相关的接口

美味的曲奇
https://www.spigotmc.org/threads ... le-entities.269621/
通过NBT正反序列化物品就好

第一页 上一页