Moud

Reference#

Written out of the class registry rather than by hand, so it cannot describe a property that does not exist. Regenerate it by running DumpReference in script, which brings every signature up to date and keeps the notes written beside them.

A plain public field on a class is a replicated property; a public final signal is an event; a public final callback is a function a place assigns. Nothing is declared twice, which is why this page, the editor's type file, the replication codec and the debug overlay all say the same thing.

Vector3#

Property Type
x number
y number
z number
magnitude number
unit Vector3

Methods:

  • __add(other: Vector3): Vector3
  • __sub(other: Vector3): Vector3
  • __mul(scale: number): Vector3
  • __mul(other: Vector3): Vector3
  • __div(scale: number): Vector3
  • __div(other: Vector3): Vector3
  • __unm(): Vector3
  • distance(other: Vector3): number
  • distanceSq(other: Vector3): number
  • dot(other: Vector3): number
  • cross(other: Vector3): Vector3
  • lerp(goal: Vector3, alpha: number): Vector3
  • angleTo(other: Vector3): number
  • flat(): Vector3
  • clampMagnitude(max: number): Vector3
  • abs(): Vector3
  • floor(): Vector3
  • add(other: Vector3): Vector3
  • sub(other: Vector3): Vector3
  • mul(by: number | Vector3): Vector3
  • div(by: number | Vector3): Vector3
  • neg(): Vector3

UDim2#

Property Type
xScale number
xOffset number
yScale number
yOffset number

Methods:

  • __add(other: UDim2): UDim2
  • __sub(other: UDim2): UDim2

Color#

Property Type
r number
g number
b number
a number

Quat#

Property Type
x number
y number
z number
w number

Methods:

  • slerp(goal: Quat, alpha: number): Quat
  • inverse(): Quat
  • rotate(vector: Vector3): Vector3
  • mul(other: Quat): Quat
  • __mul(other: Quat): Quat

CFrame#

Property Type
position Vector3
rotation Quat
lookVector Vector3
rightVector Vector3
upVector Vector3

Methods:

  • __mul(other: CFrame): CFrame
  • __mul(point: Vector3): Vector3
  • inverse(): CFrame
  • lerp(goal: CFrame, alpha: number): CFrame
  • toObjectSpace(other: CFrame): CFrame
  • toWorldSpace(other: CFrame): CFrame
  • pointToObjectSpace(point: Vector3): Vector3
  • pointToWorldSpace(point: Vector3): Vector3
  • vectorToObjectSpace(vector: Vector3): Vector3
  • vectorToWorldSpace(vector: Vector3): Vector3
  • lookAt(target: Vector3): CFrame
  • mul(other: CFrame): CFrame

Connection#

Property Type
connected boolean

Methods:

  • disconnect(): ()

ChangedSignal#

Property Type
count number

Methods:

  • connect(handler: (property: string) -> ()): Connection
  • connectParallel(handler: (property: string) -> ()): Connection
  • once(handler: (property: string) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (property: string) -> ()): Connection

InstanceSignal#

Property Type
count number

Methods:

  • connect(handler: (instance: Instance) -> ()): Connection
  • connectParallel(handler: (instance: Instance) -> ()): Connection
  • once(handler: (instance: Instance) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (instance: Instance) -> ()): Connection

AttributeSignal#

Property Type
count number

Methods:

  • connect(handler: (name: string) -> ()): Connection
  • connectParallel(handler: (name: string) -> ()): Connection
  • once(handler: (name: string) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (name: string) -> ()): Connection

AncestrySignal#

Property Type
count number

Methods:

  • connect(handler: (child: Instance, parent: Instance?) -> ()): Connection
  • connectParallel(handler: (child: Instance, parent: Instance?) -> ()): Connection
  • once(handler: (child: Instance, parent: Instance?) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (child: Instance, parent: Instance?) -> ()): Connection

AnySignal#

Property Type
count number

Methods:

  • connect(handler: (...any) -> ()): Connection
  • connectParallel(handler: (...any) -> ()): Connection
  • once(handler: (...any) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (...any) -> ()): Connection

NumberSignal#

Property Type
count number

Methods:

  • connect(handler: (value: number) -> ()): Connection
  • connectParallel(handler: (value: number) -> ()): Connection
  • once(handler: (value: number) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (value: number) -> ()): Connection

BoolSignal#

Property Type
count number

Methods:

  • connect(handler: (active: boolean) -> ()): Connection
  • connectParallel(handler: (active: boolean) -> ()): Connection
  • once(handler: (active: boolean) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (active: boolean) -> ()): Connection

StringSignal#

Property Type
count number

Methods:

  • connect(handler: (value: string) -> ()): Connection
  • connectParallel(handler: (value: string) -> ()): Connection
  • once(handler: (value: string) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (value: string) -> ()): Connection

MarkerSignal#

Property Type
count number

Methods:

  • connect(handler: (value: any) -> ()): Connection
  • connectParallel(handler: (value: any) -> ()): Connection
  • once(handler: (value: any) -> ()): Connection
  • every(n: number, handler: (value: any) -> ()): Connection
  • wait(timeout: number?): ...any

StepSignal#

Property Type
count number

Methods:

  • connect(handler: (delta: number) -> ()): Connection
  • connectParallel(handler: (delta: number) -> ()): Connection
  • once(handler: (delta: number) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (delta: number) -> ()): Connection

PlayerSignal#

Property Type
count number

Methods:

  • connect(handler: (player: Player) -> ()): Connection
  • connectParallel(handler: (player: Player) -> ()): Connection
  • once(handler: (player: Player) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (player: Player) -> ()): Connection

ArrivalSignal#

Property Type
count number

Methods:

  • connect(handler: (player: Player, data: any) -> ()): Connection
  • connectParallel(handler: (player: Player, data: any) -> ()): Connection
  • once(handler: (player: Player, data: any) -> ()): Connection
  • every(n: number, handler: (player: Player, data: any) -> ()): Connection
  • wait(timeout: number?): ...any

ExplosionSignal#

Property Type
count number

Methods:

  • connect(handler: (part: Instance, distance: number) -> ()): Connection
  • connectParallel(handler: (part: Instance, distance: number) -> ()): Connection
  • once(handler: (part: Instance, distance: number) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (part: Instance, distance: number) -> ()): Connection

StrikeSignal#

Property Type
count number

Methods:

  • connect(handler: (position: Vector3) -> ()): Connection
  • connectParallel(handler: (position: Vector3) -> ()): Connection
  • once(handler: (position: Vector3) -> ()): Connection
  • every(n: number, handler: (position: Vector3) -> ()): Connection
  • wait(timeout: number?): ...any

RemoteServerSignal#

Property Type
count number

Methods:

  • connect(handler: (body: Character?, ...any) -> ()): Connection
  • connectParallel(handler: (body: Character?, ...any) -> ()): Connection
  • once(handler: (body: Character?, ...any) -> ()): Connection
  • every(n: number, handler: (body: Character?, ...any) -> ()): Connection
  • wait(timeout: number?): ...any

RemotePlayerSignal#

Property Type
count number

Methods:

  • connect(handler: (player: Player, ...any) -> ()): Connection
  • connectParallel(handler: (player: Player, ...any) -> ()): Connection
  • once(handler: (player: Player, ...any) -> ()): Connection
  • every(n: number, handler: (player: Player, ...any) -> ()): Connection
  • wait(timeout: number?): ...any

PointerSignal#

Property Type
count number

Methods:

  • connect(handler: (x: number, y: number) -> ()): Connection
  • connectParallel(handler: (x: number, y: number) -> ()): Connection
  • once(handler: (x: number, y: number) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (x: number, y: number) -> ()): Connection

FocusLostSignal#

Property Type
count number

Methods:

  • connect(handler: (enterPressed: boolean) -> ()): Connection
  • connectParallel(handler: (enterPressed: boolean) -> ()): Connection
  • once(handler: (enterPressed: boolean) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (enterPressed: boolean) -> ()): Connection

Player#

Property Type
name string
id string
character Character?
controls PlayerControls
team Team? (set on the server)
leaderstats Leaderstats?

Methods:

  • spawn(at: (Vector3 | CFrame)?): Character (server)
  • kick(message: string?): ()
  • ban(reason: string?, seconds: number?): ()
  • ping(): number
  • viewTime(): number

Players#

Property Type
joined PlayerSignal (server)
leaving PlayerSignal (server)
spawned PlayerSignal (server)
autoSpawn boolean (server)
respawnTime number (server)
controls PlayerControls (client)
arrived ArrivalSignal (server)

Methods:

  • me(): Character? (client)
  • list(): { Player }
  • byId(id: string): Player?
  • playerOf(body: Instance): Player?
  • all(): { Character }
  • near(position: Vector3, radius: number, except: Instance?): { Character }
  • nearest(position: Vector3, radius: number?, except: Instance?): (Character?, number?)
  • bodyOf(player: string): Character?
  • count(): number
  • inBox(frame: CFrame, size: Vector3, except: Instance?): { Character }
  • inPart(part: Instance, except: Instance?): { Character }
  • inCone(position: Vector3, direction: Vector3, angle: number, range: number, except: Instance?): { Character }
  • visibleFrom(position: Vector3, range: number, except: Instance?): { Character }
  • withTag(tag: string): { Character }
  • random(except: Instance?): Character?
  • sortedByDistance(position: Vector3): { Character }
  • inRange(a: Instance, b: Instance, range: number): boolean
  • fromName(name: string): Character?

PlayerControls#

Property Type
move boolean
jump boolean
look boolean

Methods:

  • enable(): ()
  • disable(): ()

Tween#

Property Type
completed AnySignal

Methods:

  • pause(): ()
  • resume(): ()
  • cancel(): ()
  • state(): string

Instance#

Property Type
name string
className string
parent Instance?
changed ChangedSignal
childAdded InstanceSignal
destroying InstanceSignal
attributeChanged AttributeSignal
ancestryChanged AncestrySignal
descendantAdded InstanceSignal
descendantRemoving InstanceSignal

Methods:

  • add(className: string, properties: { [string]: any }?): Instance (typed as the class named, add("Part") is a Part)
  • addAll(className: string, properties: { { [string]: any } }): number
  • children(): { Instance }
  • find(name: string): Instance?
  • isA(className: string): boolean
  • raycast(from: Vector3, direction: Vector3, range: number?, options: QueryOptions?): (Instance?, Vector3?, number?, Vector3?, string?)
  • spherecast(from: Vector3, radius: number, direction: Vector3, range: number?, options: QueryOptions?): (Instance?, Vector3?, number?, Vector3?)
  • blockcast(frame: CFrame, size: Vector3, direction: Vector3, range: number?, options: QueryOptions?): (Instance?, Vector3?, number?, Vector3?)
  • partsInBox(frame: CFrame, size: Vector3, options: QueryOptions?): { Instance }
  • partsInRadius(position: Vector3, radius: number, options: QueryOptions?): { Instance }
  • partsInPart(part: Instance, options: QueryOptions?): { Instance }
  • raycastAll(from: Vector3, direction: Vector3, range: number?, options: QueryOptions?): { RayHit }
  • raycastMany(rays: { { any } }, options: QueryOptions?): { RayHit | false }
  • nearestPart(position: Vector3, radius: number, options: QueryOptions?): (Instance?, number?)
  • nearestTagged(position: Vector3, tag: string, radius: number?): (Instance?, number?)
  • partsAlongRay(from: Vector3, direction: Vector3, range: number?, options: QueryOptions?): { RayHit }
  • capsulecast(from: Vector3, to: Vector3, radius: number, options: QueryOptions?): (Instance?, Vector3?, number?, Vector3?)
  • sweep(part: Instance, direction: Vector3, distance: number, options: QueryOptions?): (Instance?, Vector3?, number?, Vector3?)
  • partsAtPoint(position: Vector3, options: QueryOptions?): { Instance }
  • boundsOf(instances: { Instance }): (CFrame?, Vector3?)
  • groundAt(x: number, z: number, from: number?, options: QueryOptions?): (number?, Vector3?)
  • surfaceNormal(position: Vector3, options: QueryOptions?): Vector3?
  • heightmap(from: Vector3, to: Vector3, step: number?, options: QueryOptions?): { { number } }
  • findFreeSpot(near: Vector3, size: Vector3, radius: number?): Vector3?
  • findFirstDescendant(name: string): Instance?
  • descendants(className: string?): { Instance }
  • childrenOfClass(className: string): { Instance }
  • firstAncestorOfClass(className: string): Instance?
  • firstChildOfClass(className: string, recursive: boolean?): Instance?
  • firstAncestor(name: string): Instance?
  • isDescendantOf(other: Instance): boolean
  • isAncestorOf(other: Instance): boolean
  • getFullName(): string
  • clearAllChildren(): ()
  • byTag(tag: string): { Instance }
  • values(): { [string]: any }
  • clone(parent: Instance?): Instance?
  • query(selector: string): { Instance }
  • queryFirst(selector: string): Instance?
  • waitForChild(name: string, timeout: number?): Instance?
  • onChild(name: string, fn: (child: Instance) -> ()): Connection
  • destroy(): ()
  • setOwner(to: Instance?): ()
  • addTag(tag: string): ()
  • removeTag(tag: string): ()
  • hasTag(tag: string): boolean
  • getTags(): { string }
  • setAttribute(name: string, value: any): ()
  • getAttribute(name: string): any
  • getAttributes(): { [string]: any }
  • getAttributeChangedSignal(name: string): AnySignal
  • getPropertyChangedSignal(property: string): AnySignal
  • tween(goals: { [string]: any }, info: TweenInfo?): Tween
  • getActor(): Actor?
  • fireServer(...: any): ()
  • fireClient(to: Instance, ...: any): ()
  • fireAllClients(...: any): ()

Folder#

Extends Instance

Spatial#

Extends Instance

Property Type
position Vector3
rotation Quat
worldCframe CFrame
alwaysRelevant boolean
cframe CFrame
owner string
pivot Vector3
visible boolean

Methods:

  • getPivot(): CFrame
  • pivotTo(target: CFrame): ()

Part#

Extends Spatial

Property Type
touched InstanceSignal
touchEnded InstanceSignal
anchored boolean
angularVelocity Vector3
canQuery boolean
canTouch boolean
collides boolean
collisionGroup string
color Color
density number
elasticity number
emission Color
emissionMap string
emissionStrength number
friction number
locked boolean
massless boolean
metallic number
metallicMap string
networkOwner string
normalMap string
occlusionMap string
roughness number
roughnessMap string
shading "flat" | "pbr"
shape "block" | "ball" | "cylinder" | "wedge" | "cornerWedge"
size Vector3
textureOffset Vector3
transparency number
velocity Vector3
castShadow boolean
studsPerTile number
texture string

Methods:

  • overlapping(options: QueryOptions?): { Instance }
  • closestPoint(position: Vector3): Vector3
  • contains(position: Vector3): boolean
  • bounds(): (CFrame, Vector3)
  • worldBounds(): (Vector3, Vector3)
  • applyImpulse(impulse: Vector3): () (server)
  • applyImpulseAtPosition(impulse: Vector3, position: Vector3): () (server)
  • applyAngularImpulse(impulse: Vector3): () (server)
  • setVelocity(velocity: Vector3): () (server)
  • setAngularVelocity(velocity: Vector3): () (server)
  • getVelocityAtPosition(position: Vector3): Vector3 (server)
  • getMass(): number
  • setNetworkOwner(owner: (Player | Character)?): () (server)
  • setNetworkOwnershipAuto(): () (server)
  • isNetworkOwnershipAuto(): boolean
  • canSetNetworkOwnership(): (boolean, string?)
  • getNetworkOwner(): Player?

Character#

Extends Spatial

Property Type
animate boolean
attackLeft boolean
attackTime number
bedYaw number
chargeProgress number
collisionGroup string
crawling boolean
crouching boolean
deathTime number
flying boolean
flyingTime number
flyingYaw number
frozen boolean
height number
hurt boolean
inWater boolean
leftArmPose "empty" | "item" | "block" | "bow" | "trident" | "crossbowCharge" | "crossbowHold" | "spyglass" | "horn" | "brush" | "spear"
leftItem string
lookPitch number
lookYaw number
mainLeft boolean
moveDistance number
moveSpeed number
radius number
riding boolean
rightArmPose "empty" | "item" | "block" | "bow" | "trident" | "crossbowCharge" | "crossbowHold" | "spyglass" | "horn" | "brush" | "spear"
rightItem string
scale number
sleeping boolean
speedValue number
spinning boolean
swimAmount number
team Instance?
upsideDown boolean
useLeftHand boolean
usingItem boolean
velocity Vector3
whiteFlash number
leftItemOverride string
rightItemOverride string
humanoid Humanoid
animator Animator
viewModel ViewModel
backpack Backpack
appearance Appearance
armour Armour
wings Wings
joints CharacterJoints
root Attachment
hitbox Part
head BodyLimb
torso BodyLimb
rightArm BodyLimb
leftArm BodyLimb
rightLeg BodyLimb
leftLeg BodyLimb
spinInner Limb
spinOuter Limb
rightWing Limb
leftWing Limb

Methods:

  • distanceTo(other: Instance): number
  • distanceSqTo(other: Instance): number
  • canSee(other: Instance, range: number?): boolean
  • isGrounded(): boolean
  • isInWater(): boolean
  • isMoving(): boolean
  • applyImpulse(change: Vector3): ()
  • setVelocity(velocity: Vector3): ()
  • lookDirection(): Vector3
  • facing(other: Instance, maxAngle: number?): boolean
  • walkTo(point: Vector3, options: PathOptions?): boolean
  • walkAlong(path: Path): boolean
  • follow(target: Instance, distance: number?, options: PathOptions?): ()
  • stopWalking(): ()
  • isWalking(): boolean
  • jump(): ()
  • lookAt(point: Vector3): ()
  • face(direction: Vector3): ()

Camera#

Extends Spatial

Property Type
distance number
fov number
mode "firstPerson" | "thirdPerson" | "scriptable"
offset Vector3
subject Instance?

Methods:

  • shake(trauma: number): ()
  • kick(pitch: number, yaw: number, roll: number, seconds: number): ()
  • fovPunch(degrees: number, seconds: number): ()
  • clearEffects(): ()
  • worldToScreen(world: Vector3): Vector3?
  • screenToRay(x: number, y: number): (Vector3, Vector3)
  • play(path: CameraPath, info: CameraPlayInfo?): CameraPlayback

CameraPlayInfo is { duration: number?, easing: string?, direction: string?, restore: boolean? }.

CameraPlayback#

Property Type
finished AnySignal
progress number
playing boolean

Methods:

  • stop(): ()

CameraPath#

Extends Spatial

Property Type
closed boolean
direction "in" | "out" | "inOut"
duration number
easing "linear" | "sine" | "quad" | "cubic" | "quart" | "quint" | "expo" | "circ" | "back" | "elastic" | "bounce"
faceAlong boolean
lookAt Instance?
looped boolean

Timeline#

Extends Instance

Property Type
ended InstanceSignal
didLoop InstanceSignal
reached StringSignal
length number
looped boolean
markers string
playing boolean
speed number
timePosition number

Methods:

  • play(): ()
  • pause(): ()
  • stop(): ()
  • addKey(target: Instance | string, property: string, time: number, value: any, shape: string?): PropertyTrack
  • setKeys(target: Instance | string, property: string, keys: { TimelineKey }): PropertyTrack
  • addMarker(time: number, name: string): ()
  • at(time: number, callback: () -> ()): ()

PropertyTrack#

Extends Instance

Property Type
direction "in" | "out" | "inOut"
easing "linear" | "sine" | "quad" | "cubic" | "quart" | "quint" | "expo" | "circ" | "back" | "elastic" | "bounce"
interpolation "constant" | "linear" | "cubic"
keys string
loopWrap boolean
path string
property string
target Instance?

Methods:

  • getKeys(): { TimelineKey }

SpawnLocation#

Extends Part

Property Type
allowTeamChangeOnTouch boolean
enabled boolean
neutral boolean
teamColor Color

Seat#

Extends Part

Property Type
disabled boolean
occupant Instance? (read-only)

Methods:

  • sit(humanoid: Humanoid): boolean (server)

VehicleSeat#

Extends Seat

Property Type
maxSpeed number
steer number (read-only)
throttle number (read-only)
torque number
turnSpeed number

Window#

Extends Instance

Property Type
alwaysOnTop boolean
camera Instance?
clickThrough boolean
clickable Instance?
decorated boolean
focused boolean
gui Instance?
height number
mirror boolean
opacity number
resizable boolean
title string
transparent boolean
visible boolean
width number
x number
y number
closing InstanceSignal
moved InstanceSignal
resized InstanceSignal

Methods:

  • close(): ()
  • preventClose(): ()
  • focus(): ()
  • moveTo(x: number, y: number): ()
  • resize(width: number, height: number): ()
  • center(): ()

Animator#

Extends Instance

Property Type
animationPlayed InstanceSignal

Methods:

  • loadAnimation(animation: Instance): AnimationTrack
  • getPlayingAnimationTracks(): { AnimationTrack }

AnimationTrack#

Extends Instance

Property Type
stopped InstanceSignal
ended InstanceSignal
didLoop InstanceSignal
keyframeReached StringSignal
animation Instance?
fadeTime number
length number
looped boolean
playing boolean
priority number
speed number
timePosition number
weight number
blend "normal" | "additive"
mask string

Methods:

  • play(fadeTime: number?, weight: number?, speed: number?): ()
  • stop(fadeTime: number?): ()
  • adjustSpeed(speed: number): ()
  • adjustWeight(weight: number, fadeTime: number?): ()
  • getMarkerReachedSignal(name: string): MarkerSignal

timePosition and length are not replicated.

Animation#

Extends Instance

Property Type
animationId string

AnimationController#

Extends Instance

IKControl#

Extends Instance

Property Type
axis Vector3
chainRoot Instance?
enabled boolean
endEffector Instance?
offset CFrame
pole Instance?
priority number
rootWeight number
smoothTime number
target Instance?
targetCframe CFrame
type "aim" | "lookAt" | "position" | "transform"
weight number

JointSpring#

Extends Instance

Property Type
axis Vector3
damping number
enabled boolean
gravity Vector3
joint Instance?
length number
maxAngle number
stiffness number
weight number

ViewModel#

Extends Spatial

Property Type
enabled boolean
fieldOfView number
model string
animator Animator
joints { [string]: Bone }

Methods:

  • isActive(): boolean

KeyframeSequence#

Extends Instance

Property Type
looped boolean
priority number
blend "normal" | "additive"
mask string
space "body" | "view"

Keyframe#

Extends Instance

Property Type
time number

Pose#

Extends Instance

Property Type
cframe CFrame
direction "in" | "out" | "inOut"
easing "linear" | "sine" | "quad" | "cubic" | "quart" | "quint" | "expo" | "circ" | "back" | "elastic" | "bounce"
weight number

KeyframeMarker#

Extends Instance

Property Type
value string

Appearance#

Extends Instance

Property Type
display "hitbox" | "model" | "hidden"
ears boolean
firstPerson "arm" | "hand" | "body" | "none"
skin string
slim boolean

Armour#

Extends Instance

Property Type
chest string
feet string
hat string
hatLayered boolean
head string
legs string

Attachment#

Extends Spatial

Bone#

Extends Attachment

Property Type
scale Vector3
transform CFrame

Limb#

Extends Part

Property Type
touched InstanceSignal
touchEnded InstanceSignal
cutout boolean
mirrored boolean
sheet string
sheetHeight number
sheetWidth number
swing number
swingPhase number
swingSideways boolean
texels Vector3
u number
v number

MeshPart#

Extends Part

Property Type
touched InstanceSignal
touchEnded InstanceSignal
animation string
animationLooped boolean
animationSpeed number
lightingShader string
meshId string
shader string
vertexShader string

MaterialOverride#

Extends Instance

Property Type
color Color
doubleSided boolean
dithered boolean
emission Color
emissionMap string
emissionStrength number
filter "default" | "nearest" | "linear"
material string
metallic number
metallicMap string
normalMap string
occlusionMap string
offsetU number
offsetV number
repeatU number
repeatV number
roughness number
roughnessMap string
texture string
transparency number

SpecialMesh#

Extends Instance

Property Type
meshId string
meshType "brick" | "sphere" | "cylinder" | "wedge" | "head" | "fileMesh"
offset Vector3
scale Vector3
textureId string
vertexColor Color

PostEffect#

Extends Instance

Property Type
enabled boolean

ScreenEffect#

Extends PostEffect

Property Type
coversInterface boolean
intensity number
order number

BloomEffect#

Extends PostEffect

Property Type
intensity number
knee number
occlude boolean
resolution number
size number
threshold number

ColorGradeEffect#

Extends PostEffect

Property Type
brightness number
contrast number
exposure number
gamma number
lut string
lutIntensity number
lutSize number
saturation number
temperature number
tint number

AmbientOcclusionEffect#

Extends PostEffect

Property Type
bias number
intensity number
power number
radius number
resolution number
temporal boolean

GlobalIlluminationEffect#

Extends PostEffect

Property Type
history number
intensity number
radius number
resolution number

ReflectionEffect#

Extends PostEffect

Property Type
edgeFade number
intensity number
maxDistance number
reflectivity number
resolution number
steps number
temporal boolean
thickness number

AntiAliasingEffect#

Extends PostEffect

Property Type
clip number
history number
sharpness number

VolumetricEffect#

Extends PostEffect

Property Type
anisotropy number
density number
resolution number
shadows boolean
steps number
strength number

ContactShadowEffect#

Extends PostEffect

Property Type
distance number
steps number
thickness number

ShadowQuality#

Extends PostEffect

Property Type
contactHardening boolean
entities boolean
lightSize number
maxDistance number
reduction number (read-only)
resolution number
softness number
sunCascades number
sunDistance number
sunResolution number
timeBudget number

VignetteEffect#

Extends ScreenEffect

Property Type
color Color
radius number
softness number

ChromaticAberrationEffect#

Extends ScreenEffect

Property Type
amount number

FilmGrainEffect#

Extends ScreenEffect

Property Type
amount number
size number

BlurEffect#

Extends ScreenEffect

Property Type
size number

DepthOfFieldEffect#

Extends ScreenEffect

Property Type
falloff number
focusDistance number
focusRange number
size number

MotionBlurEffect#

Extends ScreenEffect

Property Type
samples number
strength number

PixelateEffect#

Extends ScreenEffect

Property Type
pixelSize number

PosterizeEffect#

Extends ScreenEffect

Property Type
levels number

SharpenEffect#

Extends ScreenEffect

Property Type
amount number

FogEffect#

Extends ScreenEffect

Property Type
baseHeight number
color Color
density number
heightFalloff number
sky boolean
start number

OutlineEffect#

Extends ScreenEffect

Property Type
color Color
thickness number
threshold number

TonemapEffect#

Extends ScreenEffect

Property Type
exposure number
tonemapper "aces" | "agx" | "reinhard" | "uncharted" | "none"

PostShader#

Extends ScreenEffect

Property Type
shader string

Zone#

Extends Spatial

Property Type
entered InstanceSignal
left InstanceSignal
cooldown number
enabled boolean
priority number
shape "box" | "sphere" | "cylinder" | "polygon"
size Vector3
soundId string
textChannel Instance?
trackClass string
trackPlayers boolean
trackTag string
volume number

Methods:

  • players(): { Character }
  • occupants(): { Instance }
  • contains(position: Vector3): boolean

ProximityPrompt#

Extends Instance

Property Type
shown InstanceSignal
holdBegan InstanceSignal
hidden InstanceSignal
holdEnded InstanceSignal
triggered InstanceSignal
actionText string
backgroundColor Color
backgroundTransparency number
enabled boolean
holdDuration number
keyColor Color
keys string
maxActivationDistance number
objectText string
offset Vector3
requiresLineOfSight boolean
textColor Color

Light#

Extends Spatial

Property Type
brightness number
color Color
enabled boolean
falloff "smooth" | "linear" | "inverseSquare" | "exponent"
falloffExponent number
godrays number
range number
shader string
shadowStrength number
shadows boolean
temperature number

PointLight#

Extends Light

SpotLight#

Extends Light

Property Type
innerAngle number
outerAngle number

AreaLight#

Extends Light

Property Type
height number
shape "rectangle" | "disc"
width number

TubeLight#

Extends Light

Property Type
length number

Lighting#

Extends Instance

Property Type
ambient Color
bakedOcclusion number
brightness number
clockTime number
environmentDiffuseScale number
environmentSpecularScale number
exposureCompensation number
geographicLatitude number
globalShadows boolean
outdoorAmbient Color
rain number
shadowSoftness number
thunder number
timeScale number
blockShadowDistance number
dayCycle boolean
shadowBias number
shadowFade number
shadowNormalBias number
shadowStrength number

Methods:

  • getMinutesAfterMidnight(): number
  • setMinutesAfterMidnight(minutes: number): ()
  • getSunDirection(): Vector3
  • getMoonDirection(): Vector3
  • getPresetNames(): { PresetName }
  • applyPreset(name: PresetName, seconds: number?): ()

Sky#

Extends Instance

Property Type
celestialBodiesShown boolean
hdri string
moonAngularSize number
moonTextureId string
skyboxBk string
skyboxDn string
skyboxFt string
skyboxLf string
skyboxOrientation Vector3
skyboxRt string
skyboxUp string
starCount number
sunAngularSize number
sunTextureId string

Atmosphere#

Extends Instance

Property Type
color Color
decay Color
density number
glare number
haze number
offset number

Clouds#

Extends Instance

Property Type
color Color
cover number
density number
enabled boolean

Weather#

Extends Instance

Property Type
struck StrikeSignal
intensity number
kind "clear" | "rain" | "snow" | "storm" | "fog"
strikePosition Vector3
strikes number
transition number
wind Vector3

Methods:

  • strike(position: Vector3?): ()

MultiMesh#

Extends Spatial

Property Type
castShadow boolean
dithered boolean
drawDistance number
fadeDistance number
lightingShader string
meshId string
metallic number
roughness number
shader string
shading "flat" | "pbr"
shape "block" | "ball" | "cylinder" | "wedge" | "card"
texture string
vertexShader string

Methods:

  • setCopies(data: buffer, first: number?): ()
  • setArray(name: string, data: buffer): ()

Cape#

Extends Limb

Property Type
touched InstanceSignal
touchEnded InstanceSignal
flap number
lean number
sway number

Humanoid#

Extends Instance

Property Type
died InstanceSignal
healthChanged InstanceSignal
stateChanged InstanceSignal
arrived InstanceSignal
running NumberSignal
jumping BoolSignal
freeFalling BoolSignal
swimming NumberSignal
climbing NumberSignal
seated BoolSignal
platformStanding BoolSignal
damaged NumberSignal
airAcceleration number
airDrag number
airSpeed number
autoRotate boolean
coyoteTime number
fallDrag number
floorMaterial string
followSlopes boolean
gravityScale number
groundAcceleration number
groundDeceleration number
health number
healthRegen number
jump boolean
jumpBuffer number
jumpPower number
maxHealth number
moveDirection Vector3
platformStand boolean
sit boolean
slideAcceleration number
slopeLimit number
sneakMultiplier number
sprintMultiplier number
state "standing" | "running" | "jumping" | "falling" | "swimming" | "flying" | "seated" | "climbing" | "platformStanding" | "dead"
stepHeight number
walkRadius number
walkSpeed number
walkTo Vector3
walking boolean

Methods:

  • move(direction: Vector3, relativeToCamera: boolean?): () (server)
  • moveTo(point: Vector3): () (server)
  • takeDamage(amount: number): () (server)
  • changeState(state: "standing" | "running" | "jumping" | "falling" | "swimming" | "flying" | "seated" | "climbing" | "platformStanding" | "dead"): () (server)
  • getState(): "standing" | "running" | "jumping" | "falling" | "swimming" | "flying" | "seated" | "climbing" | "platformStanding" | "dead"
  • setStateEnabled(state: "standing" | "running" | "jumping" | "falling" | "swimming" | "flying" | "seated" | "climbing" | "platformStanding" | "dead", enabled: boolean): () (server)
  • getStateEnabled(state: "standing" | "running" | "jumping" | "falling" | "swimming" | "flying" | "seated" | "climbing" | "platformStanding" | "dead"): boolean
  • equipTool(tool: Tool): () (server)
  • unequipTools(): () (server)
  • applyDescription(description: { [string]: any }): () (server)
  • getAppliedDescription(): { [string]: any }

Wings#

Extends Instance

Property Type
skin string
worn boolean
x number
y number
z number

Value#

Extends Instance

NumberValue#

Extends Value

Property Type
value number

StringValue#

Extends Value

Property Type
value string

BoolValue#

Extends Value

Property Type
value boolean

Vector3Value#

Extends Value

Property Type
value Vector3

ColorValue#

Extends Value

Property Type
value Color

ObjectValue#

Extends Value

Property Type
value Instance?

Remote#

Extends Instance

Property Type
onServer RemoteServerSignal
onServerPlayer RemotePlayerSignal
onClient AnySignal
accepts string

UnreliableRemote#

Extends Remote

Property Type
onServer RemoteServerSignal
onClient AnySignal

RemoteFunction#

Extends Instance

Property Type
accepts string
timeout number
onServerInvoke ((player: Player, ...any) -> ...any)?
onClientInvoke ((...any) -> ...any)?

Methods:

  • invokeServer(...any): ...any (client)
  • invokeClient(player: Player, ...any): ...any (server)

ScreenGui#

Extends Instance

Property Type
designScaling "fit" | "fitWidth" | "fitHeight" | "expand"
designSize Vector3
displayOrder number
enabled boolean
font string

BillboardGui#

Extends Instance

Property Type
adornee Instance?
alwaysOnTop boolean
enabled boolean
font string
maxDistance number
offset Vector3
pixelsPerMetre number
size UDim2

SurfaceGui#

Extends Instance

Property Type
adornee Instance?
alwaysOnTop boolean
enabled boolean
face "front" | "back" | "left" | "right" | "top" | "bottom"
font string
maxDistance number
pixelsPerMetre number

GuiObject#

Extends Instance

Property Type
absolutePosition Vector3 (read-only)
absoluteSize Vector3 (read-only)
anchorX number
anchorY number
automaticSize "none" | "x" | "y" | "xy"
backgroundColor Color
backgroundTransparency number
borderColor Color
borderSize number
clipsDescendants boolean
cornerRadius number
layoutOrder number
mouseButton1Down PointerSignal
mouseButton1Up PointerSignal
mouseButton2Click PointerSignal
mouseEnter InstanceSignal
mouseLeave InstanceSignal
mouseMoved PointerSignal
mouseWheelBackward PointerSignal
mouseWheelForward PointerSignal
position UDim2
rotation number
size UDim2
visible boolean
zIndex number

Frame#

Extends GuiObject

TextLabel#

Extends GuiObject

Property Type
font string
maxVisibleGraphemes number
richText boolean
text string
textBounds Vector3 (read-only)
textColor Color
textScaled boolean
textShadow boolean
textSize number
textTransparency number
textWrapped boolean
textXAlignment "left" | "center" | "right"
textYAlignment "top" | "center" | "bottom"

TextButton#

Extends TextLabel

Property Type
activated InstanceSignal
autoButtonColor boolean
hovered boolean
pressed boolean

TextBox#

Extends TextLabel

Property Type
clearTextOnFocus boolean
cursorPosition number
focused AnySignal
focusLost FocusLostSignal
multiLine boolean
placeholderColor Color
placeholderText string
selectionStart number
textEditable boolean

Methods:

  • captureFocus(): ()
  • releaseFocus(): ()
  • isFocused(): boolean

ImageLabel#

Extends GuiObject

Property Type
blendMode "normal" | "additive"
flipX boolean
flipY boolean
image string
imageColor Color
imageRectOffset Vector3
imageRectSize Vector3
imageTransparency number
resampleMode "default" | "pixelated"
scaleType "stretch" | "fit" | "crop" | "tile" | "slice"
sliceMax Vector3
sliceMin Vector3
sliceScale number
tileOffset Vector3
tileSize UDim2

ImageButton#

Extends ImageLabel

Property Type
activated InstanceSignal
autoButtonColor boolean
hovered boolean
hoverImage string
pressed boolean
pressedImage string

Slider#

Extends GuiObject

Property Type
dragEnded NumberSignal
dragging boolean
fillColor Color
fillDirection "vertical" | "horizontal"
fillImage string
fillTransparency number
grabberColor Color
grabberImage string
grabberSize Vector3
hovered boolean
maxValue number
minValue number
step number
value number
valueChanged NumberSignal

CheckBox#

Extends GuiObject

Property Type
autoButtonColor boolean
checkColor Color
checked boolean
checkedImage string
hovered boolean
pressed boolean
toggled BoolSignal
uncheckedImage string

VideoFrame#

Extends GuiObject

Property Type
played InstanceSignal
paused InstanceSignal
ended InstanceSignal
didLoop InstanceSignal
loaded InstanceSignal
flipX boolean
flipY boolean
isLoaded boolean (read-only)
looped boolean
playing boolean
resolution Vector3 (read-only)
timeLength number (read-only)
timePosition number
video string
videoColor Color
videoTransparency number
volume number

Methods:

  • play(): ()
  • pause(): ()

ScrollingFrame#

Extends GuiObject

Property Type
absoluteCanvasSize Vector3 (read-only)
absoluteWindowSize Vector3 (read-only)
automaticCanvasSize "none" | "x" | "y" | "xy"
canvasPosition Vector3
canvasSize UDim2
scrollBarImageColor Color
scrollBarImageTransparency number
scrollBarThickness number
scrollingDirection "x" | "y" | "xy"
scrollingEnabled boolean

CanvasGroup#

Extends GuiObject

Property Type
groupColor Color
groupTransparency number

UIComponent#

Extends Instance

UILayout#

Extends UIComponent

Property Type
fillDirection "vertical" | "horizontal"
horizontalAlignment "left" | "center" | "right"
sortOrder "layoutOrder" | "name"
verticalAlignment "top" | "center" | "bottom"

UIListLayout#

Extends UILayout

Property Type
padding UDim2
wraps boolean

UIGridLayout#

Extends UILayout

Property Type
cellPadding UDim2
cellSize UDim2
fillDirectionMaxCells number
startCorner "topLeft" | "topRight" | "bottomLeft" | "bottomRight"

UIPadding#

Extends UIComponent

Property Type
paddingBottom UDim2
paddingLeft UDim2
paddingRight UDim2
paddingTop UDim2

UIAspectRatioConstraint#

Extends UIComponent

Property Type
aspectRatio number
aspectType "fitWithinMaxSize" | "scaleWithParentSize"
dominantAxis "width" | "height"

UISizeConstraint#

Extends UIComponent

Property Type
maxSize Vector3
minSize Vector3

UIScale#

Extends UIComponent

Property Type
scale number

UIStroke#

Extends UIComponent

Property Type
applyStrokeMode "contextual" | "border"
color Color
enabled boolean
thickness number
transparency number

UIGradient#

Extends UIComponent

Property Type
enabled boolean
endColor Color
endTransparency number
keypoints string
offset Vector3
rotation number
startColor Color
startTransparency number

Methods:

  • setKeypoints(keypoints: { GradientKeypoint }): ()
  • getKeypoints(): { GradientKeypoint }

UICorner#

Extends UIComponent

Property Type
cornerRadius UDim2

ViewportFrame#

Extends GuiObject

Property Type
ambient Color
camera Instance?
flipX boolean
flipY boolean
imageColor Color
imageTransparency number
lightColor Color
lightDirection Vector3
resolutionScale number
updateRate number

Methods:

  • screenRay(x: number, y: number): (Vector3, Vector3)
  • pick(x: number, y: number, range: number?): (Instance?, Vector3?)

Sound#

Extends Instance

Property Type
ended InstanceSignal
loaded InstanceSignal
played InstanceSignal
bus string
event string
fadeIn number
isLoaded boolean (read-only)
looped boolean
maxDistance number
minDistance number
paused boolean
pitch number
playbackLoudness number (read-only)
playing boolean
plays number
priority number
rollOff number
soundId string
stream boolean
timeLength number (read-only)
timePosition number
volume number

Methods:

  • play(): ()
  • stop(): ()
  • pause(): ()
  • resume(): ()

SoundBus#

Extends Instance

Property Type
bus string
lowPass number
muted boolean
volume number

SoundEffect#

Extends Instance

Property Type
enabled boolean
priority number

ReverbSoundEffect#

Extends SoundEffect

Property Type
decayTime number
density number
diffusion number
dryLevel number
wetLevel number

EqualizerSoundEffect#

Extends SoundEffect

Property Type
highGain number
lowGain number
midGain number
midHigh number
midLow number

DistortionSoundEffect#

Extends SoundEffect

Property Type
level number

EchoSoundEffect#

Extends SoundEffect

Property Type
delay number
dryLevel number
feedback number
wetLevel number

PitchShiftSoundEffect#

Extends SoundEffect

Property Type
octave number

CompressorSoundEffect#

Extends SoundEffect

Property Type
attack number
makeupGain number
ratio number
release number
threshold number

ChorusSoundEffect#

Extends SoundEffect

Property Type
depth number
mix number
rate number

FlangeSoundEffect#

Extends SoundEffect

Property Type
depth number
mix number
rate number

TremoloSoundEffect#

Extends SoundEffect

Property Type
depth number
duty number
frequency number

Script#

Extends Instance

Property Type
code string
enabled boolean
source string

LocalScript#

Extends Instance

Property Type
code string
enabled boolean
source string

ModuleScript#

Extends Instance

Property Type
code string
source string

InputAction#

Extends Instance

Property Type
began InstanceSignal
ended InstanceSignal
enabled boolean
keys string

ClickDetector#

Extends Instance

Property Type
mouseClick PlayerSignal
rightMouseClick PlayerSignal
mouseHoverEnter PlayerSignal
mouseHoverLeave PlayerSignal
cursorIcon string
maxActivationDistance number

CollisionGroup#

Extends Instance

Property Type
ignores string

ChatWindow#

Extends Instance

Property Type
anchorX number
anchorY number
animationTime number
backdrop "always" | "focused" | "never"
backgroundColor Color
backgroundTransparency number
cornerRadius number
easing "linear" | "sine" | "quad" | "cubic" | "quart" | "quint" | "expo" | "circ" | "back" | "elastic" | "bounce"
enabled boolean
enterAnimation "none" | "fade" | "slideLeft" | "slideRight" | "slideUp" | "slideDown" | "pop" | "typewriter"
exitAnimation "none" | "fade" | "slideLeft" | "slideRight" | "slideUp" | "slideDown" | "pop" | "typewriter"
fadeTime number
font string
hideAnimation "none" | "fade" | "slideLeft" | "slideRight" | "slideUp" | "slideDown" | "pop" | "typewriter"
horizontalAlignment "left" | "center" | "right"
lineBackgroundColor Color
lineBackgroundTransparency number
lineCornerRadius number
lineFitsText boolean
lineGap number
linePaddingX number
linePaddingY number
maxMessages number
padding number
position UDim2
prefixColor Color
shader string
size UDim2
textColor Color
textShadow boolean
textSize number
textStrokeColor Color
textStrokeTransparency number
timestampColor Color
timestampFormat string
timestamps boolean
verticalAlignment "top" | "center" | "bottom"
visible boolean
visibleTime number

ChatCommand#

Extends Instance

Property Type
invoked ChatCommandSignal
triggers string

BubbleChat#

Extends Instance

Property Type
alwaysOnTop boolean
animation "none" | "fade" | "slideLeft" | "slideRight" | "slideUp" | "slideDown" | "pop" | "typewriter"
animationTime number
backgroundColor Color
backgroundTransparency number
cornerRadius number
enabled boolean
font string
maxBubbles number
maxDistance number
maxWidth number
offset Vector3
padding number
pixelsPerMetre number
tail boolean
textColor Color
textSize number
visibleTime number

TextChannel#

Extends Instance

Property Type
shouldDeliver ((...any) -> ...any)?
shouldSend ((...any) -> ...any)?
onIncoming ((...any) -> ...any)?
messageReceived ChatMessageSignal
autoJoin boolean
color Color
displayName string
maxLength number
slowMode number
richText string

TextSource#

Extends Instance

Property Type
body Instance?
canSend boolean
player string
richText string

ChatInputBar#

Extends Instance

Property Type
autocomplete boolean
backgroundColor Color
backgroundTransparency number
enabled boolean
maxLength number
placeholder string
placeholderColor Color
targetChannel Instance?
textColor Color

ChatTabs#

Extends Instance

Property Type
backgroundColor Color
enabled boolean
selectedColor Color
textColor Color
unreadColor Color

ChatTextShader#

Extends Instance

Property Type
shader string

Joint#

Extends Instance

Property Type
c0 CFrame
c1 CFrame
part0 Instance?
part1 Instance?
scale Vector3
transform CFrame

Motor#

Extends Joint

Model#

Extends Spatial

Property Type
primaryPart Instance?
scale number

Methods:

  • getBoundingBox(): (CFrame, Vector3)
  • getScale(): number
  • scaleTo(scale: number): ()

ForceField#

Extends Instance

Property Type
visible boolean

PathfindingModifier#

Extends Instance

Property Type
label string
passThrough boolean

Extends Instance

Property Type
attachment0 Instance?
attachment1 Instance?
bidirectional boolean
label string

Tool#

Extends Instance

Property Type
activated InstanceSignal
deactivated InstanceSignal
equipped InstanceSignal
unequipped InstanceSignal
canBeDropped boolean
enabled boolean
grip CFrame
item string
manualActivationOnly boolean
requiresHandle boolean
toolTip string

Methods:

  • activate(): ()
  • deactivate(): ()

A part named Handle inside the tool is held in the right hand. See Tools.

Team#

Extends Instance

Property Type
playerAdded PlayerSignal (server)
playerRemoved PlayerSignal (server)
autoAssignable boolean
teamColor Color

Methods:

  • getPlayers(): { Player }

On a client getPlayers answers with the local player alone, and only while they are on the team. See Teams.

Leaderboard#

Extends Instance

Made by the engine at the root of the world, and holds one Leaderstats per player. Sent to every player whatever the streaming radius, and out of the world: not drawn, not found by queries, not saved into a scene. See Leaderstats.

Leaderstats#

Extends Instance

Property Type
owner string

Named after the player, and reached as player.leaderstats. The Value children are what the Tab list shows.

ReplicatedStorage#

Extends Instance

Sent to players. Scripts inside do not run and parts inside are not in the world. See Containers.

ServerStorage#

Extends Instance

Never sent to players. Scripts inside do not run and parts inside are not in the world.

ServerScriptService#

Extends Instance

Never sent to players. Scripts inside run; parts inside are not in the world.

StarterGui#

Extends Instance

A container for guis. Everything inside it draws and runs as it would anywhere else.

StarterPlayerScripts#

Extends Instance

A container for LocalScripts. Everything inside it runs as it would anywhere else.

StarterCharacterScripts#

Extends Instance

Its children are copied into each new body a player gets. The originals do not run.

Backpack#

Extends Instance

Every body has one, named backpack. The tools inside it are carried, and out of the world.

StarterPack#

Extends Instance

The tools inside every StarterPack are copied into each new body a player gets. They are out of the world themselves, and their scripts do not run.

WeldConstraint#

Extends Instance

Property Type
active boolean
enabled boolean
part0 Instance?
part1 Instance?

Constraint#

Extends Instance

Property Type
active boolean
attachment0 Instance?
attachment1 Instance?
collideConnected boolean
color Color
enabled boolean
visible boolean

HingeConstraint#

Extends Constraint

Property Type
actuatorType "none" | "motor" | "servo"
angularSpeed number
angularVelocity number
currentAngle number
limitsEnabled boolean
lowerAngle number
motorMaxTorque number
servoMaxTorque number
targetAngle number
upperAngle number

PrismaticConstraint#

Extends Constraint

Property Type
actuatorType "none" | "motor" | "servo"
currentPosition number
limitsEnabled boolean
lowerLimit number
motorMaxForce number
servoMaxForce number
speed number
targetPosition number
upperLimit number
velocity number

BallSocketConstraint#

Extends Constraint

Property Type
limitsEnabled boolean
twistLimitsEnabled boolean
twistLowerAngle number
twistUpperAngle number
upperAngle number

RopeConstraint#

Extends Constraint

Property Type
currentDistance number
length number
mesh string
meshLength number
meshTwist number
restitution number
thickness number
winchEnabled boolean
winchForce number
winchResponsiveness number
winchSpeed number
winchTarget number

SpringConstraint#

Extends Constraint

Property Type
coils number
currentLength number
damping number
freeLength number
limitsEnabled boolean
maxLength number
minLength number
radius number
stiffness number
thickness number

RodConstraint#

Extends Constraint

Property Type
currentDistance number
length number
thickness number

AlignPosition#

Extends Constraint

Property Type
applyAtCenterOfMass boolean
maxForce number
maxVelocity number
mode "oneAttachment" | "twoAttachment"
position Vector3
reactionForceEnabled boolean
responsiveness number
rigidityEnabled boolean

AlignOrientation#

Extends Constraint

Property Type
cframe CFrame
maxAngularVelocity number
maxTorque number
mode "oneAttachment" | "twoAttachment"
primaryAxisOnly boolean
reactionTorqueEnabled boolean
responsiveness number
rigidityEnabled boolean

LinearVelocity#

Extends Constraint

Property Type
forceLimitsEnabled boolean
lineDirection Vector3
lineVelocity number
maxForce number
planeVelocity Vector3
primaryTangentAxis Vector3
reactionForceEnabled boolean
relativeTo "world" | "attachment0" | "attachment1"
secondaryTangentAxis Vector3
vectorVelocity Vector3
velocityConstraintMode "vector" | "line" | "plane"

AngularVelocity#

Extends Constraint

Property Type
angularVelocity Vector3
maxTorque number
reactionTorqueEnabled boolean
relativeTo "world" | "attachment0" | "attachment1"

VectorForce#

Extends Constraint

Property Type
applyAtCenterOfMass boolean
force Vector3
relativeTo "world" | "attachment0" | "attachment1"

Torque#

Extends Constraint

Property Type
relativeTo "world" | "attachment0" | "attachment1"
torque Vector3

ParticleEmitter#

Extends Instance

Property Type
acceleration Vector3
brightness number
colorEnd Color
colorStart Color
drag number
emissionDirection "front" | "back" | "left" | "right" | "top" | "bottom"
emitted number
enabled boolean
lifetimeMax number
lifetimeMin number
lightEmission number
lightInfluence number
lockedToPart boolean
orientation "facingCamera" | "facingCameraWorldUp" | "velocityParallel" | "velocityPerpendicular"
rate number
rotSpeedMax number
rotSpeedMin number
rotationMax number
rotationMin number
shapeStyle "volume" | "surface"
sizeEnd number
sizeStart number
speedMax number
speedMin number
spreadAngle number
texture string
timeScale number
transparencyEnd number
transparencyStart number

Methods:

  • emit(count: number?): ()

Beam#

Extends Instance

Property Type
attachment0 Instance?
attachment1 Instance?
brightness number
colorEnd Color
colorStart Color
curveSize0 number
curveSize1 number
enabled boolean
faceCamera boolean
lightEmission number
lightInfluence number
segments number
texture string
textureLength number
textureMode "stretch" | "wrap" | "static"
textureSpeed number
transparencyEnd number
transparencyStart number
width0 number
width1 number

Trail#

Extends Instance

Property Type
attachment0 Instance?
attachment1 Instance?
brightness number
clears number
colorEnd Color
colorStart Color
enabled boolean
faceCamera boolean
lifetime number
lightEmission number
lightInfluence number
maxLength number
minLength number
texture string
textureLength number
textureMode "stretch" | "wrap" | "static"
transparencyEnd number
transparencyStart number
widthScaleEnd number
widthScaleStart number

Methods:

  • clear(): ()

Highlight#

Extends Instance

Property Type
adornee Instance?
depthMode "alwaysOnTop" | "occluded"
enabled boolean
fillColor Color
fillTransparency number
outlineColor Color
outlineTransparency number

Decal#

Extends Instance

Property Type
color Color
face "front" | "back" | "left" | "right" | "top" | "bottom"
texture string
transparency number
zIndex number

Explosion#

Extends Instance

Property Type
hit ExplosionSignal
blastPressure number
blastRadius number
destroyJointRadiusPercent number
explosionType "noCraters" | "craters"
position Vector3
visible boolean

Texture#

Extends Decal

Property Type
offsetStudsU number
offsetStudsV number
studsPerTileU number
studsPerTileV number

Fire#

Extends Instance

Property Type
color Color
enabled boolean
heat number
secondaryColor Color
size number
timeScale number

Smoke#

Extends Instance

Property Type
color Color
enabled boolean
opacity number
riseVelocity number
size number
timeScale number

Sparkles#

Extends Instance

Property Type
enabled boolean
sparkleColor Color
timeScale number

SelectionBox#

Extends Instance

Property Type
adornee Instance?
color Color
lineThickness number
surfaceColor Color
surfaceTransparency number
transparency number
visible boolean

SelectionSphere#

Extends Instance

Property Type
adornee Instance?
color Color
surfaceColor Color
surfaceTransparency number
transparency number
visible boolean

Actor#

Extends Model

Methods:

  • sendMessage(topic: string, ...: any): ()
  • bindToMessage(topic: string, handler: (...any) -> ()): Connection
  • bindToMessageParallel(topic: string, handler: (...any) -> ()): Connection

Scripts inside an actor run in a VM of their own. See Parallel Luau.

CharacterJoints#

Extends Folder

Property Type
root Motor
cape Motor
spinInner Motor
spinOuter Motor
rightWing Motor
leftWing Motor
head Motor
torso Motor
rightArm Motor
leftArm Motor
rightLeg Motor
leftLeg Motor

BodyLimb#

Extends Limb

Property Type
overlay Limb

Blocks#

Property Type
changed BlocksChangedSignal

Methods:

  • get(at: Vector3): string
  • set(at: Vector3, block: string): ()
  • fill(from: Vector3, to: Vector3, block: string): number
  • raycast(from: Vector3, direction: Vector3, range: number?, options: { fluids: boolean? }?): (string?, Vector3?, number?, Vector3?)
  • isSolid(at: Vector3): boolean
  • isAir(at: Vector3): boolean
  • isFluid(at: Vector3): boolean
  • lightAt(at: Vector3): number
  • topAt(x: number, z: number): number
  • topsIn(from: Vector3, to: Vector3, only: { string }?): (buffer, buffer, { string })
  • find(block: string, centre: Vector3, radius: number, limit: number?): { Vector3 }
  • count(block: string, from: Vector3, to: Vector3): number
  • replace(from: string, to: string, a: Vector3, b: Vector3): number
  • sphere(centre: Vector3, radius: number, block: string, hollow: boolean?): number
  • cylinder(base: Vector3, radius: number, height: number, block: string, hollow: boolean?): number
  • line(from: Vector3, to: Vector3, block: string): number
  • hollowBox(from: Vector3, to: Vector3, block: string): number
  • copy(from: Vector3, to: Vector3): BlockRegion
  • paste(region: BlockRegion, at: Vector3, options: { rotate: number?, mirror: ("x" | "z")?, skipAir: boolean? }?): number
  • getState(at: Vector3): (string, { [string]: string | number | boolean })
  • setState(at: Vector3, block: string, state: { [string]: string | number | boolean }?): ()
  • withState(block: string, state: { [string]: string | number | boolean }): string
  • read(from: Vector3, to: Vector3): ({ string }, buffer)
  • write(from: Vector3, to: Vector3, palette: { string }, cells: buffer): number
  • decode(data: buffer): BlockRegion

Tags#

Methods:

  • tagged(tag: string): { Instance }
  • added(tag: string): InstanceSignal
  • removed(tag: string): InstanceSignal

ChatCommandSignal#

Property Type
count number

Methods:

  • connect(handler: (body: Character?, text: string, args: { string }) -> ()): Connection
  • connectParallel(handler: (body: Character?, text: string, args: { string }) -> ()): Connection
  • once(handler: (body: Character?, text: string, args: { string }) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (body: Character?, text: string, args: { string }) -> ()): Connection

ChatMessageSignal#

Property Type
count number

Methods:

  • connect(handler: (message: ChatMessage) -> ()): Connection
  • connectParallel(handler: (message: ChatMessage) -> ()): Connection
  • once(handler: (message: ChatMessage) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (message: ChatMessage) -> ()): Connection

Chat#

Property Type
onBubble ((message: ChatMessage) -> (boolean | { [string]: any })?)?
onIncoming ((message: ChatMessage) -> { [string]: any }?)?
shouldSend ((message: ChatMessage) -> boolean?)?
messageReceived ChatMessageSignal
sending ChatMessageSignal
edited ChatMessageSignal
deleted AnySignal
linkClicked AnySignal
bodyClicked AnySignal
messageClicked ChatMessageSignal
opened AnySignal
closed AnySignal
typing AnySignal

Methods:

  • send(channelOrText: Instance | string, textOrOptions: (string | { [string]: any })?, options: { [string]: any }?): number
  • system(text: string, options: { [string]: any }?): number
  • edit(id: number, changes: string | { [string]: any }): ()
  • delete(id: number): ()
  • addPlayer(channel: Instance, body: Instance): ()
  • removePlayer(channel: Instance, body: Instance): ()
  • open(prefill: string?): ()
  • close(): ()
  • isOpen(): boolean
  • clear(): ()
  • setTarget(channel: Instance?): ()
  • getTarget(): Instance?
  • messages(): { ChatMessage }
  • bubble(target: Instance, text: string, look: { [string]: any }?): ()
  • function escape(text: string): string
  • function plain(text: string): string
  • function bodyLink(body: Instance, label: string?): string
  • function itemLink(id: string, count: number?): string
  • function within(range: number): ChatCheck
  • function all(...: ChatCheck): ChatCheck
  • function any(...: ChatCheck): ChatCheck
  • function distance(message: ChatMessage, source: Instance): number?
  • function audible(range: number): ChatCheck
  • function sameTag(tag: string): ChatCheck

History#

Methods:

  • now(): number
  • viewTime(body: Instance): number
  • rewind(time: number, query: () -> ...any): ...any
  • function rewind<T...>(self, time: number, query: () -> T...): T...

ProximityWatcher#

Property Type
entered AnySignal
left AnySignal
near boolean

Methods:

  • stop(): ()

Proximity#

Methods:

  • closestInteractable(body: Instance): (Instance?, number?)
  • watch(a: Instance, b: Instance, range: number): ProximityWatcher
  • function falloff(distance: number, min: number, max: number, rolloff: number?): number

Pathfinding#

Methods:

  • find(from: Vector3, to: Vector3, options: PathOptions?): { Vector3 }?
  • isReachable(from: Vector3, to: Vector3, options: PathOptions?): boolean
  • randomPointNear(point: Vector3, radius: number, options: PathOptions?): Vector3?
  • create(options: PathOptions?): Path

BlockRegion#

Property Type
size Vector3

Methods:

  • palette(): { string }
  • count(): number
  • rotate(quarterTurns: number): BlockRegion
  • mirror(axis: "x" | "z"): BlockRegion
  • encode(): buffer

BlocksChangedSignal#

Property Type
count number

Methods:

  • connect(handler: (from: Vector3, to: Vector3, count: number) -> ()): Connection
  • connectParallel(handler: (from: Vector3, to: Vector3, count: number) -> ()): Connection
  • once(handler: (from: Vector3, to: Vector3, count: number) -> ()): Connection
  • every(n: number, handler: (from: Vector3, to: Vector3, count: number) -> ()): Connection
  • wait(timeout: number?): ...any

Path#

Property Type
status PathStatus
blocked PathBlockedSignal
unblocked PathBlockedSignal

Methods:

  • compute(from: Vector3, to: Vector3): PathStatus
  • waypoints(): { PathWaypoint }
  • checkOcclusion(start: number?): number

PathBlockedSignal#

Property Type
count number

Methods:

  • connect(handler: (index: number) -> ()): Connection
  • once(handler: (index: number) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (index: number) -> ()): Connection
  • connectParallel(handler: (index: number) -> ()): Connection

Debug#

Methods:

  • drawLine(from: Vector3, to: Vector3, color: Color?, seconds: number?): ()
  • drawRay(from: Vector3, direction: Vector3, color: Color?, seconds: number?): ()
  • drawBox(frame: CFrame, size: Vector3, color: Color?, seconds: number?): ()
  • drawSphere(centre: Vector3, radius: number, color: Color?, seconds: number?): ()
  • drawPoint(at: Vector3, color: Color?, seconds: number?): ()
  • label(at: Vector3, text: string, color: Color?, seconds: number?): ()
  • watch(name: string, value: any): ()
  • clear(): ()
  • queryStats(): { queries: number, partsTested: number }
  • profile(): { [string]: { milliseconds: number, calls: number, worst: number } }
  • passTimes(): { [string]: { cpu: number, gpu: number?, stage: string } }
  • showPassTimes(shown: boolean?): ()

Zones#

Methods:

  • at(position: Vector3): { Instance }

Debris#

Methods:

  • addItem(instance: Instance, seconds: number?): ()

Game#

Property Type
world Instance
zones Zones
proximity Proximity
path Pathfinding
debug Debug
history History
players Players
tags Tags
chat Chat
blocks Blocks
debris Debris
isServer boolean
isClient boolean
isStudio boolean
renderPriority { first: number, input: number, camera: number, character: number, last: number }
stepped StepSignal
renderStepped StepSignal
reloaded AnySignal
persist { [string]: any }
gravity number (set on the server)
pauseRequested PauseSignal (client)
paused boolean (client)
exported boolean (client)
loading Loading
serverId string (server)
placeId string (server)
gameId string (server)
reservedCode string? (server)

Methods:

  • bindToClose(handler: () -> ()): ()
  • teleport(players: { Player }, target: string | ReservedServer | { server: string }, data: any?): () (server)

Methods (client):

  • quit(): ()
  • openSettings(): ()
  • bindToRenderStep(name: string, priority: number, handler: (delta: number) -> ()): ()
  • unbindFromRenderStep(name: string): ()

Settings#

Property Type
fov number
fullscreen boolean
vsync boolean
maxFps number
guiScale number
renderDistance number
sensitivity number

Methods:

  • volume(category: string): number
  • setVolume(category: string, value: number): ()
  • volumes(): { string }
  • actions(): { string }
  • keyOf(action: string): string
  • bind(action: string, key: string): ()
  • save(): ()

LoadingFailedSignal#

Property Type
count number

Methods:

  • connect(handler: (reason: string, kind: LoadingFailure) -> ()): Connection
  • connectParallel(handler: (reason: string, kind: LoadingFailure) -> ()): Connection
  • once(handler: (reason: string, kind: LoadingFailure) -> ()): Connection
  • every(n: number, handler: (reason: string, kind: LoadingFailure) -> ()): Connection
  • wait(timeout: number?): ...any

Loading#

Property Type
phase LoadingPhase
progress number
message string
server string
hold boolean
changed AnySignal
ready AnySignal
failed LoadingFailedSignal

Methods:

  • finish(): ()
  • retry(): ()
  • quit(): ()
  • openDownload(): ()

WindowSizeSignal#

Property Type
count number

Methods:

  • connect(handler: (width: number, height: number) -> ()): Connection
  • connectParallel(handler: (width: number, height: number) -> ()): Connection
  • once(handler: (width: number, height: number) -> ()): Connection
  • every(n: number, handler: (width: number, height: number) -> ()): Connection
  • wait(timeout: number?): ...any

WindowFocusSignal#

Property Type
count number

Methods:

  • connect(handler: (focused: boolean) -> ()): Connection
  • connectParallel(handler: (focused: boolean) -> ()): Connection
  • once(handler: (focused: boolean) -> ()): Connection
  • every(n: number, handler: (focused: boolean) -> ()): Connection
  • wait(timeout: number?): ...any

MainWindow#

Property Type
title string
icon string
fullscreen boolean
width number
height number
x number
y number
canMove boolean
minWidth number
minHeight number
resizable boolean
focused boolean
minimized boolean
visible boolean
opacity number
cursor string
cursorHotspot Vector3
cursorVisible boolean
fps number
displayWidth number
displayHeight number
resized WindowSizeSignal
moved WindowSizeSignal
focusChanged WindowFocusSignal
closing AnySignal

Methods:

  • open(properties: { [string]: any }?): Window (called with a dot)
  • overlay(properties: { [string]: any }?): Window (called with a dot)
  • resize(width: number, height: number): ()
  • moveTo(x: number, y: number): ()
  • center(): ()
  • monitors(): { { [string]: any } }
  • flash(): ()
  • setClipboard(text: string): ()
  • preventClose(): ()
  • screenshot(name: string?): string

Input#

Property Type
mouseX number
mouseY number
mouseDeltaX number
mouseDeltaY number
screenWidth number
screenHeight number
mouseLocked boolean
sensitivity number
inputBegan InputSignal
inputChanged InputSignal
inputEnded InputSignal
gamepadConnected GamepadSignal
gamepadDisconnected GamepadSignal
mouseBehavior MouseBehavior
mouseIconEnabled boolean

Methods:

  • down(action: string): boolean
  • lockMouse(): ()
  • releaseMouse(): ()
  • isKeyDown(key: string): boolean
  • isMouseButtonPressed(button: string | number): boolean
  • getKeysPressed(): { InputObject }
  • keyName(key: string): string
  • getConnectedGamepads(): { number }
  • getGamepadState(gamepad: number?): GamepadState?
  • bindAction(name: string, handler: ActionHandler, ...string): ()
  • bindActionAtPriority(name: string, handler: ActionHandler, priority: number, ...string): ()
  • unbindAction(name: string): ()
  • getBoundActions(): { string }

InputObject#

Property Type
inputType string
keyCode string
state InputState
position Vector3
delta Vector3

GamepadState#

Property Type
gamepad number
leftStick Vector3
rightStick Vector3
leftTrigger number
rightTrigger number
buttons { [string]: boolean }

InputSignal#

Property Type
count number

Methods:

  • connect(handler: (input: InputObject, gameProcessed: boolean) -> ()): Connection
  • connectParallel(handler: (input: InputObject, gameProcessed: boolean) -> ()): Connection
  • once(handler: (input: InputObject, gameProcessed: boolean) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (input: InputObject, gameProcessed: boolean) -> ()): Connection

GamepadSignal#

Property Type
count number

Methods:

  • connect(handler: (gamepad: number) -> ()): Connection
  • connectParallel(handler: (gamepad: number) -> ()): Connection
  • once(handler: (gamepad: number) -> ()): Connection
  • wait(timeout: number?): ...any
  • every(n: number, handler: (gamepad: number) -> ()): Connection

Voice#

Methods:

  • stop(): ()
  • setVolume(volume: number): ()
  • setPitch(pitch: number): ()
  • fade(volume: number, seconds: number): ()
  • fadeOut(seconds: number): ()
  • setPosition(at: Vector3): ()
  • isPlaying(): boolean

Music#

Methods:

  • setState(name: string, seconds: number?): ()
  • transitionTo(name: string, seconds: number?, quantize: string?): ()
  • setLayer(layer: number, volume: number): ()
  • blend(intensity: number): ()
  • stop(seconds: number?): ()

StoreSession#

Property Type
data { [string]: any }

Methods:

  • save(): ()
  • release(): ()

Store#

Methods:

  • get(key: string | number): any
  • set(key: string | number, value: any): ()
  • remove(key: string | number): ()
  • update(key: string | number, change: (old: any) -> any): any
  • keys(prefix: string?, limit: number?): { string }
  • session(key: string | number): StoreSession

OrderedStore#

Methods:

  • get(key: string | number): number?
  • set(key: string | number, value: number): ()
  • increment(key: string | number, delta: number?): number
  • remove(key: string | number): ()
  • getSorted(ascending: boolean, limit: number?, min: number?, max: number?): { { key: string, value: number } }

MemoryStore#

The memory global. Server only. See Memory stores.

Methods:

  • hashMap(name: string): MemoryHashMap
  • sortedMap(name: string): MemorySortedMap
  • queue(name: string, invisibilityTimeout: number?): MemoryQueue

PauseSignal#

Property Type
count number

Methods:

  • connect(handler: (reason: string) -> ()): Connection
  • connectParallel(handler: (reason: string) -> ()): Connection
  • once(handler: (reason: string) -> ()): Connection
  • every(n: number, handler: (reason: string) -> ()): Connection
  • wait(timeout: number?): ...any

MemoryHashMap#

Methods:

  • get(key: string): any?
  • set(key: string, value: any, expiration: number): boolean
  • update(key: string, transform: (old: any?) -> any?, expiration: number): any?
  • remove(key: string): ()
  • list(pageSize: number?, after: string?): { string }

MemorySortedMap#

Methods:

  • get(key: string): (any?, (number | string)?)
  • set(key: string, value: any, expiration: number, sortKey: (number | string)?): boolean
  • update(key: string, transform: (value: any?, sortKey: (number | string)?) -> (any?, (number | string)?), expiration: number): (any?, (number | string)?)
  • remove(key: string): ()
  • getRange(direction: "ascending" | "descending", count: number, exclusiveLowerBound: { key: string?, sortKey: (number | string)? }?, exclusiveUpperBound: { key: string?, sortKey: (number | string)? }?): { { key: string, value: any, sortKey: (number | string)? } }
  • getSize(): number

MemoryQueue#

Methods:

  • addAsync(value: any, expiration: number, priority: number?): ()
  • readAsync(count: number, allOrNothing: boolean?, waitTimeout: number?): ({ any }, string?) (yields)
  • removeAsync(id: string): ()
  • getSize(excludeInvisible: boolean?): number

Http#

Functions:

  • get(url: string, headers: { [string]: string }?): HttpResponse (server)
  • post(url: string, body: string, contentType: string?, headers: { [string]: string }?): HttpResponse (server)
  • request(options: { url: string, method: string?, headers: { [string]: string }?, body: string? }): HttpResponse (server)
  • jsonEncode(value: any): string
  • jsonDecode(text: string): any
  • generateGuid(wrapInBraces: boolean?): string
  • urlEncode(text: string): string

HttpResponse#

Property Type
status number
ok boolean
body string
headers { [string]: string }

Files#

The files global. See Reading files.

Functions:

  • read(path: string): string?
  • exists(path: string): boolean

Xml#

The xml global. See JSON and XML.

Functions:

  • decode(text: string): XmlElement

XmlElement#

Property Type
tag string
attributes { [string]: string }
children { XmlElement }
text string

Messaging#

Methods:

  • publish(topic: string, message: any): ()
  • subscribe(topic: string, handler: (message: any, from: string?) -> ()): Subscription

One board per side. See Talking across the boundary.

ReservedServer#

Property Type
code string
place string

ServerInfo#

Property Type
id string
place string
players number
maxPlayers number
tags { string }

Servers#

Methods:

  • reserve(place: string): ReservedServer
  • list(place: string, options: { tag: string?, limit: number? }?): { ServerInfo }
  • setTags(tags: { string }): ()

The servers global, on the server only. See Servers and games.

Subscription#

Methods:

  • unsubscribe(): ()

SharedTables#

Functions:

  • new(data: { [any]: any }?): SharedTable
  • named(name: string): SharedTable
  • size(table: SharedTable): number
  • clear(table: SharedTable): ()
  • clone(table: SharedTable, deep: boolean?): SharedTable
  • cloneAndFreeze(table: SharedTable, deep: boolean?): SharedTable
  • isFrozen(table: SharedTable): boolean
  • increment(table: SharedTable, key: string | number, delta: number): number
  • update(table: SharedTable, key: string | number, fn: (value: any) -> any): ()

sharedTable(data) is sharedTable.new(data). See Shared tables.

CoreGui#

Functions:

  • setCoreGuiEnabled(name: string, on: boolean): () (client)
  • getCoreGuiEnabled(name: string): boolean (client)
  • sendNotification(notification: Notification): () (client)

name is health, hunger, hotbar, chat, playerList, crosshair, experience or all. See The core interface.

PluginMouseSignal#

Property Type
count number

Methods:

  • connect(handler: (mouse: PluginMouse) -> ()): Connection
  • connectParallel(handler: (mouse: PluginMouse) -> ()): Connection
  • once(handler: (mouse: PluginMouse) -> ()): Connection
  • every(n: number, handler: (mouse: PluginMouse) -> ()): Connection
  • wait(timeout: number?): ...any

PluginToolbar#

Property Type
name string

Methods:

  • button(text: string, tooltip: string?, icon: string?): PluginButton

PluginButton#

Property Type
text string
tooltip string
icon string
active boolean
enabled boolean
click AnySignal

PluginPanel#

Property Type
title string
visible boolean

Methods:

  • onDraw(draw: (ui: PanelUi) -> ()): ()

PanelUi#

Methods:

  • text(text: string): ()
  • muted(text: string): ()
  • heading(text: string): ()
  • button(label: string): boolean
  • input(label: string, value: string): string
  • number(label: string, value: number, step: number?): number
  • slider(label: string, value: number, min: number, max: number): number
  • checkbox(label: string, value: boolean): boolean
  • color(label: string, value: Color): Color
  • choice(label: string, value: string, options: { string }): string
  • separator(): ()
  • sameLine(): ()

PluginSelection#

Property Type
changed AnySignal

Methods:

  • get(): { Instance }
  • set(instances: { Instance }): ()

Plugin#

Property Type
name string
selection PluginSelection
viewportClicked PluginMouseSignal
preview Instance
active boolean

Methods:

  • toolbar(name: string): PluginToolbar
  • command(name: string, handler: () -> ()): ()
  • command(name: string, shortcut: string?, handler: () -> ()): ()
  • panel(title: string, options: PanelOptions?): PluginPanel
  • recording(name: string, changes: () -> ()): ()
  • setting(key: string): any
  • setSetting(key: string, value: any): ()
  • mouse(): PluginMouse
  • activate(on: boolean): ()

Os#

Functions:

  • time(): number
  • clock(): number
  • date(format: string?, when: number?): string
  • difftime(later: number, earlier: number): number

Signal#

Property Type
count number

Methods:

  • connect(handler: (...any) -> ()): Connection
  • connectParallel(handler: (...any) -> ()): Connection
  • once(handler: (...any) -> ()): Connection
  • every(n: number, handler: (...any) -> ()): Connection
  • wait(timeout: number?): ...any
  • fire(...any): ()
  • disconnectAll(): ()

Java#

Methods:

  • function use(name: string): any
  • function class(name: string): any
  • function typeof(value: any): string?
  • function instanceOf(value: any, className: string): boolean

JavaMethod#

Property Type
name string

Methods:

  • before(handler: (self: any, ...any) -> any, options: { when: ((...any) -> boolean)?, once: boolean?, limit: number?, priority: number?, raw: boolean?, ordinal: number? }?): Mixin
  • after(handler: (self: any, result: any, ...any) -> any, options: { when: ((...any) -> boolean)?, once: boolean?, limit: number?, priority: number?, raw: boolean?, ordinal: number? }?): Mixin
  • replace(handler: (original: (...any) -> any, self: any, ...any) -> any, options: { when: ((...any) -> boolean)?, once: boolean?, limit: number?, priority: number?, raw: boolean?, ordinal: number? }?): Mixin
  • args(handler: (...any) -> ...any, options: { when: ((...any) -> boolean)?, once: boolean?, limit: number?, priority: number?, raw: boolean?, ordinal: number? }?): Mixin
  • redirect(call: JavaMethod, handler: (original: (...any) -> any, target: any, ...any) -> any, options: { when: ((...any) -> boolean)?, once: boolean?, limit: number?, priority: number?, raw: boolean?, ordinal: number? }?): Mixin
  • constant(value: number | string, replacement: any, options: { when: ((...any) -> boolean)?, once: boolean?, limit: number?, priority: number?, raw: boolean?, ordinal: number? }?): Mixin
  • variable(slot: string | number, replacement: any, options: { when: ((...any) -> boolean)?, once: boolean?, limit: number?, priority: number?, raw: boolean?, ordinal: number? }?): Mixin
  • overload(...string | number): JavaMethod
  • called: Class.method(self, ...) or Class:staticMethod(...)

JavaField#

Property Type
name string
type string

Methods:

  • changed(handler: (self: any, old: any, new: any) -> any, options: { when: ((...any) -> boolean)?, once: boolean?, limit: number?, priority: number?, raw: boolean?, ordinal: number? }?): Mixin

MixinService#

Methods:

  • function state(name: string | { [string]: any }, defaults: { [string]: any }?): MixinState
  • function hooks(): { Mixin }
  • called: mixin "name" { ... } groups hooks and returns a MixinGroup

Mixin#

Property Type
label string
methods number
calls number
errors number
enabled boolean

Methods:

  • remove(): ()

MixinGroup#

Property Type
name string
enabled boolean
hooks { Mixin }

Methods:

  • remove(): ()

MixinState#

Methods:

  • ref(key: string): MixinStateRef

MixinStateRef#

Property Type
key string
value any

Shaders#

Methods:

  • function patch(targets: string | { string }, spec: { uniforms: { [string]: string }?, vertex: { [string]: any }?, fragment: { [string]: any }? }): ShaderPatch & { [string]: any }

ShaderPatch#

Methods:

  • remove(): ()

EditableMesh#

A mesh a script builds. See EditableMesh.

Property Type
uri string

Methods:

  • addVertex(position: Vector3): number
  • getPosition(vertex: number): Vector3
  • setPosition(vertex: number, position: Vector3): ()
  • addNormal(normal: Vector3?): number
  • getNormal(normal: number): Vector3
  • setNormal(normal: number, value: Vector3): ()
  • resetNormal(normal: number): ()
  • addUV(uv: Vector3): number
  • getUV(uv: number): Vector3
  • setUV(uv: number, value: Vector3): ()
  • addColor(color: Color, transparency: number?): number
  • getColor(color: number): (Color, number)
  • setColor(color: number, value: Color, transparency: number?): ()
  • addTriangle(vertex1: number, vertex2: number, vertex3: number): number
  • removeFace(face: number): ()
  • getFaceVertices(face: number): { number }
  • setFaceVertices(face: number, vertices: { number }): ()
  • getFaceNormals(face: number): { number }
  • setFaceNormals(face: number, normals: { number }): ()
  • getFaceUVs(face: number): { number }
  • setFaceUVs(face: number, uvs: { number }): ()
  • getFaceColors(face: number): { number }
  • setFaceColors(face: number, colors: { number }): ()
  • getVertices(): { number }
  • getFaces(): { number }
  • getNormals(): { number }
  • getUVs(): { number }
  • getColors(): { number }
  • getVertexFaces(vertex: number): { number }
  • getAdjacentVertices(vertex: number): { number }
  • getAdjacentFaces(face: number): { number }
  • findClosestVertex(point: Vector3): number?
  • findVerticesWithinSphere(center: Vector3, radius: number): { number }
  • findClosestPointOnSurface(point: Vector3): (number?, Vector3?, Vector3?)
  • raycast(origin: Vector3, direction: Vector3, range: number?): (number?, Vector3?, Vector3?)
  • getSize(): Vector3
  • getCenter(): Vector3
  • removeUnused(): ()
  • clear(): ()
  • copy(): EditableMesh
  • destroy(): ()

Meshes#

The meshes global. See EditableMesh.

Functions:

  • create(): EditableMesh
  • load(source: string): EditableMesh (client, yields)

EditableImage#

An image a script draws on. See Images.

Property Type
width number
height number
uri string

Methods:

  • setPixel(x: number, y: number, color: Color, transparency: number?): ()
  • getPixel(x: number, y: number): (Color, number)
  • fill(color: Color, transparency: number?): ()
  • clear(): ()
  • drawRectangle(x: number, y: number, width: number, height: number, color: Color, options: DrawOptions?): ()
  • drawCircle(x: number, y: number, radius: number, color: Color, options: DrawOptions?): ()
  • drawEllipse(x: number, y: number, radiusX: number, radiusY: number, color: Color, options: DrawOptions?): ()
  • drawLine(x1: number, y1: number, x2: number, y2: number, color: Color, options: DrawOptions?): ()
  • drawPolygon(points: { Vector3 } | { number }, color: Color, options: DrawOptions?): ()
  • drawGradient(x: number, y: number, width: number, height: number, from: Color, to: Color, options: GradientOptions?): ()
  • drawImage(image: EditableImage, x: number, y: number, options: ImageDrawOptions?): ()
  • drawImageTransformed(image: EditableImage, x: number, y: number, options: TransformOptions?): ()
  • drawImageProjected(mesh: EditableMesh, image: EditableImage, projection: Projection, options: ProjectOptions?): ()
  • floodFill(x: number, y: number, color: Color, options: FillOptions?): number
  • drawText(text: string, x: number, y: number, color: Color, options: TextOptions?): (number, number) (Minecraft's font, see Text)
  • measureText(text: string, options: TextOptions?): (number, number)
  • readPixels(x: number?, y: number?, width: number?, height: number?): { number }
  • writePixels(x: number, y: number, width: number, height: number, pixels: { number }): ()
  • readPixelsBuffer(x: number?, y: number?, width: number?, height: number?): buffer
  • writePixelsBuffer(x: number, y: number, width: number, height: number, pixels: buffer): ()
  • resize(width: number, height: number, smooth: boolean?): ()
  • crop(x: number, y: number, width: number, height: number): EditableImage
  • copy(): EditableImage
  • flip(direction: "horizontal" | "vertical"): ()
  • rotate(quarterTurns: number): ()
  • destroy(): ()

Images#

The images global. See Images.

Functions:

  • create(width: number, height: number, color: Color?, transparency: number?): EditableImage
  • fromPixels(width: number, height: number, pixels: { number }): EditableImage
  • load(source: string): EditableImage (yields; Minecraft textures on the client only)
  • skin(player: any, part: ("head" | "full")?): EditableImage (client, yields)
  • preload(sources: string | { string }): () (client, yields)
  • isLoaded(source: string): boolean (client)
  • measureText(text: string, options: TextOptions?): (number, number) (client, or a singleplayer server)

Types#

luau
type TweenInfo = { time: number?, easing: string?, direction: string?, repeats: number?,
    reverses: boolean?, delay: number? }
type RayHit = { part: Instance, position: Vector3, distance: number, normal: Vector3 }
type QueryOptions = { exclude: { Instance }?, include: { Instance }?, respectCollides: boolean?, collisionGroup: string?, tag: string?, className: string?, limit: number?, sorted: boolean?,
    ignoreBlocks: boolean? }
type BlockCopy = { size: Vector3, palette: { string }, blocks: { number } }
type ChatMessage = { id: number, text: string, prefix: string, metadata: string, channel: Instance?, source: Instance?, body: Instance?, position: Vector3?, timestamp: number, status: string, [string]: any }
type ChatCheck = (message: ChatMessage, source: Instance) -> boolean
type PathOptions = { partial: boolean?, radius: number?, height: number?, canJump: boolean?,
    canClimb: boolean?, spacing: number?, costs: { [string]: number }? }
type PathAction = "walk" | "jump" | "climb" | "custom"
type PathStatus = "success" | "closest" | "noPath" | "tooFar" | "notComputed"
type PathWaypoint = { position: Vector3, action: PathAction, label: string? }
type GradientKeypoint = { number | Color }
type TimelineKey = { any }
type SharedTable = { [string | number]: any }
type ActionHandler = (name: string, state: "begin" | "change" | "end" | "cancel", input: InputObject) -> ("sink" | "pass")?
type PlayOptions = { volume: number?, pitch: number?, looped: boolean?, bus: string?,
    priority: number?, at: Vector3?, minDistance: number?, maxDistance: number?,
    rollOff: number?, fadeIn: number?, stream: boolean? }
type Notification = { title: string, text: string?, icon: string?, duration: number?,
    button1: string?, button2: string?, callback: ((button: string) -> ())? }
type ImageBlend = "over" | "replace" | "add" | "multiply" | "erase"
type DrawOptions = { transparency: number?, blend: ImageBlend?, smooth: boolean?, filled: boolean?,
    thickness: number?, cornerRadius: number? }
type GradientOptions = { rotation: number?, fromTransparency: number?, toTransparency: number?,
    blend: ImageBlend? }
type ImageDrawOptions = { width: number?, height: number?, sourceX: number?, sourceY: number?,
    sourceWidth: number?, sourceHeight: number?, transparency: number?, blend: ImageBlend?,
    smooth: boolean? }
type TransformOptions = { scaleX: number?, scaleY: number?, rotation: number?, pivotX: number?,
    pivotY: number?, sourceX: number?, sourceY: number?, sourceWidth: number?,
    sourceHeight: number?, transparency: number?, blend: ImageBlend?, smooth: boolean? }
type Projection = { position: Vector3, direction: Vector3, size: Vector3, up: Vector3? }
type ProjectOptions = { fadeAngle: number?, transparency: number?, blend: ImageBlend?,
    smooth: boolean? }
type FillOptions = { tolerance: number?, transparency: number?, blend: ImageBlend? }
type TextAlign = "left" | "center" | "right"
type TextOptions = { size: number?, shadow: boolean?, align: TextAlign?, wrap: number?,
    lineHeight: number?, transparency: number?, blend: ImageBlend?, bold: boolean?,
    italic: boolean?, smooth: boolean? }
type PresetName = "clear day" | "golden hour" | "overcast" | "night" | "foggy dawn" | "snowfall" | "storm"
type InputState = "begin" | "change" | "end" | "cancel"
type MouseBehavior = "default" | "lockCenter" | "lockCurrentPosition"
type CameraPlayInfo = { duration: number?, easing: string?, direction: string?, restore: boolean? }
type LoadingPhase = "lookup" | "connecting" | "joining" | "world" | "ready"
type LoadingFailure = "connect" | "update" | "closed" | "disconnected"
type PluginMouse = { origin: Vector3, direction: Vector3, hit: Vector3?, normal: Vector3?, target: Instance?, over: boolean }
type PanelOptions = { width: number?, height: number?, dock: ("float" | "left" | "right" | "bottom")? }

Globals#

luau
declare game: Game

declare camera: Camera

declare window: MainWindow

declare settings: Settings

declare input: Input

declare ui: CoreGui           -- client only

declare messaging: Messaging

declare sharedTable: SharedTables

declare audio: {
    play: (soundId: string, options: PlayOptions?) -> Voice?,
    playEvent: (name: string, at: Vector3?) -> Voice?,
    stinger: (name: string, quantize: string?) -> Voice?,
    defineEvent: (name: string, event: { sounds: { string }, bus: string?, volume: any?,
        pitch: any?, looped: boolean? }) -> (),
    tempo: (bpm: number, beatsPerBar: number?) -> (),
    stopTempo: () -> (),
    beats: () -> number,
    beat: StepSignal,
    bar: StepSignal,
    setParameter: (name: string, value: number) -> (),
    getParameter: (name: string) -> number,
    bindBusVolume: (parameter: string, bus: string, curve: { { number } }) -> (),
    setSwitch: (group: string, value: string) -> (),
    getSwitch: (group: string) -> string?,
    lfo: (parameter: string, shape: string, hertz: number, min: number, max: number) -> (),
    snapshot: (volumes: { [string]: number }, seconds: number?) -> (),
    clearSnapshot: (seconds: number?) -> (),
    sidechain: (sourceBus: string, targetBus: string, amount: number) -> (),
    reverb: (decaySeconds: number, wet: number) -> (),
    hrtf: (enabled: boolean) -> (),
    occlusion: (enabled: boolean) -> (),
    music: (music: { layers: { string }, states: { [string]: { number } }?, bus: string? }) -> Music,
    voiceChat: (settings: { enabled: boolean?, strength: number?, filters: { any }? }) -> (),
    voiceCount: () -> number,
}

declare function require(module: string | Instance): any

declare script: Instance

declare function store(name: string): Store

declare function orderedStore(name: string): OrderedStore

declare http: Http

declare files: Files

declare xml: Xml

declare memory: MemoryStore   -- server only

declare os: Os

declare scene: {
    load: (path: string, parent: Instance?) -> { Instance },
    save: (instances: any, path: string) -> (),
    encode: (instances: any) -> string,
    decode: (text: string, parent: Instance?) -> { Instance },
}

declare function clock(): number

declare cooldown: {
    ready: (self: any, key: any, name: string, seconds: number) -> boolean,
    remaining: (self: any, key: any, name: string) -> number,
    reset: (self: any, key: any, name: string) -> (),
}

declare quat: {
    identity: Quat,
    axisAngle: (axis: Vector3, radians: number) -> Quat,
    euler: (x: number, y: number, z: number) -> Quat,
    lookAt: (forward: Vector3, up: Vector3?) -> Quat,
    fromTo: (from: Vector3, to: Vector3) -> Quat,
}

declare angle: {
    wrap: (a: number) -> number,
    delta: (a: number, b: number) -> number,
    lerp: (a: number, b: number, t: number) -> number,
}

declare random: {
    range: (min: number, max: number) -> number,
    int: (min: number, max: number) -> number,
    chance: (probability: number) -> boolean,
    pick: <T>(list: { T }) -> T?,
    shuffle: <T>(list: { T }) -> { T },
    unit: () -> Vector3,
    onSphere: (radius: number) -> Vector3,
    inSphere: (radius: number) -> Vector3,
    inCircle: (radius: number) -> Vector3,
    inBox: (size: Vector3) -> Vector3,
}

declare function vec3(x: number, y: number, z: number): Vector3

declare function color(r: number, g: number, b: number, a: number?): Color

declare udim2: {
    fromScale: (x: number, y: number) -> UDim2,
    fromOffset: (x: number, y: number) -> UDim2,
} & ((xScale: number, xOffset: number, yScale: number, yOffset: number) -> UDim2)

declare function udim(scale: number, offset: number): UDim2

declare cframe: {
    identity: CFrame,
    angles: (pitch: number, yaw: number, roll: number) -> CFrame,
    lookAt: (from: Vector3, to: Vector3) -> CFrame,
} & ((x: number, y: number, z: number) -> CFrame)
  & ((position: Vector3) -> CFrame)
  & ((from: Vector3, to: Vector3) -> CFrame)

declare function signal(name: string?): Signal

declare java: Java

declare mixin: MixinService

declare shaders: Shaders     -- client only

declare meshes: Meshes

declare images: Images

declare task: {
    wait: (seconds: number?) -> number,
    spawn: (handler: () -> ()) -> number,
    delay: (seconds: number, handler: () -> ()) -> number,
    defer: <A...>(handler: (A...) -> (), A...) -> number,
    cancel: (handle: number) -> (),
    every: (seconds: number, handler: () -> ()) -> { cancel: (self: any) -> () },
    after: (seconds: number, handler: () -> ()) -> { cancel: (self: any) -> () },
    debounce: <A...>(handler: (A...) -> (), seconds: number) -> (A...) -> (),
    throttle: <A..., R...>(handler: (A...) -> R..., seconds: number) -> (A...) -> R...,
    desynchronize: () -> (),
    synchronize: () -> (),
}

declare math: typeof(math) & {
    remap: (value: number, fromMin: number, fromMax: number, toMin: number, toMax: number) -> number,
    lerp: (a: number, b: number, t: number) -> number,
    inverseLerp: (a: number, b: number, value: number) -> number,
    approach: (value: number, target: number, step: number) -> number,
    smoothDamp: (current: number, target: number, velocity: number?, smoothTime: number, dt: number, maxSpeed: number?) -> (number, number),
    fbm: (x: number, y: number?, z: number?, octaves: number?, lacunarity: number?, gain: number?) -> number,
    bezier: (points: { any }, t: number) -> any,
    catmullRom: (points: { any }, t: number) -> any,
}

declare function print(...: any): ()

declare servers: Servers