Tile structure
The tile structure represents a single block in a world.
You use it to read or change foreground/background, tile data (like Magplant stock, sign text, door targets), and to query tiles in bulk.
Basic tile access
lua
getTileForeground() -- Gets the tile's foreground ID.
getTileBackground() -- Gets the tile's background ID.Example:
lua
local tile = world:getTile(x, y)
local fg = tile:getTileForeground()
local bg = tile:getTileBackground()Changing tile foreground / background
lua
setTileForeground(tile, id, visual_only, avatar)
setTileBackground(tile, id, visual_only, avatar)Parameters
- id — Block ID to place.
- visual_only (optional):
0/nil→ real change (saved to world).1→ visual-only, disappears on rejoin.
- avatar (optional):
- If set → only that player sees the change.
- If omitted → all players see it.
Examples:
lua
world:setTileForeground(tile, 2) -- Real Dirt block
world:setTileForeground(tile, 2, 1) -- Visual-only Dirt for everyone
world:setTileForeground(tile, 2, 1, player) -- Visual-only Dirt for one playerWorking with multiple tiles
lua
getTiles() -- Returns array of all tiles in world.
getTilesByActionType(actionType) -- Returns tiles matching specific action type.Example:
lua
for _, tile in ipairs(world:getTiles()) do
-- process tile
endTile item helper
lua
tile:getTileItem() -- Returns item object for tile’s foreground ID.Equivalent to:
lua
local item = getItem(tile:getTileForeground())But easier:
lua
local item = tile:getTileItem()
print(item:getID())Tile Data Properties
Tiles can hold extra metadata like vending machine price, sign text, magplant stock, etc.
Use:
lua
tile:getTileData(type_id)
tile:setTileData(type_id, value)
world:updateTile(tile)All available TileDataProperties
lua
TileDataProperties = {
TILE_DATA_TYPE_SEED_FRUITS_COUNT = 0,
TILE_DATA_TYPE_SEED_PLANTED_TIME = 1,
TILE_DATA_TYPE_MAGPLANT_ITEM_COUNT = 2,
TILE_DATA_TYPE_VENDING_ITEM_COUNT = 3,
TILE_DATA_TYPE_SIGN_TEXT = 4,
TILE_DATA_TYPE_DOOR_TEXT = 5,
TILE_DATA_TYPE_DOOR_IS_OPEN = 6,
TILE_DATA_TYPE_DOOR_DESTINATION = 7,
TILE_DATA_TYPE_DOOR_ID = 8,
TILE_DATA_TYPE_VENDING_ITEM_ID = 9,
TILE_DATA_TYPE_VENDING_PRICE = 10,
TILE_DATA_TYPE_VENDING_EARNED = 11,
TILE_DATA_TYPE_DISPLAY_BLOCK_ITEM_ID = 12,
TILE_DATA_TYPE_MAGPLANT_ITEM_ID = 13,
TILE_DATA_TYPE_MAGPLANT_IS_ACTIVE = 14,
TILE_DATA_TYPE_MAGPLANT_IS_MAGNET = 15,
TILE_DATA_TYPE_MAGPLANT_SPACE = 16,
TILE_DATA_TYPE_MAGPLANT_GEMS = 17,
TILE_DATA_TYPE_MAGPLANT_SECOND_ITEM_ID = 18,
TILE_DATA_TYPE_MAGPLANT_IS_ENABLED = 19,
TILE_DATA_TYPE_MAGPLANT_HARVEST_TREES = 20,
TILE_DATA_TYPE_MAGPLANT_COLLECT_SEEDS = 21
}Note:
setTileDataInt()was renamed tosetTileData().
Examples
Seed fruit count
lua
local fruits = tile:getTileData(TileDataProperties.TILE_DATA_TYPE_SEED_FRUITS_COUNT)
print("Fruit count: "..fruits)
tile:setTileData(TileDataProperties.TILE_DATA_TYPE_SEED_FRUITS_COUNT, fruits + 1)
world:updateTile(tile)Magplant stock
lua
local count = tile:getTileData(TileDataProperties.TILE_DATA_TYPE_MAGPLANT_ITEM_COUNT)
print("Magplant stock:", count)
tile:setTileData(TileDataProperties.TILE_DATA_TYPE_MAGPLANT_ITEM_COUNT, 1)
world:updateTile(tile)Sign text
lua
local text = tile:getTileData(TileDataProperties.TILE_DATA_TYPE_SIGN_TEXT)
print("Sign says:", text or "")
tile:setTileData(TileDataProperties.TILE_DATA_TYPE_SIGN_TEXT, "Hello GrowSoft!")
world:updateTile(tile)