Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/g-js-api/G.js/llms.txt

Use this file to discover all available pages before exploring further.

General purpose trigger functions cover the most commonly used GD trigger types: camera control, color changes, movement, audio, particles, randomness, gravity, player input, and level endings. Most functions add their trigger to the level automatically; functions that return a GJsObject require you to call .add() explicitly.

Camera Triggers

camera_offset

Moves the camera by (x, y) over an optional duration.
import { camera_offset } from 'geometry-dash-gjs';

camera_offset(100, 0, 0.5); // slide camera 100 units right over 0.5 s
x
number
required
Horizontal offset in GD units.
y
number
required
Vertical offset in GD units.
duration
number
default:"0"
Seconds the camera takes to reach the offset position.
easing
number
default:"NONE"
Easing constant (see Constants).

camera_static

Locks the camera to a target object (group). Useful for cinematic scenes.
import { camera_static, group } from 'geometry-dash-gjs';

camera_static(group(5), 1.0, 0, 0, false, false, true);
gr
any
required
Group containing the object to center the camera on.
duration
number
default:"0"
Time for the camera to move to the target.
easing
number
default:"NONE"
Easing constant.
easing_rate
number
default:"0"
Controls how smoothly the effect starts.
exit_instant
boolean
default:"false"
Instantly stops the static camera.
exit_static
boolean
default:"false"
Stops the static camera with a transition.
smooth_vel
boolean
default:"false"
Adapts the camera transition to the current camera velocity. No easing recommended when enabled.
smooth_vel_mod
number
default:"0"
Modifier for the smooth velocity effect.
follow
boolean
default:"false"
Makes the camera update continuously as the object moves.
x_only
boolean
default:"false"
Restrict locking to the X axis only.
y_only
boolean
default:"false"
Restrict locking to the Y axis only.

camera_zoom

Zooms the camera in or out.
import { camera_zoom } from 'geometry-dash-gjs';

camera_zoom(2, 0.5); // zoom 2× over 0.5 s
zoom_am
number
required
Zoom multiplier. Values above 1 zoom in; below 1 zoom out.
duration
number
default:"0"
Seconds to reach the target zoom level.
easing
number
default:"NONE"
Easing constant.

camera_mode

Toggles free-camera mode and optionally edits camera movement settings.
import { camera_mode } from 'geometry-dash-gjs';

camera_mode(true, false, true, 10, 0.5);
free_mode
boolean
default:"true"
Enable (true) or disable (false) free camera mode.
disable_grid_snap
boolean
default:"false"
Remove the default snapping to the nearest grid space.
edit_cam
boolean
default:"false"
Enable editing of camera easing and padding values.
easing
number
default:"10"
Camera movement easing. Only applied when edit_cam is true.
padding
number
default:"0.5"
Camera movement padding. Only applied when edit_cam is true.

camera_rotate

Rotates the camera by the specified degrees.
import { camera_rotate } from 'geometry-dash-gjs';

camera_rotate(90, 1.0); // rotate 90° over 1 second
degrees
number
required
Degrees to rotate the camera.
move_time
number
default:"0"
Duration of the rotation.
easing
number
default:"NONE"
Easing constant.
add
boolean
default:"false"
Add the input rotation to the current camera rotation instead of setting it absolutely.
snap360
boolean
default:"false"
Convert the rotation to the nearest multiple of 360°.

camera_edge

Pins one of the camera’s edges to a target object.
import { camera_edge, group, LEFT_EDGE } from 'geometry-dash-gjs';

camera_edge(group(3), LEFT_EDGE);
id
any
required
Group ID of the target object to use as the edge anchor.
edge
number
required
Which edge to pin. Use LEFT_EDGE, RIGHT_EDGE, UP_EDGE, or DOWN_EDGE (see Constants).

Color Triggers

color_trigger

Sets a color channel to an RGB value over a duration and returns the trigger object.
import { color_trigger, BG } from 'geometry-dash-gjs';

color_trigger(BG, 255, 0, 128, 1.5, 1, false).add();
channel
any
required
Color channel to modify. Can be a $color or a channel constant like BG, GROUND, etc.
r
number
required
Red component (0–255).
g
number
required
Green component (0–255).
b
number
required
Blue component (0–255).
duration
number
default:"0"
Seconds to transition to the new color.
opacity
number
default:"1"
Opacity of the channel (0 = invisible, 1 = fully visible).
blending
boolean
default:"false"
Enable additive blending for this color.
Returns GJsObject — call .add().

toggle_on_trigger

Returns a toggle trigger that activates the specified group.
import { toggle_on_trigger, group } from 'geometry-dash-gjs';

toggle_on_trigger(group(7)).add();
group_id
any
required
Group to activate.
Returns GJsObject — call .add().

toggle_off_trigger

Returns a toggle trigger that deactivates the specified group.
import { toggle_off_trigger, group } from 'geometry-dash-gjs';

toggle_off_trigger(group(7)).add();
group_id
any
required
Group to deactivate.
Returns GJsObject — call .add().

hide_player

Hides the player sprite.
import { hide_player } from 'geometry-dash-gjs';

hide_player();

gradient

Creates a gradient trigger spanning four vertex groups and returns it.
import { gradient, color, group } from 'geometry-dash-gjs';

gradient(
  color(1), color(2),    // colors
  group(10), group(11),  // bl, br
  group(12), group(13)   // tl, tr
).add();
col
any
required
First color of the gradient.
col2
any
required
Second color of the gradient.
bl
any
required
Bottom-left vertex group.
br
any
required
Bottom-right vertex group.
tl
any
required
Top-left vertex group.
tr
any
required
Top-right vertex group.
vertex_mode
boolean
default:"true"
Use vertex mode.
blending
boolean
default:"false"
Enable blending on the gradient.
layer
number
default:"0"
Gradient layer (0–15).
Returns GJsObject — call .add().

Movement Triggers

move_trigger

Returns a move trigger that displaces a group by (x, y).
import { move_trigger, group } from 'geometry-dash-gjs';

move_trigger(group(2), 50, 0).add(); // move group 2 right 50 units
group
any
required
Group ID of the object(s) to move.
x
number
required
Horizontal displacement in GD units.
y
number
required
Vertical displacement in GD units.
Returns GJsObject — call .add().

teleport

Teleports the player to a target group or [x, y] coordinate pair.
import { teleport, group } from 'geometry-dash-gjs';

teleport(group(5));          // teleport to group 5's position
teleport([300, 150]);        // teleport to coordinates
teleport(group(5), true);    // no visual effect
g
any
required
Group ID of the target object, or an [x, y] coordinate array.
no_effects
any
Pass true to suppress the teleport visual effect.

timewarp

Warps all time in the level by a multiplier. Values above 1 speed up; below 1 slow down.
import { timewarp } from 'geometry-dash-gjs';

timewarp(0.5); // half speed
timewarp(2);   // double speed
val
number
required
Time warp multiplier.

Song & Audio

song

Plays a song in-game and returns the trigger object. Supports looping, fading, and channel assignment.
import { song } from 'geometry-dash-gjs';

song(1, true, true, 0, 1, 0, 0, 0, 0.5, 0.5).add();
song_id
number
required
Song ID in-game.
loop
boolean
default:"false"
Loop the song.
preload
boolean
default:"true"
Preload before playing.
channel
number
default:"0"
Audio channel (0–3).
volume
number
default:"1"
Playback volume (0–1).
speed
number
default:"0"
Playback speed offset.
start
number
default:"0"
Start position in milliseconds.
end
number
default:"0"
End position in milliseconds (0 = play to end).
fadein
number
default:"0"
Fade-in duration in seconds.
fadeout
number
default:"0"
Fade-out duration in seconds.
Returns GJsObject — call .add().

Player Triggers

hide_player

See Color Triggers → hide_player.

player_control

Restricts player movement abilities for one or both players.
import { player_control } from 'geometry-dash-gjs';

// Stop P1 from jumping
player_control(true, false, true);
p1
boolean
default:"false"
Apply restrictions to Player 1.
p2
boolean
default:"false"
Apply restrictions to Player 2.
stop_jump
boolean
default:"false"
Disable jumping.
stop_move
boolean
default:"false"
Disable movement.
stop_rot
boolean
default:"false"
Disable rotation.
stop_slide
boolean
default:"false"
Disable sliding.

gravity

Applies a gravity trigger to change the direction or magnitude of gravity.
import { gravity } from 'geometry-dash-gjs';

gravity(2, true);  // double gravity for P1
gravity(-1);       // inverted gravity for all
grav
number
required
Gravity magnitude.
p1
boolean
Only affect Player 1.
p2
boolean
Only affect Player 2.
pt
boolean
Only affect the player that touches the trigger.

end

Ends the level.
import { end, group } from 'geometry-dash-gjs';

end();                                      // default end
end(true, false, false, group(5), group(6)); // instant, custom spawn
instant_end
boolean
default:"false"
End the level immediately without a transition.
no_effects
boolean
default:"false"
Suppress end effects.
no_sfx
boolean
default:"false"
Suppress end SFX.
spawn_id
$group
default:"group(0)"
Group to spawn at level end.
target_pos
$group
default:"group(0)"
Object defining the end position.

options

Returns an OptionsTrigger object with toggle methods for various level-wide display and gameplay flags. Call .add() on the trigger after configuring it.
import { options } from 'geometry-dash-gjs';

const opt = options();
opt.HIDE_GROUND(true);
opt.HIDE_P2(true);
opt.add();
The OptionsTrigger interface exposes the following boolean toggle methods:
MethodDescription
STREAK_ADDITIVE(v?)Enable additive streak blending
HIDE_GROUND(v?)Hide the ground
HIDE_MG(v?)Hide the middleground
HIDE_P1(v?)Hide Player 1
HIDE_P2(v?)Hide Player 2
DISABLE_CONTROLS_P1(v?)Disable P1 controls
DISABLE_CONTROLS_P2(v?)Disable P2 controls
UNLINK_DUAL_GRAVITY(v?)Unlink gravity between players
HIDE_ATTEMPTS(v?)Hide the attempt counter
AUDIO_ON_DEATH(v?)Play audio on death
NO_DEATH_SFX(v?)Suppress death SFX
RESPAWN_TIME(v)Set respawn delay (seconds)
add()Place the options trigger in the level

Particles

particle_system

Creates a particle emitter object and returns it.
import { particle_system } from 'geometry-dash-gjs';

particle_system({ /* particle props dict */ }, false, false, false, true).add();
props
any
required
Dictionary of particle system properties.
use_obj_color
boolean
default:"false"
Inherit the object’s color.
animate_on_trigger
boolean
default:"false"
Only start emitting when an Animate trigger activates this object.
animate_active_only
boolean
default:"false"
Restricts animate_on_trigger to only work when the object is active.
quick_start
boolean
default:"false"
Instantly achieve steady-state emission instead of a gradual ramp-up.
Returns GJsObject — call .add().

spawn_particle

Spawns an existing particle system at a target location.
import { spawn_particle, group } from 'geometry-dash-gjs';

spawn_particle(group(20), group(5), 0, 0, 1, 0, 0, 0, 0, 0, false);
particle_group
any
required
Group ID of the particle system to spawn.
pos_group
$group
Target location group. Defaults to group(0).
offset_x
number
default:"0"
X offset from the target position.
offset_y
number
default:"0"
Y offset from the target position.
scale
number
default:"1"
Scale of the spawned system.
scale_var
number
default:"0"
Random scale variance.
rotation
number
default:"0"
Rotation in degrees.
rotation_var
number
default:"0"
Random rotation variance.
offvar_x
number
default:"0"
Random X spawn area size.
offvar_y
number
default:"0"
Random Y spawn area size.
match_rot
boolean
default:"false"
Match rotation across multiple particles.

Miscellaneous

random

Calls one of two groups with a specified chance.
import { random, group } from 'geometry-dash-gjs';

random(group(1), group(2), 50); // 50% chance for each
gr1
any
required
First group to potentially call.
gr2
any
required
Second group to potentially call.
chance
number
required
Percentage chance (0–100) that gr1 is called.

advanced_random

Calls one group from a weighted list of [group, weight] pairs.
import { advanced_random, group } from 'geometry-dash-gjs';

advanced_random(
  [group(1), 10],
  [group(2), 30],
  [group(3), 60]
);
chances
any[]
required
Rest parameter of [group, weight] pairs. Weights do not need to sum to 100.

Build docs developers (and LLMs) love