Properties
Argon supports most Roblox properties, here you can learn their syntax when written in project and data files!
Property Type Support Chart
Property Type | Example Property | CLI | Plugin | XML | Binary |
---|---|---|---|---|---|
Attributes | Instance.Attributes | ✅ | ✅ | ✅ | ✅ |
Axes | ArcHandles.Axes | ✅ | ✅ | ✅ | ✅ |
BinaryString | BinaryStringValue.Value | ✅ | ⏺️ | ✅ | ✅ |
Bool | Part.Anchored | ✅ | ✅ | ✅ | ✅ |
BrickColor | Part.BrickColor | ✅ | ✅ | ✅ | ✅ |
Bytecode | N/A | ❌ | ⛔ | ❌ | ❌ |
CFrame | Camera.CFrame | ✅ | ✅ | ✅ | ✅ |
Color3 | Lighting.Ambient | ✅ | ✅ | ✅ | ✅ |
Color3uint8 | Part.BrickColor | ✅ | ✅ | ✅ | ✅ |
ColorSequence | Beam.Color | ✅ | ✅ | ✅ | ✅ |
Content | Decal.Texture | ✅ | ✅ | ✅ | ✅ |
Enum | Part.Shape | ✅ | ✅ | ✅ | ✅ |
Faces | Handles.Faces | ✅ | ✅ | ✅ | ✅ |
Float32 | Players.RespawnTime | ✅ | ✅ | ✅ | ✅ |
Float64 | Sound.PlaybackLoudness | ✅ | ✅ | ✅ | ✅ |
Font | TextLabel.Font | ✅ | ✅ | ✅ | ✅ |
Int32 | Frame.ZIndex | ✅ | ✅ | ✅ | ✅ |
Int64 | Player.UserId | ✅ | ✅ | ✅ | ✅ |
MaterialColors | Terrain.MaterialColors | ✅ | ✅ | ✅ | ✅ |
NumberRange | ParticleEmitter.Lifetime | ✅ | ✅ | ✅ | ✅ |
NumberSequence | Beam.Transparency | ✅ | ✅ | ✅ | ✅ |
OptionalCFrame | Model.WorldPivotData | ✅ | ✅ | ✅ | ✅ |
PhysicalProperties | Part.CustomPhysicalProperties | ✅ | ✅ | ✅ | ✅ |
ProtectedString | ModuleScript.Source | ✅ | ✅ | ✅ | ✅ |
Ray | RayValue.Value | ✅ | ✅ | ✅ | ✅ |
Rect | ImageButton.SliceCenter | ✅ | ✅ | ✅ | ✅ |
Ref | Model.PrimaryPart | ✅ | ✅ | ✅ | ✅ |
Region3 | N/A | ✅ | ✅ | ❌ | ❌ |
Region3int16 | Terrain.MaxExtents | ✅ | ✅ | ❌ | ❌ |
SecurityCapabilities | Folder.SecurityCapabilities | ✅ | ❌ | ✅ | ✅ |
SharedString | N/A | ✅ | ✅ | ✅ | ✅ |
String | Instance.Name | ✅ | ✅ | ✅ | ✅ |
Tags | UIListLayout.Padding | ✅ | ✅ | ✅ | ✅ |
UDim | Frame.Size | ✅ | ✅ | ✅ | ✅ |
UDim2 | Instance.UniqueId | ✅ | ❌ | ✅ | ✅ |
Vector2 | ImageLabel.ImageRectSize | ✅ | ✅ | ✅ | ✅ |
Vector2int16 | N/A | ✅ | ✅ | ✅ | ❌ |
Vector3 | Part.Size | ✅ | ✅ | ✅ | ✅ |
Vector3int16 | TerrainRegion.ExtentsMax | ✅ | ✅ | ✅ | ✅ |
QDir | Studio.Auto-Save Path | ⛔ | ⛔ | ⛔ | ⛔ |
QFont | Studio.Font | ⛔ | ⛔ | ⛔ | ⛔ |
✅ Implemented | ❌ Unimplemented | ⏺️ Partially Implemented | ⛔ Never
Implicit vs Explicit Format
All property types have an implicit and explicit format. While most of the time it's easier to specify properties implicitly, sometimes you just have to use explicit property format e.g. to set instance Attributes.
Limitations
Not all properties can be applied by Argon when live-syncing due to the limitations of the Roblox Studio plugin API. Some common cases when you might face this problem are:
- Binary data (Terrain, CSG parts)
Lighting.Technology
Attributes
Argon defines the "Attributes" property on any instance to have the Attributes type, allowing it to be specified implicitly.
For both implicit and explicit values, the format is an object where each field represents an attribute, where the key is the name of the attribute, and the value must be an explicit value.
{
"$properties": {
"Attributes": {
"Foo": { "Bool": true },
"Bar": { "Vector3": [1.0, 2.0, 3.0] }
}
}
}
The following types are supported for attribute values:
- Bool
- BrickColor
- CFrame
- Color3
- ColorSequence
- Float64
- Font
- NumberRange
- NumberSequence
- Rect
- String
- UDim
- UDim2
- Vector2
- Vector3
Axes
List of strings, each of which may be either X
, Y
, or Z
. Each string sets the corresponding component.
{
"$properties": {
"Implicit": ["X", "Y", "Z"],
"Explicit": { "Axes": ["X", "Z"] }
}
}
BinaryString
For both implicit and explicit values, the format is a base64-encoded string.
{
"$properties": {
"Implicit": "SGVsbG8sIHdvcmxkIQ==",
"Explicit": { "BinaryString": "QXJnb24gaXMgY29vbCE=" }
}
}
Bool
For both implicit and explicit values, the format is a boolean value.
{
"$properties": {
"Implicit": true,
"Explicit": { "Bool": false }
}
}
BrickColor
For both implicit and explicit values, the format is an integer representing the Number of a BrickColor. Additionally for implicit values, the format is a string representing the Name of a BrickColor.
{
"$properties": {
"Implicit1": "Electric blue",
"Implicit2": 1032,
"Explicit": { "BrickColor": 1032 }
}
}
CFrame
For implicit values, the format is a flat list of components. For explicit values, the format is an object with position
and orientation
fields. The position
field is a Vector3.
{
"$properties": {
"Implicit": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
"Explicit": {
"CFrame": {
"position": [1.0, 2.0, 3.0],
"orientation": [
[4.0, 5.0, 6.0],
[7.0, 8.0, 9.0],
[10.0, 11.0, 12.0]
]
}
}
}
}
Color3
For both implicit and explicit values, the format is a list of R
, G
and B
components, respectively. Each component is a float in the range 0
- 1
.
{
"$properties": {
"Implicit": [0.3, 0.6, 0.9],
"Explicit": {
"Color3": [0.25, 0.5, 0.75]
}
}
}
Color3uint8
For both implicit and explicit values, the format is a list of R
, G
and B
components, respectively. Each component is an integer in the range 0
- 255
.
{
"$properties": {
"Implicit": [0, 100, 200],
"Explicit": {
"Color3uint8": [55, 155, 255]
}
}
}
ColorSequence
For implicit values, the format is a flat list of ColorSequenceKeypoints. For explicit values, the format is an object with a keypoints
field, which is an array of ColorSequenceKeypoints. Each ColorSequenceKeypoint is an object with time
and color
fields. The color
field is a Color3.
{
"$properties": {
"Implicit": [
{ "time": 0, "color": [0, 0, 0] },
{ "time": 1, "color": [1, 1, 1] }
],
"Explicit": {
"ColorSequence": {
"keypoints": [
{ "time": 0, "color": [1, 0, 0] },
{ "time": 0.5, "color": [0, 1, 0] },
{ "time": 1, "color": [0, 0, 1] }
]
}
}
}
}
Content
For both implicit and explicit values, the format is a string.
{
"$properties": {
"Implicit": "rbxassetid://1234567890",
"Explicit": { "Content": "rbxassetid://0987654321" }
}
}
Enum
For implicit values, the format is a string corresponding to the name
of the enum item. For explicit values, the format is an integer corresponding to the value
of the enum item.
{
"$properties": {
"Implicit": "Ball",
"Explicit": { "Enum": 3 }
}
}
Faces
For both implicit and explicit values, the format is a list of strings, each of which may be either Right
, Top
, Back
, Left
, Bottom
, or Front
. Each string sets the corresponding component.
{
"$properties": {
"Implicit": ["Right", "Top", "Back", "Left", "Bottom", "Front"],
"Explicit": { "Faces": ["Right", "Top", "Front"] }
}
}
Float32
For both implicit and explicit values, the format is a float.
{
"$properties": {
"Implicit": 6.9,
"Explicit": { "Float32": 123.456 }
}
}
Float64
For both implicit and explicit values, the format is a float.
{
"$properties": {
"Implicit": 6.9,
"Explicit": { "Float64": 123.456 }
}
}
Font
For both implicit and explicit values, the format is an object with family
, weight
, and style
fields. Each field is a string.
{
"$properties": {
"Implicit": {
"family": "rbxasset://fonts/families/Ubuntu.json",
"weight": "Bold",
"style": "Italic"
},
"Explicit": {
"Font": {
"family": "rbxasset://fonts/families/LegacyArial.json",
"weight": "Regular",
"style": "Normal"
}
}
}
}
Int32
For both implicit and explicit values, the format is an integer.
{
"$properties": {
"Implicit": 420,
"Explicit": { "Int32": 1337 }
}
}
Int64
For both implicit and explicit values, the format is an integer.
{
"$properties": {
"Implicit": 420,
"Explicit": { "Int64": 1337 }
}
}
MaterialColors
For both implicit and explicit values, the format is an object with material names as fields. Each field is a Color3uint8.
{
"$properties": {
"Implicit": {
"Grass": [10, 20, 30],
"Asphalt": [40, 50, 60],
"LeafyGrass": [255, 155, 55]
},
"Explicit": {
"MaterialColors": {
"Grass": [10, 20, 30],
"Asphalt": [40, 50, 60],
"LeafyGrass": [255, 155, 55]
}
}
}
}
NumberRange
For both implicit and explicit values, the format is a list of Min
and Max
components, respectively. Each component is a float.
{
"$properties": {
"Implicit": { "NumberRange": [0, 100] },
"Explicit": { "NumberRange": [12.34, 56.78] }
}
}
NumberSequence
For implicit values, the format is a flat list of NumberSequenceKeypoints. For explicit values, the format is an object with a keypoints
field, which is an array of NumberSequenceKeypoints. Each NumberSequenceKeypoint is an object with time
, value
, and envelope
fields.
{
"$properties": {
"Implicit": [
{ "time": 0.0, "value": 5.0, "envelope": 2.5 },
{ "time": 0.5, "value": 10.0, "envelope": 4.5 },
{ "time": 1.0, "value": 15.0, "envelope": 0.0 }
],
"Explicit": {
"NumberSequence": {
"keypoints": [
{ "time": 0, "value": 13, "envelope": 2 },
{ "time": 1, "value": 37, "envelope": 1 }
]
}
}
}
}
OptionalCFrame
For implicit values, the format is a flat list of components. For explicit values, the format is an object with position
and orientation
fields. The position
field is a Vector3.
{
"$properties": {
"Implicit": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0],
"Explicit": {
"CFrame": {
"position": [1, 2, 3],
"orientation": [
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]
]
}
}
}
}
PhysicalProperties
For both implicit and explicit values, there are two formats. The constant string Default
, which represents the default PhysicalProperties value or an object with fields corresponding to each component.
{
"$properties": {
"Implicit1": "Default",
"Implicit2": {
"density": 0.5,
"friction": 1.0,
"elasticity": 0.0,
"frictionWeight": 50.0,
"elasticityWeight": 25.0
},
"Explicit1": { "PhysicalProperties": "Default" },
"Explicit2": {
"PhysicalProperties": {
"density": 0.5,
"friction": 1.0,
"elasticity": 0.0,
"frictionWeight": 50.0,
"elasticityWeight": 25.0
}
}
}
}
ProtectedString
For both implicit and explicit values, the format is a string.
{
"$properties": {
"Implicit": "print('Hello world!')",
"Explicit": { "ProtectedString": "print('Hello world!')" }
}
}
Ray
For both implicit and explicit values, the format is a list of origin
and direction
components. Each component is a Vector3.
{
"$properties": {
"Implicit": [
[1, 2, 3],
[4, 5, 6]
],
"Explicit": {
"Ray": [
[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0]
]
}
}
}
Rect
For both implicit and explicit values, the format is a list of all components. Each component is a float.
{
"$properties": {
"Explicit": [0.0, 5.0, 10.0, 15.0],
"Explicit": {
"Rect": [0, 5, 10, 15]
}
}
}
Ref
Not implemented yet.
Region3
For both implicit and explicit values, the format is a list of Min
and Max
components, respectively. Each component is a Vector3.
{
"$properties": {
"Implicit": [
[1, 2, 3],
[4, 5, 6]
],
"Explicit": {
"Region3": [
[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0]
]
}
}
}
Region3int16
For both implicit and explicit values, the format is a list of Min
and Max
components, respectively. Each component is a Vector3int16.
{
"$properties": {
"Implicit": [
[100, 200, 300],
[400, 500, 600]
],
"Explicit": {
"Region3int16": [
[100, 200, 300],
[400, 500, 600]
]
}
}
}
SharedString
For both implicit and explicit values, the format is a string.
{
"$properties": {
"Implicit": "Argon is cool!",
"Explicit": { "SharedString": "Argon is cool!" }
}
}
String
For both implicit and explicit values, the format is a string.
{
"$properties": {
"Implicit": "Hello, world!",
"Explicit": { "String": "Hello, world!" }
}
}
Tags
For both implicit and explicit values, the format is a list of strings, where each string is a tag.
{
"$properties": {
"Implicit": ["foo", "bar"],
"Explicit": { "Tags": ["foo", "bar", "baz"] }
}
}
UDim
For both implicit and explicit values, the format is a list of Scale
and Offset
components, respectively. Scale
is a float, and Offset
is an integer.
{
"$properties": {
"Implicit": [0.5, 500],
"Explicit": { "UDim": [1.0, 1000] }
}
}
UDim2
For both implicit and explicit values, the format is a list of X
and Y
components, respectively. Each component is a UDim.
{
"$properties": {
"Implicit": [
[0.4, 400],
[0.1, 50]
],
"Explicit": {
"UDim2": [
[-1.0, 100],
[1.0, -100]
]
}
}
}
Vector2
For both implicit and explicit values, the format is a list of X
and Y
components, respectively. Each component is a float.
{
"$properties": {
"Implicit": [-1.2, 3.4],
"Explicit": { "Vector2": [0.0, 50.0] }
}
}
Vector2int16
For both implicit and explicit values, the format is a list of X
and Y
components, respectively. Each component is an integer.
{
"$properties": {
"Implicit": [100, 500],
"Explicit": { "Vector2int16": [-300, 600] }
}
}
Vector3
For both implicit and explicit values, the format is a list of X
, Y
, and Z
components, respectively. Each component is an float.
{
"$properties": {
"Implicit": [-1.2, 3.4, -5.6],
"Explicit": { "Vector3": [100.0, -200.0, 300.0] }
}
}
Vector3int16
For both implicit and explicit values, the format is a list of X
, Y
, and Z
components, respectively. Each component is an integer.
{
"$properties": {
"Implicit": [-1500, 2500, 3500],
"Explicit": { "Vector3int16": [123, 456, -789] }
}
}
This page is based on Rojo's Properties as Argon stores properties in a very similar way.