Skip to content

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 player

Working 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
end

Tile 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 to setTileData().


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)

GTPS Cloud Documentation