Skip to content
Amaryllis edited this page Jul 30, 2026 · 1 revision

Experiment

Experiment types are defined in data/<namespace>/aero_science_experiments

Key Type Description
stages List<ExperimentCondition> An ordered sequence of stages which must be completed one after another. Each stage is a single condition, which when complete progresses the experiment onto the next stage.
conditions Optional List<ExperimentCondition> A list of conditions which must be satisfied in order to make progress on the current stage. Conditions here can also target a specific stage, to exclusively apply to it.
xp_reward Optional int (Default: 200) The base amount of XP rewarded upon experiment completion. May be modified by the config options xp_reward_multiplier and automated_xp_reward_multiplier
loot_reward Optional ResourceLocation A loot table which will be rolled for item drops upon experiment completion.
custom_reward_message Optional List<String> A list of lang keys which will be translated and displayed when rewards are listed (by default, in recipe viewers)
weight Optional float (Default: 1.0) Determines how often this experiment is selected when a new Probe item randomly selects an experiment.
sort Optional int Determines how the experiment types are sorted, when listed in recipe viewers. Larger numbers sort after smaller numbers. If unset, is added at the end.

Experiment rewards may also be overriden via code with the event ResearchProbeBlockEntity.CompletedResearchEvent.

ExperimentCondition

Key Type Description
type Enum What kind of criteria this condition checks. Possible types are listed below.
condition Optional Enum When paired with value, defines an inequality relationship. Possible values are: equal, greater_than, less_than, greater_than_or_equal, less_than_or_equal.
value Optional int When paired with condition, defines an inequality relationship.
identifier Optional ResourceLocation Defines a fluid/biome/dimension subject. May be a direct ID or a tag.
inverted Optional boolean Inverts the condition, if applicable. The condition is calculated, and then required to be false instead of true. Only the following condition types are invertable: submerged, biome, dimension. Others may be inverted by inverting the inequality condition.
duration Optional int For stages: defines a duration in ticks (20 per second) that the condition must be satisfied for before the stage is completed.
reset_progress Optional boolean (Default: false) For conditions: If true, violating the condition will cause the current (targetted) stage to reset all progress, instead of just pausing progress.
target_stage Optional int Represents an index in the stages list. The condition will only apply to the specified stage, and will be listed directly under it in tooltips.
custom_message Optional String A lang key which will be translated and displayed instead of the condition's normal tooltip description.
Condition Type Relevant Parameters Description
wait duration A dummy condition which is always true, and thus waits only on duration.
Only allowed in stages.
height condition + value Satisfied if the inequality condition is true for the block's Y position, e.g. Y > value
speed condition + value Satisfied if the inequality conditionis true for the block's speed, e.g. speed > value
distance condition + value Satisfied if the inequality conditionis true for the max distance travelled by the block from one point to another, e.g. distance > value.
If any distance conditions are targetted to a specific stage, the Probe's distance is always reset between stages.
If in stages, the inequality condition must be > or >=.
If in conditions, the inequality condition must be < or <=, and there must be no distance stages.
grounded condition + value Satisfied if the inequality condition is true for the block's distance above the ground, e.g. height_above_ground > value.
This height is calculated from the Heightmap MOTION_BLOCKING_NO_LEAVES
submerged identifier Satisfied if the block is within a fluid represented by the identifier.
Invertable.
biome identifier Satisfied if the block is within a biome represented by the identifier.
Invertable.
dimension identifier Satisfied if the block is within a dimension represented by the identifier.
Invertable.

Example

The following is the Experiment entry for the Deep Ocean Pressure Gauge experiment.

{
  "stages": [
    { "type": "height", "condition": "greater_than_or_equal", "value": 62 },
    { "type": "height", "condition": "less_than", "value": 20, "duration": 600 }
  ],
  "conditions": [
    { "type": "submerged", "identifier": "minecraft:water", "target_stage": 1 },
    { "type": "biome", "identifier": "minecraft:is_ocean" }
  ],
  "sort": 60
}

The following is the Experiment entry for the Microscopic Sand Shifter experiment.

{
  "stages": [
    { "type": "distance", "condition": "greater_than_or_equal", "value": 256 },
    { "type": "wait", "duration": 600 }
  ],
  "conditions": [
    { "type": "grounded", "condition": "less_than_or_equal", "value": 10 },
    { "type": "biome", "identifier": "c:is_dry/overworld" }
  ],
  "sort": 40
}

Clone this wiki locally