Gravity Config

From DragonMineZ Wiki
Revision as of 04:17, 13 October 2026 by Neb (talk | contribs) (Sync from dragonminez-wiki repository)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

The gravity system (dimension gravity, the Gravity Device block and weight-based training zones) is configured under the gravity key of config/dragonminez/general-server.json. It is one of the largest single sections of that file, with more than 60 fields, so it has its own page instead of being part of General Server Config.

The schema is the GravityConfig class nested in GeneralServerConfig.java; the logic is applied mostly in GravityLogic.java and GravityDeviceBlockEntity.java. For the player side, see Gravity, Weights and Gravity Device.

How it works

Main article: Gravity

A player's raw gravity is built like this:

base       = highest of: dimension gravity, WorldGuard "dmz-gravity" region flag, Kaio NPC gravity (if one is nearby)
rawGravity = base + (Gravity Device gravity - 1)      // only while standing in an active device's room

That raw gravity is then reduced by the player's stats to get the net gravity (if raw gravity is 1 or less, net gravity is 0). Higher net gravity means more TP and mastery gain, stat penalties, movement, attack, jump and fly penalties, and a higher stamina cost per attack.

A separate weight-based training zone system is layered on top, based on how much weight the player is carrying relative to an ideal for their level. That is what produces the Comfortable, Ideal, Pushing Hard and Overloaded TP multiplier bands.

The Gravity row of the Stats menu shows all of this live: environmental and net gravity, stat penalty, TP bonus, your weight (raw → effective), ideal weight, training zone and the weight-training multiplier.

Base gravity sources

See also: Dimensions, King Kai
Key Default What it does
enabled true Master toggle for the whole system. When false, gravity is always 1.
gravityPerWorld minecraft:overworld: 1.0, minecraft:the_nether: 8.0, minecraft:the_end: 20.0, dragonminez:time_chamber: 10.0, dragonminez:otherworld: 1.0, dragonminez:namek: 1.0 A map of dimension id to number: the base gravity of each dimension.
defaultWorldGravity 1.0 Fallback for dimensions not listed in gravityPerWorld.
npcGravityValue 10.0 Gravity applied near a King Kai (Kaio) NPC.
npcGravityRange 100.0 Radius (in blocks) used to detect a nearby King Kai NPC.
machineGravityEnabled true Whether Gravity Device blocks contribute to gravity at all.

With WorldGuard installed, the region flag dmz-gravity (a number) also sets a base gravity for the region; it is used when it is higher than the dimension's gravity (see Gamerules).

Resistance negation

Key Default What it does
resistanceStatDivisorRatio 0.9 Resistance divisor, as a ratio of maxValue (from the gameplay section of general-server.json). Higher values make your stats negate gravity less.
resistanceScale 100.0 Scales how much the negation term matters.
netGravity = rawGravity - [(avg of the 6 stats × their multipliers) / (maxValue × resistanceStatDivisorRatio)] × resistanceScale
In v2.2 the default gameplay.maxValue is 1,000,000, so this negation only becomes significant at very high stats.

Stat reduction curve

Key Default What it does
statReductionEnabled true Master toggle.
affectedStats ["STR", "SKP", "PWR", "DEF", "STM"] List of the stats that get penalized.
statReductionPerGravity 0.01 Reduction fraction per 1 point of net gravity.
minStatReduction 0.0 Floor.
maxStatReduction 0.9 Ceiling (never more than a 90% reduction).
statReduction = min(maxStatReduction, clamp(netGravity × statReductionPerGravity, min, max) + weightPenalty)

The weight penalty (see the weight training zones below) is added on top of the gravity reduction, and the total is still capped at maxStatReduction.

Movement, attack, jump and fly penalties

Key Default What it does
hardStopThreshold 75.0 Net gravity at or above which flight is fully disabled, jumping takes the maximum penalty, and the gravity TP and mastery bonus drops to nothing.
maxMovementPenalty 0.95 Maximum movement-speed reduction.
maxAttackPenalty 0.9 Maximum attack-speed reduction.
penaltyCurveFactor 1.6 Curve steepness for the movement, jump and fly penalties: penalty = sqrt(netGravity / 100) * penaltyCurveFactor, clamped to the relevant maximum. The attack-speed penalty uses sqrt(netGravity / 100) without this factor.
physicalEnabled true Master toggle for the jump, fall and fly penalties specifically.
maxJumpPenalty 0.95 Maximum jump-height reduction.
extraFallPerGravity 0.02 Extra fall-damage multiplier per point of net gravity.
maxExtraFall 0.6 Ceiling on extra fall damage.
maxFlyPenalty 0.95 Maximum flight-speed reduction (before the hard stop kicks in entirely).

The weight stat penalty (see below) is also added to the movement and attack-speed penalties, still capped at maxMovementPenalty / maxAttackPenalty.

TP and mastery bonus from gravity

Key Default What it does
tpEnabled true Master toggle for the gravity TP bonus and the whole weight-training system below.
tpGravityBonusPerGravity 0.025 TP multiplier gained per point of net gravity: 1 + netGravity × 0.025.
masteryBonusPerGravity 0.0025 Form mastery bonus per point of net gravity: 1 + netGravity × 0.0025.
tpPeakMultiplier 2.0 The weight-training multiplier inside the Ideal band (see below).

Both bonuses drop to nothing once net gravity reaches hardStopThreshold. Inside the Hyperbolic Time Chamber, the chamber's own dimension gravity is not counted for the TP bonus (the chamber has its own TP multiplier); a Gravity Device placed inside still counts.

Weight training zones

See also: Weights

This is a separate multiplier layered on top of the gravity-derived TP bonus, based on the carried weight relative to an ideal for the player's level.

Key Default What it does
tpIdealBaseDivisor 2.0 Ideal weight = relative level / this.
gravitySensitivity 1.0 How much raw gravity inflates the effective weight: loadFactor = 1.0 + (gravity - 1.0) * gravitySensitivity.
tpComfortRatioLow 0.5 Load ratio at which the multiplier reaches tpComfortMultiplier.
tpIdealRatioLow 0.75 The Ideal band starts here.
tpIdealRatioHigh 1.25 The Ideal band ends here; above it the stat penalty starts.
tpOverloadRatio 2.0 The multiplier peaks at tpHeavyMultiplier here, then descends.
tpOverloadHardRatio 2.5 At or above this ratio, the multiplier bottoms out to 1.0 and the penalty is at its maximum.
tpComfortMultiplier 1.5 Multiplier at tpComfortRatioLow.
tpHeavyMultiplier 2.5 Multiplier at tpOverloadRatio.
maxWeightPenalty 0.6 Maximum stat penalty from being overloaded on weight.
maxWeightRequested 100000 Highest weight (kg) a player can request from a master's weight service (Roshi, King Kai, Piccolo).

Load ratio = effective weight (total worn weight × loadFactor) / ideal weight. The multiplier interpolates smoothly between the ratio thresholds: 1.0 at ratio 0 → tpComfortMultiplier at tpComfortRatioLow → tpPeakMultiplier across the ideal band → tpHeavyMultiplier at tpOverloadRatio → back down to 1.0 at tpOverloadHardRatio.

The weight stat penalty is 0 up to tpIdealRatioHigh, then grows linearly to maxWeightPenalty at tpOverloadHardRatio.

Players see five training zones in-game:

Zone Load ratio
None No weights worn.
Comfortable Below tpIdealRatioLow.
Ideal From tpIdealRatioLow to tpIdealRatioHigh.
Pushing Hard Above the ideal band, below tpOverloadHardRatio.
Overloaded tpOverloadHardRatio and above.

Gravity Room upgrades

See also: Gravity Device

Bulma's side quests Gravity Room Mk.II and Gravity Room Mk.III unlock dampeners that reduce the weight stat penalty while you stand inside an active Gravity Device's room. The relief fades as you get stronger:

relief  = base × e^(−falloff × (avg of the 6 stats × multipliers) / maxValue)
penalty = weightPenalty × (1 − relief)
Key Default What it does
gravityRoomMk2Relief 0.5 Base relief after Mk. II.
gravityRoomMk2Falloff 3.0 How fast the Mk. II relief fades with power.
gravityRoomMk3Relief 0.8 Base relief after Mk. III (replaces Mk. II).
gravityRoomMk3Falloff 1.5 How fast the Mk. III relief fades with power.

Drain from load and gravity

Key Default What it does
loadDrainComfort 1.15 Drain multiplier in the Comfortable zone.
loadDrainIdeal 1.3 Drain multiplier in the Ideal zone.
loadDrainHeavy 1.5 Drain multiplier in the Pushing Hard zone.
loadDrainOverload 2.0 Drain multiplier in the Overloaded zone.
consumptionPerGravity 0.04 Extra stamina cost of attacks per point of net gravity: consumptionMultiplier = 1.0 + netGravity * consumptionPerGravity.

The load drain multiplier applies to the stamina cost of attacks and to the ki, health and stamina drain of active forms.

Gravity Device block

Main article: Gravity Device
Key Default What it does
deviceMinRoomSize 5 Minimum size (in blocks) of the enclosed room on each axis.
deviceMaxRoomSize 25 Maximum size of the enclosed room on each axis.
deviceMaxGravity 1000 Gravity cap the device can be set to.
deviceEnergyCapacity 20000 Star Energy storage capacity.
deviceEnergyPerGravityPerSecond 1.0 Energy consumed per second per × of target gravity (100× gravity uses 100 energy per second by default).
deviceShaderGravityForMax 60.0 Gravity value at which the client-side visual shader reaches full intensity.

The device validates its room with a flood-fill of the empty space around it: the enclosed space must be fully sealed (no gaps to the outside), and the enclosed air must measure between deviceMinRoomSize and deviceMaxRoomSize on every axis. The room is re-checked every 5 seconds while the device is on.

Reload and validate

  1. Edit the gravity block in config/dragonminez/general-server.json.
  2. Validate the JSON syntax.
  3. Run /dmzreload config.
  4. Test in a Gravity Device or a high-gravity dimension: check the TP gain rate, the movement and attack penalties, and the drain.