Skip to content
Contractsv1.7.0

Player Elevation

⭐ Premium

Progress counts only when the player’s vertical position, measured against a chosen baseline, is within the specified bounds at the moment of the action.

{
"type": "PlayerElevation",
"relativeTo": "Ground",
"maxElevation": -5
}
FieldTypeDescription
typestringExactly 'PlayerElevation'
relativeToenum: SeaLevel | GroundBaseline the elevation is measured against. 'SeaLevel' is raw world height: 0 is the default sea level, positive is above it, negative below. 'Ground' is height relative to the terrain surface directly below the player: negative in caves and train tunnels, positive on rooftops or while flying. Over deep water the Ground baseline is the seabed, so a swimmer at the surface reads as far above ground. Defaults to 'SeaLevel' when omitted.
minElevationnumber | nullMinimum elevation in meters, any sign. Null (or omitted) means no lower bound.
maxElevationnumber | nullMaximum elevation in meters, any sign. Null (or omitted) means no upper bound.

relativeTo picks what elevation is measured against:

  • SeaLevel (default): raw world height. 0 is the default sea level, positive values are above it, negative values below. Use it for absolute heights, like “while flying above 200 meters” or “while diving below -10 meters”.
  • Ground: height relative to the terrain surface directly below the player. Negative in caves and train tunnels, positive on rooftops or while flying. Use it for “underground” or “high above the ground” rules regardless of where on the map the player is.
  • The player’s position is what matters, at the instant of the action. A player on top of a mountain shooting a target in a valley is at the mountain’s elevation. The target’s position is never considered.
  • Bounds are in meters and negative values are accepted on both baselines: below sea level for SeaLevel, underground for Ground.
  • Either bound can be null (or omitted entirely) for “no limit on that side”, but at least one bound is required. A condition with neither bound would always be satisfied, so it is invalid and the contract will not load.
  • If minElevation is greater than maxElevation, the plugin swaps them and logs a warning.
  • Ground is the raw difference between the player and the terrain surface, with no special handling for water: over deep ocean the baseline is the seabed, so a swimmer at the surface reads as far above ground. For “in the water” style rules, prefer SeaLevel with a negative bound.

Gather 500 stones underground (caves, train tunnels):

{
"type": "Gather",
"amountRequired": 500,
"items": ["stones"],
"conditions": {
"underground": {
"type": "PlayerElevation",
"relativeTo": "Ground",
"maxElevation": -5
}
}
}

Kill 10 scientists from high ground:

{
"type": "Kill",
"amountRequired": 10,
"entities": ["@scientists"],
"conditions": {
"high_ground": {
"type": "PlayerElevation",
"relativeTo": "SeaLevel",
"minElevation": 100
}
}
}