跳转至

NBT 与键值数据库

abi.h 里的分节说明

§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(§I NBT binary, KvDb (thread-safe), system & server info)

槽位

nbt_snbt_to_binary

C
bool (*nbt_snbt_to_binary)(PierStr snbt, int32_t fmt, void* ctx, PierBytesSink sink);

fmt:0=磁盘格式(小端),1=网络格式。

  • 调用形式:api->nbt_snbt_to_binary(snbt, fmt, ctx, sink)
  • 参数:
    • snbt : PierStr
    • fmt : int32_t
    • ctx : void*
    • sink : PierBytesSink
  • 返回值类型:bool
  • 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(§I NBT binary, KvDb (thread-safe), system & server info)
  • 表内序号:第 58 个槽位(从 0 数起)
  • 各绑定里的调用方:

nbt_binary_to_snbt

C
bool (*nbt_binary_to_snbt)(uint8_t const* data, size_t len, int32_t fmt, void* ctx, PierStrSink sink);
  • 调用形式:api->nbt_binary_to_snbt(data, len, fmt, ctx, sink)
  • 参数:
    • data : uint8_t const*
    • len : size_t
    • fmt : int32_t
    • ctx : void*
    • sink : PierStrSink
  • 返回值类型:bool
  • 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(§I NBT binary, KvDb (thread-safe), system & server info)
  • 表内序号:第 59 个槽位(从 0 数起)
  • 各绑定里的调用方:

kvdb_open

C
PierKvDbHandle (*kvdb_open)(PierModHandle mod, PierStr path, bool create_if_missing);

分组说明

KvDb:线程安全(内部有互斥锁)。路径限定在模组自己的数据目录里,带 .. 的路径和绝对路径会被拒绝。句柄归加载器所有,模组卸载时会被强制关闭,并记一条警告。

  • 调用形式:api->kvdb_open(mod, path, create_if_missing)
  • 参数:
    • mod : PierModHandle
    • path : PierStr
    • create_if_missing : bool
  • 返回值类型:PierKvDbHandle
  • 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(§I NBT binary, KvDb (thread-safe), system & server info)
  • 表内序号:第 60 个槽位(从 0 数起)
  • 各绑定里的调用方:

kvdb_close

C
void (*kvdb_close)(PierKvDbHandle h);

分组说明

KvDb:线程安全(内部有互斥锁)。路径限定在模组自己的数据目录里,带 .. 的路径和绝对路径会被拒绝。句柄归加载器所有,模组卸载时会被强制关闭,并记一条警告。

  • 调用形式:api->kvdb_close(h)
  • 参数:
    • h : PierKvDbHandle
  • 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(§I NBT binary, KvDb (thread-safe), system & server info)
  • 表内序号:第 61 个槽位(从 0 数起)
  • 各绑定里的调用方:

kvdb_get

C
bool (*kvdb_get)(PierKvDbHandle h, PierStr key, void* ctx, PierStrSink sink);

分组说明

KvDb:线程安全(内部有互斥锁)。路径限定在模组自己的数据目录里,带 .. 的路径和绝对路径会被拒绝。句柄归加载器所有,模组卸载时会被强制关闭,并记一条警告。

  • 调用形式:api->kvdb_get(h, key, ctx, sink)
  • 参数:
    • h : PierKvDbHandle
    • key : PierStr
    • ctx : void*
    • sink : PierStrSink
  • 返回值类型:bool
  • 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(§I NBT binary, KvDb (thread-safe), system & server info)
  • 表内序号:第 62 个槽位(从 0 数起)
  • 各绑定里的调用方:

kvdb_set

C
bool (*kvdb_set)(PierKvDbHandle h, PierStr key, PierStr value);

分组说明

KvDb:线程安全(内部有互斥锁)。路径限定在模组自己的数据目录里,带 .. 的路径和绝对路径会被拒绝。句柄归加载器所有,模组卸载时会被强制关闭,并记一条警告。

  • 调用形式:api->kvdb_set(h, key, value)
  • 参数:
    • h : PierKvDbHandle
    • key : PierStr
    • value : PierStr
  • 返回值类型:bool
  • 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(§I NBT binary, KvDb (thread-safe), system & server info)
  • 表内序号:第 63 个槽位(从 0 数起)
  • 各绑定里的调用方:

kvdb_del

C
bool (*kvdb_del)(PierKvDbHandle h, PierStr key);

分组说明

KvDb:线程安全(内部有互斥锁)。路径限定在模组自己的数据目录里,带 .. 的路径和绝对路径会被拒绝。句柄归加载器所有,模组卸载时会被强制关闭,并记一条警告。

  • 调用形式:api->kvdb_del(h, key)
  • 参数:
    • h : PierKvDbHandle
    • key : PierStr
  • 返回值类型:bool
  • 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(§I NBT binary, KvDb (thread-safe), system & server info)
  • 表内序号:第 64 个槽位(从 0 数起)
  • 各绑定里的调用方:

kvdb_has

C
bool (*kvdb_has)(PierKvDbHandle h, PierStr key);

分组说明

KvDb:线程安全(内部有互斥锁)。路径限定在模组自己的数据目录里,带 .. 的路径和绝对路径会被拒绝。句柄归加载器所有,模组卸载时会被强制关闭,并记一条警告。

  • 调用形式:api->kvdb_has(h, key)
  • 参数:
    • h : PierKvDbHandle
    • key : PierStr
  • 返回值类型:bool
  • 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(§I NBT binary, KvDb (thread-safe), system & server info)
  • 表内序号:第 65 个槽位(从 0 数起)
  • 各绑定里的调用方:

kvdb_is_empty

C
bool (*kvdb_is_empty)(PierKvDbHandle h);

分组说明

KvDb:线程安全(内部有互斥锁)。路径限定在模组自己的数据目录里,带 .. 的路径和绝对路径会被拒绝。句柄归加载器所有,模组卸载时会被强制关闭,并记一条警告。

  • 调用形式:api->kvdb_is_empty(h)
  • 参数:
    • h : PierKvDbHandle
  • 返回值类型:bool
  • 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(§I NBT binary, KvDb (thread-safe), system & server info)
  • 表内序号:第 66 个槽位(从 0 数起)
  • 各绑定里的调用方:

kvdb_iter

C
void (*kvdb_iter)(PierKvDbHandle h, void* ctx, PierKvSink sink);

分组说明

KvDb:线程安全(内部有互斥锁)。路径限定在模组自己的数据目录里,带 .. 的路径和绝对路径会被拒绝。句柄归加载器所有,模组卸载时会被强制关闭,并记一条警告。

  • 调用形式:api->kvdb_iter(h, ctx, sink)
  • 参数:
    • h : PierKvDbHandle
    • ctx : void*
    • sink : PierKvSink
  • 所在分节:§I 二进制 NBT、KvDb(线程安全)、系统与服务器信息(§I NBT binary, KvDb (thread-safe), system & server info)
  • 表内序号:第 67 个槽位(从 0 数起)
  • 各绑定里的调用方:

类型

PierBytesSink

C
typedef void (*PierBytesSink)(void* ctx, uint8_t const* data, size_t len);

原始字节的输出回调(二进制 NBT)。字节只在当前调用帧内有效。

PierKvSink

C
typedef void (*PierKvSink)(void* ctx, PierStr key, PierStr value);

键值对的输出回调(kvdb_iter)。两个视图只在当前调用帧内有效。

PierKvDbHandle

C
typedef void* PierKvDbHandle;

指向一个已打开的键值数据库的不透明句柄,数据库归加载器所有。