Skip to main content

data — Player Data API

Phase: Server

Persistent per-player key/value storage. Data is stored as JSON files at:

<gameDir>/atomicoffe/playerdata/<uuid>.json

Values can be strings, numbers, or booleans. Tables are not supported — use config for shared config or serialize to JSON yourself.


data.set(uuid, key, value)​

Stores a value for a player. Saves to disk immediately.

data.set(player.uuid, "coins", 100)
data.set(player.uuid, "vip", true)
data.set(player.uuid, "lastSeen", "2025-01-01")

data.get(uuid, key) → value | nil​

Retrieves a previously stored value, or nil if the key doesn't exist.

local coins = data.get(player.uuid, "coins") or 0
player.tell("You have " .. coins .. " coins.")

data.has(uuid, key) → boolean​

Returns true if the key exists for the player.

if not data.has(player.uuid, "welcomed") then
player.tell("Welcome to the server!")
data.set(player.uuid, "welcomed", true)
end

data.delete(uuid, key)​

Removes the key from the player's data and saves.

data.delete(player.uuid, "tempBuff")

data.getAll(uuid) → table​

Returns a Lua table with all stored key/value pairs for the player.

local all = data.getAll(player.uuid)
for k, v in pairs(all) do
print(k, v)
end

data.clear(uuid)​

Removes all stored data for the player.

data.clear(player.uuid)
player.tell("Your data has been reset.")

Full Example​

onEvent("player.join", function(e)
local p = e.player
local visits = (data.get(p.uuid, "visits") or 0) + 1
data.set(p.uuid, "visits", visits)
p.tell("Welcome back! This is visit #" .. visits)
end)