Lewati ke konten utama

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)

FieldType
Signature(id: number) → ItemInfo?
ReturnsItemInfo?nil kalau tabel ConfigData live maupun catalog fallback gak punya id-nya
Asyncno
local info = getInfo(9)
if info then
print(info.name) -- "Obsidian"
end

getInfos()

FieldType
Signature() → {ItemInfo}
Returns{ItemInfo} — list 1-indexed semua block yang dikenal runtime
Asyncno

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

FieldTypeCatatan
idnumberBlock id (match sama InventoryItem.id dan world:findTiles(blockType)).
namestringNama display. Fallback ke "#<id>" — gak pernah nil.
flagsnumberBitmask. 0 kalau ConfigData belum sampai.
collisionnumberBitmask. 0 kalau ConfigData belum sampai.

Bit flags

BitArti
0x1untradeable (player gak bisa list / kirim via chat)
0x2trashable (default semua block — jarang di-clear)

Bit collision

BitArti
0x0gak ada collider
0x1collidable (solid)
0x2one-way (platform — bisa lewat dari bawah, ke-block dari atas)
0x4hot (damage saat kontak, contoh api)
0x8death (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