# Client Options, part 1 of 2

Part 1 of 2 of [Client Options](https://bloxd.io/docs/client-options.md). It covers airAccScale to fogOnSkybox. [llms.txt](https://bloxd.io/docs/llms.txt) lists every part.

A player's "Client Options" impact what they are capable of doing in the world. For example you can give them a double jump by setting the player's `airJumpCount` to `1`. Alternatively their health bar can be increased by setting their `maxHealth` to `200`. These API methods allow you to modify the client options:

```js
/**
 * Modify a client option at runtime and send to the client if it changed
 *
 * @param {PlayerId} playerId
 * @param {PassedOption} option - The name of the option
 * @param {ClientOptions[PassedOption]} value - The new value of the option
 * @returns {void}
 */
setClientOption(playerId, option, value)

/**
 * Returns the current value of a client option
 *
 * @param {PlayerId} playerId
 * @param {PassedOption} option
 * @returns {ClientOptions[PassedOption]}
 */
getClientOption(playerId, option)

/**
 * Modify client options at runtime
 *
 * @param {PlayerId} playerId
 * @param {Partial<ClientOptions>} optionsObj - An object which contains key value pairs of new settings. E.g {canChange: true, speedMultiplier: false}
 * @returns {void}
 */
setClientOptions(playerId, optionsObj)

/**
 * Sets a client option to its default value. This will be the value stored in your game's defaultClientOptions, otherwise Bloxd's default.
 *
 * @param {PlayerId} playerId
 * @param {ClientOption} option
 * @returns {void}
 */
setClientOptionToDefault(playerId, option)
```

Here is the full list of available client options:

## airAccScale

**Type:** `number`

**Default:** `1`

Amount of acceleration to apply to airborne players.

 Only change if absolutely necessary i.e. Rocket Obby uses 0.25.

 Players are used to the default bloxd movement behaviour and speed,

 and may be put off from your game if different muscle memory is required.

 We suggest applying speed or slowness effects instead, using api.applyEffect.

## airFrictionScale

**Type:** `number`

**Default:** `1`

Amount of friction to apply to airborne players.

 Only change if absolutely necessary i.e. Rocket Obby uses 0.

 Players are used to the default bloxd movement behaviour and speed,

 and may be put off from your game if different muscle memory is required.

 We suggest applying speed or slowness effects instead, using api.applyEffect.

## airJumpCount

**Type:** `number`

**Default:** `0`

Amount of air jumps the player has

## airMomentumConservation

**Type:** `boolean`

**Default:** `false`

Whether to allow the player to strafe and conserve momentum while airborne.

 Only change if absolutely necessary i.e. only Rocket Obby uses true.

 Players are used to the default bloxd movement behaviour and speed,

 and may be put off from your game if different muscle memory is required.

 We suggest applying speed or slowness effects instead, using api.applyEffect.

## ambientLightColourOverride

**Type:** `string`

**Default:** `null`

Ambient (absence of sky light) colour override - hex string e.g. #ffffff.

## arrowPotionEffectDuration

**Type:** `number`

**Default:** `6000`

Duration of arrow potion effects

## auraPerLevel

**Type:** `number`

**Default:** `100`

How much Aura XP is required per level.

## autoRespawn

**Type:** `boolean`

**Default:** `false`

If true, player will respawn automatically after secsToRespawn seconds

## bounciness

**Type:** `number`

**Default:** `0`

How much the player bounces off of solid blocks.

 A value of 1 is equivalent to every block acting as a mushroom.

## bunnyhopMaxMultiplier

**Type:** `number`

**Default:** `1.3`

Maximum multiplier for jump height when bunnyhopping

## cameraPositionOffset

**Type:** `[number, number, number]`

**Default:** `[0, 0, 0]`

Offsets the third-person camera from it's origin by [x, y, z] world units

## cameraRoll

**Type:** `number`

**Default:** `0`

Roll angle of the camera in radians. Useful for disorientation effects, death effects, etc.

## cameraRollTransitionMs

**Type:** `number`

**Default:** `0`

Duration in ms to animate/transition to the camera roll angle (when you change cameraRoll). 0 = instant.

 Useful for smooth camera roll transitions.

## cameraRotationOffset

**Type:** `[number, number, number]`

**Default:** `[0, 0, 0]`

Rotates the third-person camera around it's origin by [x, y, z] radians

## cameraTint

**Type:** `[number, number, number, number]`

**Default:** `null`

RGBA array [r, g, b, a] for camera screen tint effect. Values fall between 0 and 1.

## canAltAction

**Type:** `boolean`

**Default:** `true`

Whether the player can use the alt action key (right click on PC)

## canChange

**Type:** `boolean`

**Default:** `true`

Whether the player can change blocks

## canClimbWalls

**Type:** `boolean`

**Default:** `false`

Whether the player can climb walls

## canCraft

**Type:** `boolean`

**Default:** `true`

Whether to allow the player to craft items

 useFullInventory must be true for this to work

## canCrouch

**Type:** `boolean`

**Default:** `true`

Whether the player can crouch

## canCustomiseChar

**Type:** `boolean`

**Default:** `true`

Whether the player can customise their character

## canFish

**Type:** `boolean`

**Default:** `true`

Whether to allow players to fish with the default

 fishing gameplay in Bloxd. Disable this if you want

 to write custom (non-QTE) fishing mechanics

## canPickBlocks

**Type:** `boolean`

**Default:** `true`

Whether the player can pick blocks (middle mouse click on PC), ignored if creative is false

## canPickUpItems

**Type:** `boolean`

**Default:** `true`

Whether to allow the player to pick up items

## canRecordReplays

**Type:** `boolean`

**Default:** `true`

When false, players can't record replays or save clips. Turning it off mid-game discards any recording in progress. Set it for the whole game, not per area: chunks load before players reach them, and turning it back on lets new clips include every loaded chunk.

## canSeeNametagsThroughWalls

**Type:** `boolean`

**Default:** `true`

Whether the player can see name tags through walls

## cantBreakError

**Type:** `string | CustomTextStyling`

**Default:** `null`

Error message for when the player fails to break a block

## cantBuildError

**Type:** `string | CustomTextStyling`

**Default:** `null`

Error message for when the player fails to place a block

## cantChangeError

**Type:** `string | CustomTextStyling`

**Default:** `"You cannot modify this block"`

Error message for when the player fails to change a block

## canUseZoomKey

**Type:** `boolean`

**Default:** `true`

Whether the player can use the zoom key

## chatChannels

**Type:** ` { channelName: string; elementContent: string | CustomTextStyling; elementBgColor: string; }[] `

**Default:** `null`

Allows player to select a channel that is passed as argument to onPlayerChat. See engineGameplayTypes.ts for expected format

## compassTarget

**Type:** `string | number | number[]`

**Default:** `[0, 0, 0]`

The target the compass will point towards

## creative

**Type:** `boolean`

**Default:** `false`

Whether the player is in creative mode

## crosshairText

**Type:** `string | CustomTextStyling`

**Default:** `""`

Text to display by the crosshair

## crouchingSpeed

**Type:** `number`

**Default:** `2`

Speed multiplier for the player when crouching.

 Players are used to the default bloxd movement behaviour and speed,

 and may be put off from your game if different muscle memory is required.

 We suggest applying speed or slowness effects instead, using api.applyEffect.

## crouchMobDetectionRadiusMultiplier

**Type:** `number`

**Default:** `2`

Mult for the radius within which mobs can detect the player when crouching.

 If a player's mult is 2, then mobs will think they are twice as far away.

## customButtons

**Type:** `CustomButtonsType`

**Default:** `null`

Custom buttons to show in game

## customVariationTitle

**Type:** `string`

**Default:** `""`

Overridden subtitle after the game name in the top-left header.

## dealingDamageDefaultMultiplier

**Type:** `number`

**Default:** `1`

Mult for when the player hits neither a leg or a head. Only applies to guns

## dealingDamageHeadMultiplier

**Type:** `number`

**Default:** `1.75`

Damage multiplier for when the player hits a head. Only applies to guns

## dealingDamageLegMultiplier

**Type:** `number`

**Default:** `1`

Damage multiplier for when the player hits a leg. Only applies to guns

## dealingDamageMultiplier

**Type:** `number`

**Default:** `1`

Damage multiplier for all types of damage

## defaultBlock

**Type:** `string`

**Default:** `"Block of Gold"`

The default block the player can change blocks to, used if canChange is true but useInventory is false

## dialogue

**Type:** ` { line: DialogueText; speakerName?: string | CustomTextStyling; voice?: SpeechVoice; animateIn?: boolean; } `

**Default:** `null`

A line of dialogue in the panel below the crosshair, revealed word by word with a blip in its voice per syllable.

 Each new value is a new line, which replays its reveal; null hides the panel.

 A line stays up until it is replaced or hidden, so World Code can use `sayDialogue` from `@plugins/dialogue` to hide it after a while.

 The voice presets are "soft", "regular", "dark", "high-pitched", "gruff", "lively", "posh" and "mechanical".

 ```ts
 {
     line: string | TranslatedText                 // `[[Item Name]]` shows the item's icon inline
     speakerName?: string | CustomTextStyling      // Shown above the line, such as a portrait icon and a name
     voice?: SpeechVoicePreset | SpeechSynth       // A preset such as "regular" or "soft", or every synth parameter. Omit for a silent line
     animateIn?: boolean                           // False shows the line whole, without its reveal or voice
 }
 ```

## droppedItemScale

**Type:** `number`

**Default:** `1`

Scale factor to use for dropped item meshes

## effectDamageDuration

**Type:** `number`

**Default:** `8000`

Duration of the +damage effect from plum

## effectDamageReductionDuration

**Type:** `number`

**Default:** `13000`

Duration of +damage reduction effect from pear

## effectHealthRegenDuration

**Type:** `number`

**Default:** `5000`

Duration of +health regen effect from cherry

## effectSpeedDuration

**Type:** `number`

**Default:** `8000`

Duration of +speed effect from cracked coconut

## ezBridging

**Type:** `boolean`

**Default:** `true`

Assisted bridging. When on, the player can place a block off the edge of the block they are

 standing on without aiming back at it, but that block grows in place and only becomes solid

 when finished - nothing can be placed off it until then.

 

 A block takes 900ms to finish, making assisted bridging 1.11 blocks/s: slower than crouch

 bridging and far slower than speed bridging, so the skill ceiling is preserved. A growing

 cell is never valid support, and the assist stops at one rather than looking past it, so

 bridging out along a single aim is paced one block at a time. In creative the block is

 placed instantly, as there is nothing to pace. `ezBridgingGrowMs` changes the growth time.

## ezBridgingGrowMs

**Type:** `number`

**Default:** `null`

How long, in whole milliseconds (0 to 60000), an ez bridging block takes to grow before it becomes

 solid. 0 places it instantly. Applies in creative too when set. Null uses the default: 900ms, or

 instant in creative.

## ezTowering

**Type:** `boolean`

**Default:** `true`

Assisted towering: a player standing still, or in the air with no movement or jump input, can

 place a block on the one beneath them - into their own feet - where it grows for `ezToweringGrowMs`

 and then lifts them onto it. Only blocks ez bridging can place can be towered with.

## ezToweringGrowMs

**Type:** `number`

**Default:** `null`

How long, in whole milliseconds (0 to 60000), an ez towering block takes to grow before it becomes

 solid. 0 places it instantly. Applies in creative too when set. Null uses the default: 900ms, or

 instant in creative.

## fallDamage

**Type:** `boolean`

**Default:** `false`

Whether to deal damage to the player when they fall

## fillBrokenBlocksWithWater

**Type:** `boolean`

**Default:** `false`

Whether a block the player breaks becomes Water when water touches it from the side or above, rather than Air.

## flySpeedMultiplier

**Type:** `number`

**Default:** `1.5`

Multiplier for the flying speed in creative mode

## fogChunkDistanceOverride

**Type:** `number`

**Default:** `null`

Fog distance which overrides graphic settings. Uses graphic settings if null.

## fogColourOverride

**Type:** `string`

**Default:** `null`

RGB string for fog colour override. e.g. #ffffff

## fogOnSkybox

**Type:** `boolean`

**Default:** `false`

Applies fog to the skybox, which is otherwise unaffected by fog.
