BE教程

Concepts of SAPI: Data Storage

牢***版主 发表于 2025-9-7 IP:北京 1,481 0
AI 速览2026-10-23 22:01 生成

SAPI 数据储存方式对比与实例演示

该教程面向 Minecraft 附加包脚本开发者,系统梳理 SAPI 中可用的数据储存手段,包括自定义属性、标签、计分板、结构和物品注释,逐一说明各自能存什么、受什么限制,并给出按需求选择储存方式的思路。文中附有死亡回归鱼钩、比大小游戏和控制台附加包三个实例,适合已了解 SAPI 基础知识、想进一步掌握存档内数据持久化的读者参考。

获取方式
  • 实例1死亡回归的鱼钩脚本 main.js,794 B
  • 实例2比大小游戏脚本 main.js,4 KB
  • 两个附件均免费,按实例需要选择下载
  • 属于系列最后一章,建议先学完前面章节再阅读
  • 自定义属性按包 UUID 隔离,各附加包无法互访
  • 计分板数值为 32 位,超出范围的数据不宜用计分板
  • 结构管理器仅开放方块管理方法,读取结构数据较难
  • 物品注释单条限 50 字符、最多 20 行,不适合存数据
本卡片由 AI 阅读本帖后生成,可能存在疏漏,请以帖子正文为准。
本帖最后由 牢冥王 于 2026-10-23 22:01 编辑

前言
数据储存(data storage)其实并不是SAPI独有的概念,但是SAPI脚本又不能把数据直接储存为游戏程序的常量,而有些数据我们要求在存档中可以连续使用,那就需要了解数据储存。这里主要介绍通过SAPI在游戏储存数据的方法,至于JavaScript固有的new Map()等等这里不会着重介绍。
讲述
SAPI 2.0有各种自定义属性,它们是较好的数据存储方法,另外还有标签、计分板和结构,在SAPI 1.0还有人用物品注释(lore)来储存数据。它们有各自的优缺点:
  • 自定义属性可以储存在世界NBT、实体NBT、物品NBT内,这其实方便我们绑定这些数据在特定的要素上。但是它不是显性的,你没有办法在游戏中直接看到有哪些自定义属性,它的值是什么,要借助.getDynamicPropertyIds()和.getDynamicProperty()才能获知。另外,自定义属性还有一个优点(限制),那就是它是各附加包独立的。也就是说,一个UUID的包只能访问自己UUID的自定义属性组中的自定义属性。它其实提供了各附加包独立运作的环境,然而显而易见地,逼着你把你自己要做的内容限制在一个包,一个命名空间当中。
  • 标签通常来讲只能储存字符串和布尔值(有标签为真,无标签为假),然而所有的字符串理论上都可以进行区域划分来储存不同的数据(只要字符串长度没有限制),比如我们设计一个字符串:"num:1bool: truestr:notspecific"可以通过.indexOf以及.slice()等等方法来读取数据(只要你的设计是合理的)
  • 计分板可以通常用来在要素上绑定整数类型的数据,但既然字符串可以拆分,整数为什么不可以拆分呢?你可以设计一个名为int的计分板外加一个decimal计分板,就可以储存浮点数;这些数字也可以用来表示布尔值、枚举类型等。只不过需要注意,计分板的数字是32位数据,所以超出这个值就不适合用计分板(但是2^32也是很大的一个数了,你要存什么能比它还大呢?)。另外计分板的计分对象(participant)名称也可以算作字符串数据。而且计分板的数据侦测方式我们都很熟悉了,JSON文本和计分板屏幕显示都可以让我们直观地观察这些数据。
  • 结构可以存储方块和实体,这样可存储的数据类型就比较多了,它也可以配合自定义属性和标签使用。只不过,SAPI中的结构管理器(StructureManager)类只开放了管理其中方块的方法,通过SAPI调用结构中的数据还是比较难的,大多数时候我们用它存储地形就够了。
  • 物品注释可以有很多条,但是每一条的长度只能在50个字符以内,最大行数只有20行,目前来讲不适合储存数据,但是直观性还是有的,只适合作数据显示了。
  • 其他还有物品名称之类的存储方法就不过多介绍,它们在指令检测中的表现远比在SAPI中的好得多。

重点是按照需求选择数据的存储方式,这里提供几个实例,帮助各位熟悉数据存储。
应用
实例1:死亡回归的鱼钩  main.js (794 Bytes, 下载次数: 43)
实例2:比大小游戏  main.js (4.02 KB, 下载次数: 36)
实例3(较复杂):控制台附加包
总结
《Concepts of SAPI》系列主讲SAPI的基本概念,存在进阶内容的引入,但还是以基础为主,进一步的学习内容还是以官方文档优先。本篇是该系列最后一个章节,建议在学习了之前章节的知识之后再来运用本节的内容。
  • 小*** 铁粒 +20 原创奖励
您需要登录后才可以回帖 登录 | 立即注册
本版积分规则