Skip to content

Encounter Elements

Encounter elements are the building blocks of every encounter. Each element has a unique type key and its own set of configuration options, signals it emits, and signals (or wiring actions) it consumes.

This page catalogs all 27 built-in types. For the lifecycle, signal bus model, phase logic, and editor workflow, see the Encounters architecture page.

27 built-in types

Spawning

spawner, wave_spawner, npc — place entities in the world with respawn, tags, equipment, and Cobblemon integration.

Logic & Flow

timer, delay, counter, condition_gate, sequence, randomizer, objective, trigger — the control-flow toolbox.

Interaction

interactable, dialogue, checkpoint, elevator, launch_pad, teleporter, barrier — player-facing mechanics.

Presentation

camera, hologram, item_display, screen_effect, soundscape, effect_zone, structure, platform, script — visuals, audio, and scripting.


Every element entry is a JSON object with a shared set of top-level fields that apply to all 27 types:

FieldTypeDefaultPurpose
idString""Unique element ID inside its encounter. Used for signal addressing (id:signal_name).
typeString"spawner"One of the 27 registered type keys (case-sensitive).
position{x,y,z}nullAbsolute world position. Overrides offset.
offset{x,y,z}nullOffset from the encounter anchor when no position is set.
radiusDouble5.0Default sphere radius if no explicit shape is provided.
shapeObjectnullOptional shape override — sphere, cylinder, box, etc.
rotationFloat0Rotation in degrees. Used for entity facing and block offset rotation.
configObject{}Per-type configuration. Each element type defines its own keys.
signalsSignalWiring[][]Outgoing signal wirings — see the Encounters page.
active_in_phasesString[]nullPhase whitelist. If set, the element is only active in these phases.
initially_activeBooleantrueWhether the element activates on encounter start.
scriptStringnullMolang script source (used by the script element type).
visibilityString"all"Per-player visibility tier — all, eligible, party, none.
visualsObjectnullOptional { structure, blocks } for fake-block rendering.

Elements share a custom-data map — a per-element key/value bag that handlers and signal wirings can read and write at runtime.


Elements that put entities into the world.

Spawns and manages a configurable number of vanilla entities, Cobblemon Pokemon, or Cobblemon NPCs at the element position.

KeyTypeDefaultPurpose
entity_typeString"minecraft:zombie"Entity ID. Prefixes cobblemon:pokemon / cobblemon:npc switch to Pokemon / NPC spawning.
countInt1Number of entities to spawn.
tagsString[][]Tags applied to spawned entities (used by Objective tracking).
spread_radiusDouble15.0Random offset radius around the center.
nbtStringnullNBT compound applied to vanilla entities.
propertiesStringnullCobblemon Pokemon properties string.
npc_presetStringnullCobblemon NPC preset ID.
custom_name / name_visibleString / Booleannull / falseDisplay name override.
equipmentObjectnull{mainhand, offhand, head, chest, legs, feet} item map.
effectsArraynull[{effect, duration, amplifier}] mob effects.
respawn_delayInt0Respawn killed entities after this tick delay.
max_aliveInt0Cap on concurrent live entities (0 = no cap).
spawn_tableString""Spawn table blueprint ID. When set, ignores entity_type / count.

Emits: spawned, entity_killed, all_dead, battle_won, battle_lost, battle_fled

{
"id": "zombie_wave",
"type": "spawner",
"config": {
"entity_type": "minecraft:zombie",
"count": 5,
"tags": ["wave_1"],
"respawn_delay": 100,
"equipment": { "mainhand": "minecraft:iron_sword" }
}
}

The control-flow toolbox. These elements do the work of tying other elements together without placing anything visible.

Countdown timer with threshold signals and pause / resume / start support via signal listeners.

KeyTypeDefaultPurpose
auto_startBooleantrueStart on activate.
durationInt200Total duration (ticks).
modeString"countdown""countdown" emits completed + expired when elapsed >= duration.
signals_atString (CSV ints)""Tick values at which to emit a threshold signal.

Emits: started, tick, completed, expired, paused, resumed, threshold Consumes: <id>:pause, <id>:resume, <id>:start

{
"id": "boss_timer",
"type": "timer",
"config": {
"duration": 6000,
"mode": "countdown",
"signals_at": "3000,5400,5700,5880"
}
}

Player-facing elements — things players click, stand on, walk through, or get teleported by.

General-purpose interactive entity with multiple interaction types, multi-stage progression, hold-to-interact, visual states, and command pool execution.

KeyTypeDefaultPurpose
interaction_typeString"custom"One of npc, pickup, button, custom.
npc_presetString""Cobblemon NPC preset (type=npc).
dialogueString""Cobblemon dialogue ID.
item / item_blueprintString""Item for pickup.
custom_name / name_visibleString / Boolean"" / trueEntity display name.
one_timeBooleanfalseOnly one interaction allowed across all players.
cooldownInt (ticks)0Per-player cooldown.
conditionMolang""Required predicate; failing players see unavailable_text.
unavailable_textString""Message sent when condition fails.
stagesString (JSON)""Multi-stage progression spec.
hold_durationInt0If > 0, hold-to-interact mode.
visual_statesString (JSON)""Map of state name to {custom_name?, glow?} overrides.
command_poolString""Command pool blueprint run after each interaction.

Emits: interacted, collected, dialogue_complete, battle_won/lost/fled, stage_advanced, stage_blocked, hold_started/completed/cancelled, visual_state_changed Wiring actions: set_visual_state, set_stage, reset_stages

{
"id": "ancient_lever",
"type": "interactable",
"config": {
"interaction_type": "button",
"custom_name": "<gold>Ancient Lever",
"hold_duration": 40,
"one_time": true
}
}

Visuals, audio, structure, scripting, and platform movement.

Plays a cinematic camera sequence. Supports a Ceremony cutscene path or manual waypoint interpolation with easing.

KeyTypeDefaultPurpose
freeze_playerBooleantrueLocks players during the manual-mode sequence.
camera_pathString""Ceremony cutscene ID (preferred for long sequences).
camera_pointsString[][]Manual waypoints: "x,y,z,yaw,pitch,duration" per entry.
return_on_completeBooleantrueEnd the camera and unfreeze when the sequence finishes.
target_playersBooleanfalseAuto-start when a player enters the element shape.
easingString"linear"One of linear, ease_in, ease_out, ease_in_out.

Emits: started, point_reached, completed Consumes: <id>:start

Prefer camera_path (Ceremony) for long cinematics. Manual mode teleports the player every tick while interpolating — use it for short sequences only.


Signals shared across multiple elements. Reuse these names in wirings without surprise.

SignalEmitted byMeaning
activated / deactivatedBarrier, Condition Gate, Script, TriggerState entered / left active
started / completedCamera, Dialogue, Platform, Screen Effect, TimerProcess began / finished
spawned / despawnedNPC, Spawner, Hologram, Item DisplayEntity / display created / removed
interactedElevator, Interactable, NPCPlayer right-clicked the element entity
entity_killed / all_deadSpawner, Wave SpawnerTracked entity died / all tracked dead
all_waves_completeWave SpawnerFinal wave cleared
battle_won / battle_lost / battle_fledSpawner, Wave Spawner, NPC, InteractableBattle outcome
player_entered / player_exitedEffect Zone, TriggerShape proximity changes
progress_changed / completeObjectiveObjective progress
changedCounterCounter value changed
rolledRandomizerA roll occurred
playedSoundscapeA sound was played
teleported / launchedTeleporter / Launch PadPlayer moved
saved / restoredCheckpointCheckpoint state changed
arrived / point_reached / loop_completePlatformPlatform navigation
floor_selectedElevatorGUI floor selection
step_completed / sequence_complete / sequence_failed / sequence_resetSequenceSequence events
received / delayedDelayBuffered signal received vs. released
satisfied / unsatisfiedCondition GateBoolean evaluation
threshold / tick / expired / paused / resumedTimerTime-based events
tick_inside / all_insideTriggerPresence events
block_broken / block_interacted / all_blocks_brokenStructureFake-block events
hold_started / hold_completed / hold_cancelledInteractableHold-to-interact lifecycle
stage_advanced / stage_blockedInteractableMulti-stage lifecycle
visual_state_changedInteractableAfter set_visual_state
collectedInteractablePickup interaction
dialogue_completeInteractableCobblemon dialogue closed
line_played / page_opened / option_selected / text_entered / escapedDialogueDialogue runtime events