Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

ConfigAPI: Difference between revisions

From FiguraMC
m nil checks
Remove tutorial in favor of putting it at Tutorials/Persisting-Variables
Line 4: Line 4:


ConfigAPI is available as the global <code>config</code> variable.
ConfigAPI is available as the global <code>config</code> variable.
== Tutorial ==
To begin with, create a config file. This can be done with either a script or a /figura run command; it's safest to use a script in an IDE to have syntax highlighting and avoid errors. <syntaxhighlight lang="lua">
config:setName("variablePersistence")
-- All keys must be strings!
config:save("pantsColor", vec(0.5, 0.8, 0.1))
config:save("hatVisible", true)
config:save("legLength", 5)
</syntaxhighlight>Run this script by selecting the avatar it's under. Once it's run, check the existence of the <code>variablePersistence.json</code> file at <code>figura/config</code>. If it's there, that code can be deleted. Next, make some code to read the data in that file when the script is loaded. <syntaxhighlight lang="lua">
config:setName("variablePersistence")
-- The "or (value)" syntax sets the default value if the config:load is nil
local hatVisible = config:load("hatVisible") or true
local legLength = config:load("legLength") or 1
local pantsColor = config:load("pantsColor") or vec(0.9, 0.1, 0.9)
function pings.updateFromConfig(hat, leg, pants)
    models.model.root.Head.Hat:setVisible(hat)
    models.model.root.LeftLeg:setScale(1, leg, 1)
    models.model.root.RightLeg:setScale(1, leg, 1)
   
    models.model.root.LeftLeg["Left Pants"]:setColor(pants)
    models.model.root.RightLeg["Right Pants"]:setColor(pants)
end
pings.updateFromConfig(hatVisible, legLength, pantsColor)
</syntaxhighlight>Finally, make some code that updates the config when you change values.<syntaxhighlight lang="lua">
-- Check if host:isHost() to ensure that the config:save only runs for the host
function pings.toggleHat(state)
    models.model.root.Head.Hat:setVisible(state)
    if host:isHost() then
        config:save("hatVisible", state)
    end
end
function pings.scaleLegs(scale)
    models.model.root.LeftLeg:setScale(1, scale, 1)
    models.model.root.RightLeg:setScale(1, scale, 1)
    if host:isHost() then
        config:save("legLength", scale)
    end
end
function pings.colorPants(rgb)
    models.model.root.LeftLeg["Left Pants"]:setColor(rgb)
    models.model.root.RightLeg["Right Pants"]:setColor(rgb)
    if host:isHost() then
        config:save("pantsColor", rgb)
    end
end
</syntaxhighlight>


== Data types ==
== Data types ==

Revision as of 00:17, 29 September 2024

This API is only available on the host.

For more information, see Pings.

The ConfigAPI allows storing and loading data between reloads of your avatar.

ConfigAPI is available as the global config variable.

Data types

Only some data types are supported by ConfigAPI. All other data types will be converted to nil. The supported data types are:

ConfigAPI methods

Configuration switching

setName


Also available as ConfigAPI:name.

Sets the name of the configuration file to read and write data to. By default, the name of the configuration file is the same as the name of the currently loaded avatar.

Arguments Return Type
setName(name string) self ConfigAPI
config:setName("my_config_file_name")

getName


Returns the name of the active configuration file.

Arguments Return Type
getName() string
-- Print the active configuration file's name.
print(config:getName())

Reading and writing data

load


Read a saved value from the active configuration file (see setName) by key and return it. If no key is given, return all of the saved keys and values in a table.

Arguments Return Type
load(key string) any | nil
load() table
-- Print all saved values.
printTable(config:load())
-- Print one specific value.
print(config:load("my_value"))

save


Associate a key with a value in the active configuration file (see setName.) Only some types of values are allowed; see Data Types for details.

If nil is provided as the value, then the key is removed from the file.

Arguments Return Type
save(key string, value any | nil) self ConfigAPI
-- Save a value to be used later.
config:save("my_value", "Figura Wiki")

Navigation

Documentation
Globals
APIs (Types)
Visuals (Types)
Other Types
Enums