Info Item
Lookup metadata statik yang di-bake di client buat block id apapun. Backed sama tabel ConfigData live kalau ada (flag + collision lengkap), dengan fallback ke block_types.json bundled jadi skrip selalu dapet minimal id + name walau belom ada bot yang connect.
local item = getInfo(1) -- 1 = Solid Block
item.id -- block type
item.name -- nama display
item.flags -- bitfield: 0x1 untradeable, 0x2 trashable
item.collision -- 0x0 none, 0x1 collidable, 0x2 oneway, 0x4 hot, 0x8 death
Lookups
getInfo(id)
| Field | Type |
|---|---|
| Signature | (id: number) → ItemInfo? |
| Returns | ItemInfo? — nil kalau tabel ConfigData live maupun catalog fallback gak punya id-nya |
| Async | no |
local info = getInfo(9)
if info then
print(info.name) -- "Obsidian"
end
getInfos()
| Field | Type |
|---|---|
| Signature | () → {ItemInfo} |
| Returns | {ItemInfo} — list 1-indexed semua block yang dikenal runtime |
| Async | no |
Prioritas sumber: ConfigData (live, flag lengkap) → block_types.json bundled (fallback, cuma id + name). Return tabel kosong kalau dua-duanya belum populated.
for _, item in pairs(getInfos()) do
-- ...
end
Field ItemInfo
| Field | Type | Catatan |
|---|---|---|
id | number | Block id (match sama InventoryItem.id dan world:findTiles(blockType)). |
name | string | Nama display. Fallback ke "#<id>" — gak pernah nil. |
flags | number | Bitmask. 0 kalau ConfigData belum sampai. |
collision | number | Bitmask. 0 kalau ConfigData belum sampai. |
Bit flags
| Bit | Arti |
|---|---|
0x1 | untradeable (player gak bisa list / kirim via chat) |
0x2 | trashable (default semua block — jarang di-clear) |
Bit collision
| Bit | Arti |
|---|---|
0x0 | gak ada collider |
0x1 | collidable (solid) |
0x2 | one-way (platform — bisa lewat dari bawah, ke-block dari atas) |
0x4 | hot (damage saat kontak, contoh api) |
0x8 | death (instant-kill, contoh spike, lava) |
Combine pake bitwise AND:
local UNTRADEABLE = 0x1
if bit32.band(info.flags, UNTRADEABLE) ~= 0 then
print(info.name, "untradeable")
end