From 3c5d3ba19f0250007ca80050bdfc96f320fb2899 Mon Sep 17 00:00:00 2001 From: JunkyDeveloper Date: Tue, 10 Mar 2026 00:17:15 +0100 Subject: [PATCH 1/2] claude generated with flintcli has a helper tool --- .cache/index.json | 11 ++ tests/fluids/flowing_lava_meets_water.json | 70 ++++++++ tests/fluids/lava_flows_down_onto_water.json | 54 ++++++ .../lava_soul_soil_blue_ice_basalt.json | 31 ++++ .../lava_source_meets_water_obsidian.json | 54 ++++++ tests/fluids/water/blocked_by_door.json | 96 +++++++++++ .../water/blocked_by_structure_void.json | 62 +++++++ tests/fluids/water/cascading_waterfall.json | 74 +++++++++ tests/fluids/water/channel_race.json | 90 ++++++++++ .../water/destroys_nonsolid_blocks.json | 54 ++++++ tests/fluids/water/falling_resets_spread.json | 64 +++++++ tests/fluids/water/flow_four_directions.json | 61 +++++++ .../water/flowing_over_hole_no_sideways.json | 64 +++++++ .../water/flowing_recalculates_level.json | 61 +++++++ tests/fluids/water/infinite_source_grid.json | 83 +++++++++ tests/fluids/water/maze_slope_routing.json | 98 +++++++++++ .../multi_level_waterfall_obstacles.json | 94 +++++++++++ .../fluids/water/multi_source_pool_fill.json | 73 ++++++++ tests/fluids/water/obstacle_course.json | 93 +++++++++++ .../water/single_source_no_new_source.json | 57 +++++++ .../water/slope_prefers_closer_hole.json | 63 +++++++ .../water/source_requires_solid_below.json | 59 +++++++ .../source_spreads_sideways_over_hole.json | 64 +++++++ tests/fluids/water/spiral_channel_flow.json | 104 ++++++++++++ .../water/spreading_around_pillar_array.json | 157 ++++++++++++++++++ tests/fluids/water/stopped_by_solid.json | 61 +++++++ .../three_sources_spread_while_falling.json | 70 ++++++++ tests/fluids/water/two_sources_converge.json | 75 +++++++++ .../water/waterfall_into_pool_overflow.json | 75 +++++++++ 29 files changed, 2072 insertions(+) create mode 100644 .cache/index.json create mode 100644 tests/fluids/flowing_lava_meets_water.json create mode 100644 tests/fluids/lava_flows_down_onto_water.json create mode 100644 tests/fluids/lava_soul_soil_blue_ice_basalt.json create mode 100644 tests/fluids/lava_source_meets_water_obsidian.json create mode 100644 tests/fluids/water/blocked_by_door.json create mode 100644 tests/fluids/water/blocked_by_structure_void.json create mode 100644 tests/fluids/water/cascading_waterfall.json create mode 100644 tests/fluids/water/channel_race.json create mode 100644 tests/fluids/water/destroys_nonsolid_blocks.json create mode 100644 tests/fluids/water/falling_resets_spread.json create mode 100644 tests/fluids/water/flow_four_directions.json create mode 100644 tests/fluids/water/flowing_over_hole_no_sideways.json create mode 100644 tests/fluids/water/flowing_recalculates_level.json create mode 100644 tests/fluids/water/infinite_source_grid.json create mode 100644 tests/fluids/water/maze_slope_routing.json create mode 100644 tests/fluids/water/multi_level_waterfall_obstacles.json create mode 100644 tests/fluids/water/multi_source_pool_fill.json create mode 100644 tests/fluids/water/obstacle_course.json create mode 100644 tests/fluids/water/single_source_no_new_source.json create mode 100644 tests/fluids/water/slope_prefers_closer_hole.json create mode 100644 tests/fluids/water/source_requires_solid_below.json create mode 100644 tests/fluids/water/source_spreads_sideways_over_hole.json create mode 100644 tests/fluids/water/spiral_channel_flow.json create mode 100644 tests/fluids/water/spreading_around_pillar_array.json create mode 100644 tests/fluids/water/stopped_by_solid.json create mode 100644 tests/fluids/water/three_sources_spread_while_falling.json create mode 100644 tests/fluids/water/two_sources_converge.json create mode 100644 tests/fluids/water/waterfall_into_pool_overflow.json diff --git a/.cache/index.json b/.cache/index.json new file mode 100644 index 0000000..c10645e --- /dev/null +++ b/.cache/index.json @@ -0,0 +1,11 @@ +{ + "hash": 12464441102537979377, + "index": { + "complex": [ + "tests/fluids/water/u_shape.json" + ], + "pathfinding": [ + "tests/fluids/water/u_shape.json" + ] + } +} \ No newline at end of file diff --git a/tests/fluids/flowing_lava_meets_water.json b/tests/fluids/flowing_lava_meets_water.json new file mode 100644 index 0000000..375b742 --- /dev/null +++ b/tests/fluids/flowing_lava_meets_water.json @@ -0,0 +1,70 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "flowing_lava_meets_water_cobblestone", + "description": "Flowing lava (not source) that touches water becomes cobblestone. In shouldSpreadLiquid, non-source lava adjacent to water converts to cobblestone.", + "tags": ["interaction", "lava", "water", "cobblestone"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [8, 3, 4] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [8, 0, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [8, 2, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 4], [8, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [8, 1, 0], [8, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [4, 1, 1], [4, 2, 3] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [1, 1, 2], "block": {"id": "minecraft:lava", "level": 0} }, + { "at": 60, "do": "place", "pos": [4, 1, 2], "block": {"id": "minecraft:air"} }, + { "at": 60, "do": "place", "pos": [4, 2, 2], "block": {"id": "minecraft:air"} }, + { "at": 61, "do": "place", "pos": [7, 1, 2], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 62, + "do": "assert", + "checks": [ + { "pos": [2, 1, 2], "is": {"id": "minecraft:lava" } }, + { "pos": [1, 1, 2], "is": {"id": "minecraft:lava", "level": "0"} } + ] + }, + { + "at": 100, + "do": "assert", + "checks": [ + { "pos": [3, 1, 2], "is": {"id": "minecraft:cobblestone"} } + ] + } + ] +} + diff --git a/tests/fluids/lava_flows_down_onto_water.json b/tests/fluids/lava_flows_down_onto_water.json new file mode 100644 index 0000000..229b3e9 --- /dev/null +++ b/tests/fluids/lava_flows_down_onto_water.json @@ -0,0 +1,54 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "lava_flows_down_onto_water_stone", + "description": "Lava flowing downward onto water creates stone at the water position. In LavaFluid.spreadTo, when direction is DOWN and target has water in a LiquidBlock, the water position becomes stone.", + "tags": ["interaction", "lava", "water", "stone"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [4, 5, 4] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [4, 0, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [4, 4, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 4], [4, 4, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 4, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [4, 1, 0], [4, 4, 4] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [2, 1, 2], "block": {"id": "minecraft:water", "level": 0} }, + { "at": 2, "do": "place", "pos": [2, 3, 2], "block": {"id": "minecraft:lava", "level": 0} }, + { + "at": 80, + "do": "assert", + "checks": [ + { "pos": [2, 1, 2], "is": {"id": "minecraft:stone"} } + ] + } + ] +} + diff --git a/tests/fluids/lava_soul_soil_blue_ice_basalt.json b/tests/fluids/lava_soul_soil_blue_ice_basalt.json new file mode 100644 index 0000000..80223ad --- /dev/null +++ b/tests/fluids/lava_soul_soil_blue_ice_basalt.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "lava_over_soul_soil_with_blue_ice_basalt", + "description": "Lava placed above soul_soil and adjacent to blue_ice converts to basalt. In shouldSpreadLiquid, lava over soul_soil touching blue_ice becomes basalt.", + "tags": ["interaction", "lava", "basalt", "soul_soil", "blue_ice"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [4, 3, 4] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [4, 0, 4] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 0, "do": "place", "pos": [2, 0, 2], "block": {"id": "minecraft:soul_soil"} }, + { "at": 0, "do": "place", "pos": [3, 1, 2], "block": {"id": "minecraft:blue_ice"} }, + { "at": 1, "do": "place", "pos": [2, 1, 2], "block": {"id": "minecraft:lava", "level": 0} }, + { + "at": 5, + "do": "assert", + "checks": [ + { "pos": [2, 1, 2], "is": {"id": "minecraft:basalt"} } + ] + } + ] +} + diff --git a/tests/fluids/lava_source_meets_water_obsidian.json b/tests/fluids/lava_source_meets_water_obsidian.json new file mode 100644 index 0000000..8c5933c --- /dev/null +++ b/tests/fluids/lava_source_meets_water_obsidian.json @@ -0,0 +1,54 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "lava_source_meets_water_obsidian", + "description": "Lava source block touching water converts to obsidian. In shouldSpreadLiquid, source lava adjacent to water becomes obsidian.", + "tags": ["interaction", "lava", "water", "obsidian"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [4, 3, 4] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [4, 0, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [4, 2, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 4], [4, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [4, 1, 0], [4, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [2, 1, 2], "block": {"id": "minecraft:lava", "level": 0} }, + { "at": 2, "do": "place", "pos": [2, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 10, + "do": "assert", + "checks": [ + { "pos": [2, 1, 2], "is": {"id": "minecraft:obsidian"} } + ] + } + ] +} + diff --git a/tests/fluids/water/blocked_by_door.json b/tests/fluids/water/blocked_by_door.json new file mode 100644 index 0000000..ddb2245 --- /dev/null +++ b/tests/fluids/water/blocked_by_door.json @@ -0,0 +1,96 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_blocked_by_closed_door", + "description": "Water cannot flow through a closed door because DoorBlock is not a LiquidBlockContainer and is explicitly excluded in canHoldAnyFluid", + "tags": ["blocking", "door"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [6, 4, 4] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [6, 0, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [6, 3, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 4], [6, 3, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 3, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [6, 1, 0], [6, 3, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [3, 1, 1], [3, 1, 3] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [3, 2, 1], [3, 2, 3] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "place_each", + "blocks": [ + { + "pos": [3, 1, 2], + "block": { + "id" : "minecraft:oak_door", + "half" : "lower" , + "facing" : "east" , + "hinge" : "left" , + "open" : "false" , + "powered": "false" + } + }, + { + "pos": [3, 2, 2], + "block": { + "id" : "minecraft:oak_door", + "half" : "upper" , + "facing" : "east" , + "hinge" : "left" , + "open" : "false" , + "powered": "false" + } + } + ] + }, + { "at": 1, "do": "place", "pos": [1, 1, 2], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 40, + "do": "assert", + "checks": [ + { "pos": [2, 1, 2], "is": {"id": "minecraft:water" } }, + { "pos": [3, 1, 2], "is": {"id": "minecraft:oak_door"} }, + { "pos": [4, 1, 2], "is": {"id": "minecraft:air" } }, + { "pos": [5, 1, 2], "is": {"id": "minecraft:air" } } + ] + } + ] +} + diff --git a/tests/fluids/water/blocked_by_structure_void.json b/tests/fluids/water/blocked_by_structure_void.json new file mode 100644 index 0000000..cac81bb --- /dev/null +++ b/tests/fluids/water/blocked_by_structure_void.json @@ -0,0 +1,62 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_blocked_by_structure_void", + "description": "Water cannot flow through structure_void blocks because they are explicitly excluded in canHoldAnyFluid even though they do not block motion", + "tags": ["blocking", "structure_void"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [6, 4, 4] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [6, 0, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [6, 3, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 4], [6, 3, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 3, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [6, 1, 0], [6, 3, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [3, 1, 1], [3, 1, 3] ], + "with": {"id": "minecraft:structure_void"} + }, + { "at": 1, "do": "place", "pos": [1, 1, 2], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 40, + "do": "assert", + "checks": [ + { "pos": [2, 1, 2], "is": {"id": "minecraft:water" } }, + { "pos": [3, 1, 2], "is": {"id": "minecraft:structure_void"} }, + { "pos": [4, 1, 2], "is": {"id": "minecraft:air" } }, + { "pos": [5, 1, 2], "is": {"id": "minecraft:air" } } + ] + } + ] +} + diff --git a/tests/fluids/water/cascading_waterfall.json b/tests/fluids/water/cascading_waterfall.json new file mode 100644 index 0000000..166f957 --- /dev/null +++ b/tests/fluids/water/cascading_waterfall.json @@ -0,0 +1,74 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_cascading_waterfall", + "description": "Water cascading down multiple stair-stepped platforms, each time resetting its spread level via falling. Tests that each landing produces full 7-block spread and that falling water at every step has level 8.", + "tags": ["cascade", "falling", "staircase"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [[0, 0, 0], [20, 12, 6]] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [[0, 0, 0], [20, 0, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [20, 11, 0]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 6], [20, 11, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [0, 11, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[20, 1, 0], [20, 11, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 8, 0], [5, 8, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[6, 4, 0], [11, 4, 6]], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [1, 9, 3], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 120, + "do": "assert", + "checks": [ + {"pos": [1, 9, 3], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [5, 9, 3], "is": {"id": "minecraft:water", "level": "4"}}, + {"pos": [5, 8, 3], "is": {"id": "minecraft:water"}}, + {"pos": [6, 8, 3], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [6, 5, 3], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [6, 1, 3], "is": {"id": "minecraft:water"}}, + {"pos": [7, 5, 3], "is": {"id": "minecraft:water", "level": "1"}}, + {"pos": [11, 5, 3], "is": {"id": "minecraft:water", "level": "5"}}, + {"pos": [12, 4, 3], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [12, 1, 3], "is": {"id": "minecraft:water"}}, + {"pos": [13, 1, 3], "is": {"id": "minecraft:water"}} + ] + } + ] +} diff --git a/tests/fluids/water/channel_race.json b/tests/fluids/water/channel_race.json new file mode 100644 index 0000000..8d26376 --- /dev/null +++ b/tests/fluids/water/channel_race.json @@ -0,0 +1,90 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_channel_race_slope_selection", + "description": "Water source placed between two channels of different lengths, both leading to drop-offs. The shorter channel (3 blocks) has a hole while the longer channel (7 blocks) also has a hole. Water should prefer the shorter path via getSlopeDistance and only flow that direction, ignoring the longer path entirely.", + "tags": ["slope", "pathfinding", "channel", "large"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [[0, 0, 0], [22, 5, 8]] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [[0, 0, 0], [22, 0, 8]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [22, 1, 8]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 2, 0], [22, 4, 0]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 2, 8], [22, 4, 8]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 2, 0], [0, 4, 8]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[22, 2, 0], [22, 4, 8]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 2, 3], [22, 4, 3]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 2, 5], [22, 4, 5]], + "with": {"id": "minecraft:stone"} + }, + { "at": 0, "do": "place", "pos": [7, 1, 2], "block": {"id": "minecraft:air"} }, + { "at": 0, "do": "place", "pos": [15, 1, 6], "block": {"id": "minecraft:air"} }, + { + "at": 0, + "do": "fill", + "region": [[10, 2, 3], [10, 4, 5]], + "with": {"id": "minecraft:air"} + }, + { "at": 1, "do": "place", "pos": [10, 2, 4], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 80, + "do": "assert", + "checks": [ + {"pos": [10, 2, 4], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [10, 2, 2], "is": {"id": "minecraft:water"}}, + {"pos": [9, 2, 2], "is": {"id": "minecraft:water"}}, + {"pos": [8, 2, 2], "is": {"id": "minecraft:water"}}, + {"pos": [7, 2, 2], "is": {"id": "minecraft:water"}}, + {"pos": [7, 1, 2], "is": {"id": "minecraft:water"}}, + {"pos": [10, 2, 6], "is": {"id": "minecraft:water"}}, + {"pos": [11, 2, 6], "is": {"id": "minecraft:water"}}, + {"pos": [12, 2, 6], "is": {"id": "minecraft:water"}}, + {"pos": [13, 2, 6], "is": {"id": "minecraft:water"}}, + {"pos": [14, 2, 6], "is": {"id": "minecraft:water"}}, + {"pos": [15, 2, 6], "is": {"id": "minecraft:water"}}, + {"pos": [15, 1, 6], "is": {"id": "minecraft:water"}} + ] + } + ] +} diff --git a/tests/fluids/water/destroys_nonsolid_blocks.json b/tests/fluids/water/destroys_nonsolid_blocks.json new file mode 100644 index 0000000..f8bc614 --- /dev/null +++ b/tests/fluids/water/destroys_nonsolid_blocks.json @@ -0,0 +1,54 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_destroys_nonsolid_blocks_in_path", + "description": "Water flowing into a non-solid, non-waterloggable block destroys it and replaces it with water. From spreadTo(): if block is not LiquidBlockContainer and not air, beforeDestroyingBlock is called.", + "tags": ["destroy", "replace"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [6, 3, 4] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [6, 0, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [6, 2, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 4], [6, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [6, 1, 0], [6, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 0, "do": "place", "pos": [3, 1, 2], "block": {"id": "minecraft:torch"} }, + { "at": 1, "do": "place", "pos": [1, 1, 2], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 30, + "do": "assert", + "checks": [ + { "pos": [3, 1, 2], "is": {"id": "minecraft:water"} } + ] + } + ] +} + diff --git a/tests/fluids/water/falling_resets_spread.json b/tests/fluids/water/falling_resets_spread.json new file mode 100644 index 0000000..0694e49 --- /dev/null +++ b/tests/fluids/water/falling_resets_spread.json @@ -0,0 +1,64 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_falling_resets_spread_level", + "description": "Water flowing at level 7 (amount=1) that falls off a cliff resets to amount=8, allowing 7 more blocks of horizontal spread at the bottom", + "tags": ["falling", "spread", "level"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [14, 6, 4] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [14, 0, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 2, 0], [7, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [14, 5, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 4], [14, 5, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 5, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [14, 1, 0], [14, 5, 4] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [1, 3, 2], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 80, + "do": "assert", + "checks": [ + { "pos": [ 1, 3, 2], "is": {"id": "minecraft:water", "level": "0"} }, + { "pos": [ 8, 3, 2], "is": {"id": "minecraft:water", "level": "7"} }, + { "pos": [ 8, 2, 2], "is": {"id": "minecraft:water", "level": "8"} }, + { "pos": [ 8, 1, 2], "is": {"id": "minecraft:water", "level": "8"} }, + { "pos": [ 9, 1, 2], "is": {"id": "minecraft:water", "level": "1"} }, + { "pos": [12, 1, 2], "is": {"id": "minecraft:water", "level": "4"} } + ] + } + ] +} + diff --git a/tests/fluids/water/flow_four_directions.json b/tests/fluids/water/flow_four_directions.json new file mode 100644 index 0000000..e7c41f3 --- /dev/null +++ b/tests/fluids/water/flow_four_directions.json @@ -0,0 +1,61 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_flow_four_directions", + "description": "Water source on a flat floor spreads equally in all four cardinal directions", + "tags": ["spread", "cardinal"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [10, 3, 10] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [10, 0, 10] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [10, 2, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 10], [10, 2, 10] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 2, 10] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [10, 1, 0], [10, 2, 10] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [5, 1, 5], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 60, + "do": "assert", + "checks": [ + { "pos": [5, 1, 5], "is": {"id": "minecraft:water", "level": "0"} }, + { "pos": [6, 1, 5], "is": {"id": "minecraft:water", "level": "1"} }, + { "pos": [4, 1, 5], "is": {"id": "minecraft:water", "level": "1"} }, + { "pos": [5, 1, 6], "is": {"id": "minecraft:water", "level": "1"} }, + { "pos": [5, 1, 4], "is": {"id": "minecraft:water", "level": "1"} }, + { "pos": [7, 1, 5], "is": {"id": "minecraft:water", "level": "2"} }, + { "pos": [3, 1, 5], "is": {"id": "minecraft:water", "level": "2"} }, + { "pos": [5, 1, 7], "is": {"id": "minecraft:water", "level": "2"} }, + { "pos": [5, 1, 3], "is": {"id": "minecraft:water", "level": "2"} } + ] + } + ] +} + diff --git a/tests/fluids/water/flowing_over_hole_no_sideways.json b/tests/fluids/water/flowing_over_hole_no_sideways.json new file mode 100644 index 0000000..046044d --- /dev/null +++ b/tests/fluids/water/flowing_over_hole_no_sideways.json @@ -0,0 +1,64 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_flowing_over_hole_skips_sideways", + "description": "Non-source flowing water positioned over a hole (isWaterHole=true) does not spread sideways - it only flows down. From spread(): if not source and isWaterHole, spreadToSides is skipped.", + "tags": ["hole", "spread", "priority"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [6, 5, 6] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [6, 0, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 2, 0], [6, 2, 6] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 0, "do": "place", "pos": [3, 2, 3], "block": {"id": "minecraft:air"} }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [6, 4, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 6], [6, 4, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 4, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [6, 1, 0], [6, 4, 6] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [2, 3, 3], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 40, + "do": "assert", + "checks": [ + { "pos": [3, 3, 3], "is": {"id": "minecraft:water", "level": "1"} }, + { "pos": [3, 1, 3], "is": {"id": "minecraft:water" } }, + { "pos": [4, 3, 3], "is": {"id": "minecraft:air" } }, + { "pos": [3, 3, 2], "is": {"id": "minecraft:air" } }, + { "pos": [3, 3, 4], "is": {"id": "minecraft:air" } } + ] + } + ] +} + diff --git a/tests/fluids/water/flowing_recalculates_level.json b/tests/fluids/water/flowing_recalculates_level.json new file mode 100644 index 0000000..a895d2a --- /dev/null +++ b/tests/fluids/water/flowing_recalculates_level.json @@ -0,0 +1,61 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_flowing_recalculates_level_on_tick", + "description": "Flowing water recalculates its level each tick based on neighbors. If a second source is added nearby, flowing water between two sources becomes a source (level 0) via getNewLiquid neighbourSources check.", + "tags": ["recalculate", "dynamic"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [6, 3, 4] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [6, 0, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [6, 2, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 4], [6, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [6, 1, 0], [6, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [1, 1, 2], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 20, + "do": "assert", + "checks": [ + { "pos": [2, 1, 2], "is": {"id": "minecraft:water", "level": "1"} } + ] + }, + { "at": 21, "do": "place", "pos": [3, 1, 2], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 40, + "do": "assert", + "checks": [ + { "pos": [2, 1, 2], "is": {"id": "minecraft:water", "level": "0"} } + ] + } + ] +} + diff --git a/tests/fluids/water/infinite_source_grid.json b/tests/fluids/water/infinite_source_grid.json new file mode 100644 index 0000000..d511599 --- /dev/null +++ b/tests/fluids/water/infinite_source_grid.json @@ -0,0 +1,83 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_infinite_source_grid_propagation", + "description": "A line of source blocks along one edge of a 16x16 pool causes infinite source creation to propagate across the entire pool. Tests that source conversion cascades correctly: each new row of sources enables the next row to form, filling the pool entirely with source blocks.", + "tags": ["source", "infinite", "grid", "large"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [[0, 0, 0], [17, 4, 17]] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [[0, 0, 0], [17, 0, 17]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [17, 3, 0]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 17], [17, 3, 17]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [0, 3, 17]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[17, 1, 0], [17, 3, 17]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 1, + "do": "place_each", + "blocks": [ + { "pos": [1, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [2, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [3, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [4, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [5, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [6, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [7, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [8, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [9, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [10, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [11, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [12, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [13, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [14, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [15, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [16, 1, 1], "block": {"id": "minecraft:water", "level": 0} } + ] + }, + { + "at": 500, + "do": "assert", + "checks": [ + {"pos": [1, 1, 2], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [8, 1, 2], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [16, 1, 2], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [1, 1, 8], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [8, 1, 8], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [16, 1, 8], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [1, 1, 16], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [8, 1, 16], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [16, 1, 16], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [5, 1, 10], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [12, 1, 14], "is": {"id": "minecraft:water", "level": "0"}} + ] + } + ] +} diff --git a/tests/fluids/water/maze_slope_routing.json b/tests/fluids/water/maze_slope_routing.json new file mode 100644 index 0000000..a70f269 --- /dev/null +++ b/tests/fluids/water/maze_slope_routing.json @@ -0,0 +1,98 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_maze_slope_routing", + "description": "Water navigates a maze-like channel structure using slope pathfinding. The source is placed at one end with walls creating a winding path. A hole exists at the end of the correct path, so getSpread/getSlopeDistance guides the water through the maze toward the drop-off.", + "tags": ["slope", "pathfinding", "maze", "large"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [[0, 0, 0], [20, 5, 16]] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [[0, 0, 0], [20, 0, 16]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [20, 1, 16]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 2, 0], [20, 4, 0]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 2, 16], [20, 4, 16]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 2, 0], [0, 4, 16]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[20, 2, 0], [20, 4, 16]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[1, 2, 4], [16, 4, 4]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[4, 2, 4], [4, 4, 12]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[4, 2, 8], [16, 4, 8]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[8, 2, 8], [8, 4, 16]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[8, 2, 12], [16, 4, 12]], + "with": {"id": "minecraft:stone"} + }, + { "at": 0, "do": "place", "pos": [18, 1, 14], "block": {"id": "minecraft:air"} }, + { "at": 1, "do": "place", "pos": [1, 2, 2], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 200, + "do": "assert", + "checks": [ + {"pos": [1, 2, 2], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [5, 2, 2], "is": {"id": "minecraft:water"}}, + {"pos": [17, 2, 2], "is": {"id": "minecraft:water"}}, + {"pos": [17, 2, 5], "is": {"id": "minecraft:water"}}, + {"pos": [5, 2, 6], "is": {"id": "minecraft:water"}}, + {"pos": [5, 2, 7], "is": {"id": "minecraft:water"}}, + {"pos": [9, 2, 10], "is": {"id": "minecraft:water"}}, + {"pos": [17, 2, 10], "is": {"id": "minecraft:water"}}, + {"pos": [17, 2, 13], "is": {"id": "minecraft:water"}}, + {"pos": [18, 0, 14], "is": {"id": "minecraft:water"}} + ] + } + ] +} diff --git a/tests/fluids/water/multi_level_waterfall_obstacles.json b/tests/fluids/water/multi_level_waterfall_obstacles.json new file mode 100644 index 0000000..68540c6 --- /dev/null +++ b/tests/fluids/water/multi_level_waterfall_obstacles.json @@ -0,0 +1,94 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_multi_level_waterfall_with_obstacles", + "description": "Water falls through 4 levels with obstacles (walls, partial platforms) at each tier. Tests that falling water resets spread at each landing, navigates around obstacles via slope pathfinding, and continues cascading. Each platform has a gap at a different position to create a zigzag path.", + "tags": ["falling", "cascade", "obstacles", "large"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [[0, 0, 0], [18, 20, 6]] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [[0, 0, 0], [18, 0, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [18, 19, 0]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 6], [18, 19, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [0, 19, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[18, 1, 0], [18, 19, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 16, 0], [8, 16, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[10, 12, 0], [18, 12, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 8, 0], [8, 8, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[10, 4, 0], [18, 4, 6]], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [1, 17, 3], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 250, + "do": "assert", + "checks": [ + {"pos": [1, 17, 3], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [8, 17, 3], "is": {"id": "minecraft:water", "level": "7"}}, + {"pos": [8, 16, 3], "is": {"id": "minecraft:water"}}, + {"pos": [9, 16, 3], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [9, 13, 3], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [10, 13, 3], "is": {"id": "minecraft:water"}}, + {"pos": [17, 13, 3], "is": {"id": "minecraft:water", "level": "7"}}, + {"pos": [17, 12, 3], "is": {"id": "minecraft:water"}}, + {"pos": [9, 12, 3], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [9, 9, 3], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [8, 9, 3], "is": {"id": "minecraft:water"}}, + {"pos": [1, 9, 3], "is": {"id": "minecraft:water", "level": "7"}}, + {"pos": [1, 8, 3], "is": {"id": "minecraft:water"}}, + {"pos": [9, 8, 3], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [9, 5, 3], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [10, 5, 3], "is": {"id": "minecraft:water"}}, + {"pos": [17, 5, 3], "is": {"id": "minecraft:water", "level": "7"}}, + {"pos": [17, 4, 3], "is": {"id": "minecraft:water"}}, + {"pos": [17, 1, 3], "is": {"id": "minecraft:water"}} + ] + } + ] +} diff --git a/tests/fluids/water/multi_source_pool_fill.json b/tests/fluids/water/multi_source_pool_fill.json new file mode 100644 index 0000000..c55e3dd --- /dev/null +++ b/tests/fluids/water/multi_source_pool_fill.json @@ -0,0 +1,73 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_multi_source_pool_fill", + "description": "Four source blocks placed at corners of a 19x19 walled pool fill the entire pool via infinite source creation. Every pair of adjacent sources creates new sources between them, which cascade inward until the entire pool floor is source blocks.", + "tags": ["source", "pool", "infinite", "large"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [[0, 0, 0], [20, 4, 20]] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [[0, 0, 0], [20, 0, 20]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [20, 3, 0]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 20], [20, 3, 20]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [0, 3, 20]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[20, 1, 0], [20, 3, 20]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 1, + "do": "place_each", + "blocks": [ + { "pos": [1, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [19, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [1, 1, 19], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [19, 1, 19], "block": {"id": "minecraft:water", "level": 0} } + ] + }, + { + "at": 300, + "do": "assert", + "checks": [ + {"pos": [1, 1, 1], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [10, 1, 1], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [19, 1, 1], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [1, 1, 10], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [10, 1, 10], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [19, 1, 10], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [1, 1, 19], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [10, 1, 19], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [19, 1, 19], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [5, 1, 5], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [15, 1, 5], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [5, 1, 15], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [15, 1, 15], "is": {"id": "minecraft:water", "level": "0"}} + ] + } + ] +} diff --git a/tests/fluids/water/obstacle_course.json b/tests/fluids/water/obstacle_course.json new file mode 100644 index 0000000..2b1790c --- /dev/null +++ b/tests/fluids/water/obstacle_course.json @@ -0,0 +1,93 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_obstacle_course_complex_flow", + "description": "Water flows through a complex obstacle course with pillars, partial walls, and gaps at various heights. Tests that water correctly navigates around solid blocks, preferring paths toward drop-offs via slope pathfinding while being blocked by full walls and pillars.", + "tags": ["obstacles", "pathfinding", "complex", "large"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [[0, 0, 0], [20, 5, 16]] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [[0, 0, 0], [20, 0, 16]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [20, 4, 0]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 16], [20, 4, 16]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [0, 4, 16]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[20, 1, 0], [20, 4, 16]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[5, 1, 1], [5, 3, 10]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[10, 1, 6], [10, 3, 15]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[15, 1, 1], [15, 3, 10]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "place_each", + "blocks": [ + { "pos": [3, 1, 5], "block": {"id": "minecraft:stone"} }, + { "pos": [3, 2, 5], "block": {"id": "minecraft:stone"} }, + { "pos": [3, 1, 10], "block": {"id": "minecraft:stone"} }, + { "pos": [3, 2, 10], "block": {"id": "minecraft:stone"} }, + { "pos": [8, 1, 3], "block": {"id": "minecraft:stone"} }, + { "pos": [8, 2, 3], "block": {"id": "minecraft:stone"} }, + { "pos": [8, 1, 12], "block": {"id": "minecraft:stone"} }, + { "pos": [8, 2, 12], "block": {"id": "minecraft:stone"} }, + { "pos": [13, 1, 8], "block": {"id": "minecraft:stone"} }, + { "pos": [13, 2, 8], "block": {"id": "minecraft:stone"} } + ] + }, + { "at": 1, "do": "place", "pos": [2, 1, 8], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 200, + "do": "assert", + "checks": [ + {"pos": [2, 1, 8], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [4, 1, 8], "is": {"id": "minecraft:water"}}, + {"pos": [2, 1, 12], "is": {"id": "minecraft:water"}}, + {"pos": [5, 1, 12], "is": {"id": "minecraft:water"}}, + {"pos": [6, 1, 12], "is": {"id": "minecraft:water"}}, + {"pos": [5, 1, 5], "is": {"id": "minecraft:air"}}, + {"pos": [10, 1, 3], "is": {"id": "minecraft:air"}}, + {"pos": [15, 1, 5], "is": {"id": "minecraft:air"}} + ] + } + ] +} diff --git a/tests/fluids/water/single_source_no_new_source.json b/tests/fluids/water/single_source_no_new_source.json new file mode 100644 index 0000000..82b22d0 --- /dev/null +++ b/tests/fluids/water/single_source_no_new_source.json @@ -0,0 +1,57 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_single_source_stays_flowing", + "description": "Flowing water adjacent to only one source block does not convert to a source. The getNewLiquid method requires neighbourSources >= 2 for source conversion.", + "tags": ["source", "conversion"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [6, 4, 4] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [6, 0, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [6, 3, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 4], [6, 3, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 3, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [6, 1, 0], [6, 3, 4] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [1, 1, 2], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 40, + "do": "assert", + "checks": [ + { "pos": [1, 1, 2], "is": {"id": "minecraft:water", "level": "0"} }, + { "pos": [2, 1, 2], "is": {"id": "minecraft:water", "level": "1"} }, + { "pos": [3, 1, 2], "is": {"id": "minecraft:water", "level": "2"} }, + { "pos": [4, 1, 2], "is": {"id": "minecraft:water", "level": "3"} }, + { "pos": [5, 1, 2], "is": {"id": "minecraft:water", "level": "4"} } + ] + } + ] +} + diff --git a/tests/fluids/water/slope_prefers_closer_hole.json b/tests/fluids/water/slope_prefers_closer_hole.json new file mode 100644 index 0000000..b209228 --- /dev/null +++ b/tests/fluids/water/slope_prefers_closer_hole.json @@ -0,0 +1,63 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_slope_prefers_closer_hole", + "description": "Water preferentially flows toward a closer drop-off over a further one. In getSpread(), when a direction has shorter slopeDistance, result.clear() removes longer paths and water only flows toward the closest hole.", + "tags": ["slope", "pathfinding"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [10, 4, 6] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [10, 0, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [10, 3, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 6], [10, 3, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 3, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [10, 1, 0], [10, 3, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [10, 1, 6] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 0, "do": "place", "pos": [3, 1, 3], "block": {"id": "minecraft:air"} }, + { "at": 0, "do": "place", "pos": [8, 1, 3], "block": {"id": "minecraft:air"} }, + { "at": 1, "do": "place", "pos": [5, 2, 3], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 40, + "do": "assert", + "checks": [ + { "pos": [4, 2, 3], "is": {"id": "minecraft:water"} }, + { "pos": [3, 2, 3], "is": {"id": "minecraft:water"} }, + { "pos": [6, 2, 3], "is": {"id": "minecraft:air" } } + ] + } + ] +} + diff --git a/tests/fluids/water/source_requires_solid_below.json b/tests/fluids/water/source_requires_solid_below.json new file mode 100644 index 0000000..e185930 --- /dev/null +++ b/tests/fluids/water/source_requires_solid_below.json @@ -0,0 +1,59 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_source_requires_solid_or_water_below", + "description": "Two adjacent source blocks only create a new source between them if the block below is solid or a water source. With air below the middle position, it stays as flowing water (level 1) instead of becoming a source (level 0).", + "tags": ["source", "conversion", "solid_below"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [4, 10, 4] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [4, 10, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [1, 1, 1], [3, 1, 3] ], + "with": {"id": "minecraft:air"} + }, + { + "at": 0, + "do": "fill", + "region": [ [2, 2, 1], [2, 2, 3] ], + "with": {"id": "minecraft:air"} + }, + { + "at": 0, + "do": "place_each", + "blocks": [ + { "pos": [1, 2, 2], "block": {"id": "minecraft:air"} }, + { "pos": [3, 2, 2], "block": {"id": "minecraft:air"} }, + { "pos": [2, 2, 2], "block": {"id": "minecraft:air"} } + ] + }, + { + "at": 1, + "do": "place_each", + "blocks": [ + { "pos": [1, 2, 2], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [3, 2, 2], "block": {"id": "minecraft:water", "level": 0} } + ] + }, + { + "at": 20, + "do": "assert", + "checks": [ + { "pos": [1, 2, 2], "is": {"id": "minecraft:water", "level": "0"} }, + { "pos": [3, 2, 2], "is": {"id": "minecraft:water", "level": "0"} }, + { "pos": [2, 2, 2], "is": {"id": "minecraft:water", "level": "1"} } + ] + } + ] +} + diff --git a/tests/fluids/water/source_spreads_sideways_over_hole.json b/tests/fluids/water/source_spreads_sideways_over_hole.json new file mode 100644 index 0000000..c464ec5 --- /dev/null +++ b/tests/fluids/water/source_spreads_sideways_over_hole.json @@ -0,0 +1,64 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_source_spreads_sideways_over_hole", + "description": "A source block over a hole still spreads sideways, unlike flowing water. From spread(): sources always call spreadToSides (isSource=true bypasses the isWaterHole check).", + "tags": ["source", "hole", "spread"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [6, 5, 6] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [6, 0, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 2, 0], [6, 2, 6] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 0, "do": "place", "pos": [3, 2, 3], "block": {"id": "minecraft:air"} }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [6, 4, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 6], [6, 4, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 4, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [6, 1, 0], [6, 4, 6] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [3, 3, 3], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 30, + "do": "assert", + "checks": [ + { "pos": [3, 1, 3], "is": {"id": "minecraft:water"} }, + { "pos": [4, 3, 3], "is": {"id": "minecraft:water"} }, + { "pos": [2, 3, 3], "is": {"id": "minecraft:water"} }, + { "pos": [3, 3, 4], "is": {"id": "minecraft:water"} }, + { "pos": [3, 3, 2], "is": {"id": "minecraft:water"} } + ] + } + ] +} + diff --git a/tests/fluids/water/spiral_channel_flow.json b/tests/fluids/water/spiral_channel_flow.json new file mode 100644 index 0000000..a30db6c --- /dev/null +++ b/tests/fluids/water/spiral_channel_flow.json @@ -0,0 +1,104 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_spiral_channel_flow", + "description": "Water flows through a spiral channel carved into a stone platform. The channel spirals inward toward a central hole where water falls down. Tests slope pathfinding through a long winding path and that water correctly follows the spiral toward the nearest drop-off.", + "tags": ["spiral", "channel", "pathfinding", "large"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [[0, 0, 0], [18, 5, 18]] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [[0, 0, 0], [18, 0, 18]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [18, 1, 18]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 2, 0], [18, 4, 0]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 2, 18], [18, 4, 18]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 2, 0], [0, 4, 18]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[18, 2, 0], [18, 4, 18]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[3, 2, 3], [15, 2, 15]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[6, 2, 6], [12, 2, 12]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[3, 2, 1], [15, 2, 1]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[3, 2, 17], [15, 2, 17]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[1, 2, 1], [1, 2, 17]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[17, 2, 1], [17, 2, 17]], + "with": {"id": "minecraft:stone"} + }, + { "at": 0, "do": "place", "pos": [9, 1, 9], "block": {"id": "minecraft:air"} }, + { "at": 0, "do": "place", "pos": [9, 2, 9], "block": {"id": "minecraft:air"} }, + { "at": 1, "do": "place", "pos": [2, 2, 2], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 250, + "do": "assert", + "checks": [ + {"pos": [2, 2, 2], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [9, 2, 2], "is": {"id": "minecraft:water"}}, + {"pos": [16, 2, 2], "is": {"id": "minecraft:water"}}, + {"pos": [16, 2, 9], "is": {"id": "minecraft:water"}}, + {"pos": [16, 2, 16], "is": {"id": "minecraft:water"}}, + {"pos": [9, 2, 16], "is": {"id": "minecraft:water"}}, + {"pos": [2, 2, 16], "is": {"id": "minecraft:water"}}, + {"pos": [2, 2, 9], "is": {"id": "minecraft:water"}}, + {"pos": [9, 1, 9], "is": {"id": "minecraft:water"}} + ] + } + ] +} diff --git a/tests/fluids/water/spreading_around_pillar_array.json b/tests/fluids/water/spreading_around_pillar_array.json new file mode 100644 index 0000000..af803d0 --- /dev/null +++ b/tests/fluids/water/spreading_around_pillar_array.json @@ -0,0 +1,157 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_spreading_around_pillar_array", + "description": "Water flows through a grid of stone pillars (2x2 each) spaced 2 blocks apart on a flat surface. Tests that water correctly navigates around multiple obstacles simultaneously, filling all gaps between pillars with flowing water at various levels depending on distance from the source.", + "tags": ["pillars", "obstacles", "spread", "large"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [[0, 0, 0], [20, 4, 20]] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [[0, 0, 0], [20, 0, 20]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [20, 3, 0]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 20], [20, 3, 20]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [0, 3, 20]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[20, 1, 0], [20, 3, 20]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[4, 1, 4], [5, 3, 5]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[8, 1, 4], [9, 3, 5]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[12, 1, 4], [13, 3, 5]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[16, 1, 4], [17, 3, 5]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[4, 1, 8], [5, 3, 9]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[8, 1, 8], [9, 3, 9]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[12, 1, 8], [13, 3, 9]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[16, 1, 8], [17, 3, 9]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[4, 1, 12], [5, 3, 13]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[8, 1, 12], [9, 3, 13]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[12, 1, 12], [13, 3, 13]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[16, 1, 12], [17, 3, 13]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[4, 1, 16], [5, 3, 17]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[8, 1, 16], [9, 3, 17]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[12, 1, 16], [13, 3, 17]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[16, 1, 16], [17, 3, 17]], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [10, 1, 10], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 200, + "do": "assert", + "checks": [ + {"pos": [10, 1, 10], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [10, 1, 6], "is": {"id": "minecraft:water"}}, + {"pos": [10, 1, 14], "is": {"id": "minecraft:water"}}, + {"pos": [6, 1, 10], "is": {"id": "minecraft:water"}}, + {"pos": [14, 1, 10], "is": {"id": "minecraft:water"}}, + {"pos": [6, 1, 6], "is": {"id": "minecraft:water"}}, + {"pos": [14, 1, 14], "is": {"id": "minecraft:water"}}, + {"pos": [4, 1, 4], "is": {"id": "minecraft:stone"}}, + {"pos": [8, 1, 8], "is": {"id": "minecraft:stone"}}, + {"pos": [16, 1, 16], "is": {"id": "minecraft:stone"}} + ] + } + ] +} diff --git a/tests/fluids/water/stopped_by_solid.json b/tests/fluids/water/stopped_by_solid.json new file mode 100644 index 0000000..4a25ceb --- /dev/null +++ b/tests/fluids/water/stopped_by_solid.json @@ -0,0 +1,61 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_stopped_by_solid_block", + "description": "Water flow is blocked by solid blocks (blocksMotion=true). Water accumulates against the wall but does not pass through.", + "tags": ["blocking", "solid"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [6, 3, 4] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [6, 0, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [6, 2, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 4], [6, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [6, 1, 0], [6, 2, 4] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [3, 1, 1], [3, 2, 3] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [1, 1, 2], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 30, + "do": "assert", + "checks": [ + { "pos": [2, 1, 2], "is": {"id": "minecraft:water"} }, + { "pos": [4, 1, 2], "is": {"id": "minecraft:air" } }, + { "pos": [5, 1, 2], "is": {"id": "minecraft:air" } } + ] + } + ] +} + diff --git a/tests/fluids/water/three_sources_spread_while_falling.json b/tests/fluids/water/three_sources_spread_while_falling.json new file mode 100644 index 0000000..feeef76 --- /dev/null +++ b/tests/fluids/water/three_sources_spread_while_falling.json @@ -0,0 +1,70 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_three_source_neighbors_spread_while_falling", + "description": "When water spreads downward AND has 3+ source neighbors, it also spreads sideways in the same tick. From spread(): sourceNeighborCount >= 3 triggers spreadToSides even when flowing down.", + "tags": ["source", "falling", "spread"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [ [0, 0, 0], [6, 5, 6] ] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [ [0, 0, 0], [6, 0, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 2, 0], [6, 2, 6] ], + "with": {"id": "minecraft:stone"} + }, + { "at": 0, "do": "place", "pos": [3, 2, 3], "block": {"id": "minecraft:air"} }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [6, 4, 0] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 6], [6, 4, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [0, 1, 0], [0, 4, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [ [6, 1, 0], [6, 4, 6] ], + "with": {"id": "minecraft:stone"} + }, + { + "at": 1, + "do": "place_each", + "blocks": [ + { "pos": [2, 3, 3], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [4, 3, 3], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [3, 3, 2], "block": {"id": "minecraft:water", "level": 0} } + ] + }, + { + "at": 30, + "do": "assert", + "checks": [ + { "pos": [3, 3, 3], "is": {"id": "minecraft:water", "level": "1"} }, + { "pos": [3, 1, 3], "is": {"id": "minecraft:water" } }, + { "pos": [3, 3, 4], "is": {"id": "minecraft:water" } } + ] + } + ] +} + diff --git a/tests/fluids/water/two_sources_converge.json b/tests/fluids/water/two_sources_converge.json new file mode 100644 index 0000000..165a7de --- /dev/null +++ b/tests/fluids/water/two_sources_converge.json @@ -0,0 +1,75 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_two_sources_converge_on_flat", + "description": "Two source blocks placed 14 apart on a flat surface spread toward each other. Where they meet in the middle, the levels should stabilize. With dropOff=1 each source spreads 7 blocks, so they meet at x=8 from source at x=1 and x=15. The overlapping flows at x=8 get level recalculated from both directions via getNewLiquid.", + "tags": ["converge", "spread", "recalculate", "large"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [[0, 0, 0], [18, 4, 6]] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [[0, 0, 0], [18, 0, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [18, 3, 0]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 6], [18, 3, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [0, 3, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[18, 1, 0], [18, 3, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 1, + "do": "place_each", + "blocks": [ + { "pos": [1, 1, 3], "block": {"id": "minecraft:water", "level": 0} }, + { "pos": [17, 1, 3], "block": {"id": "minecraft:water", "level": 0} } + ] + }, + { + "at": 100, + "do": "assert", + "checks": [ + {"pos": [1, 1, 3], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [2, 1, 3], "is": {"id": "minecraft:water", "level": "1"}}, + {"pos": [3, 1, 3], "is": {"id": "minecraft:water", "level": "2"}}, + {"pos": [4, 1, 3], "is": {"id": "minecraft:water", "level": "3"}}, + {"pos": [5, 1, 3], "is": {"id": "minecraft:water", "level": "4"}}, + {"pos": [6, 1, 3], "is": {"id": "minecraft:water", "level": "5"}}, + {"pos": [7, 1, 3], "is": {"id": "minecraft:water", "level": "6"}}, + {"pos": [8, 1, 3], "is": {"id": "minecraft:water", "level": "7"}}, + {"pos": [9, 1, 3], "is": {"id": "minecraft:water"}}, + {"pos": [10, 1, 3], "is": {"id": "minecraft:water", "level": "7"}}, + {"pos": [11, 1, 3], "is": {"id": "minecraft:water", "level": "6"}}, + {"pos": [12, 1, 3], "is": {"id": "minecraft:water", "level": "5"}}, + {"pos": [13, 1, 3], "is": {"id": "minecraft:water", "level": "4"}}, + {"pos": [14, 1, 3], "is": {"id": "minecraft:water", "level": "3"}}, + {"pos": [15, 1, 3], "is": {"id": "minecraft:water", "level": "2"}}, + {"pos": [16, 1, 3], "is": {"id": "minecraft:water", "level": "1"}}, + {"pos": [17, 1, 3], "is": {"id": "minecraft:water", "level": "0"}} + ] + } + ] +} diff --git a/tests/fluids/water/waterfall_into_pool_overflow.json b/tests/fluids/water/waterfall_into_pool_overflow.json new file mode 100644 index 0000000..bea3417 --- /dev/null +++ b/tests/fluids/water/waterfall_into_pool_overflow.json @@ -0,0 +1,75 @@ +{ + "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", + "name": "water_waterfall_into_pool_overflow", + "description": "A source block at the top of a tall column falls into a small walled pool below. The pool fills with source blocks (via infinite source conversion from adjacent flow) and eventually overflows the pool walls. Tests falling water column, source creation in confined space, and overflow behavior.", + "tags": ["waterfall", "pool", "overflow", "source", "large"], + "dependencies": [], + "setup": { + "cleanup": { + "region": [[0, 0, 0], [16, 16, 8]] + } + }, + "timeline": [ + { + "at": 0, + "do": "fill", + "region": [[0, 0, 0], [16, 0, 8]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[5, 1, 2], [11, 2, 6]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[6, 1, 3], [10, 1, 5]], + "with": {"id": "minecraft:air"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [16, 15, 0]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 8], [16, 15, 8]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[0, 1, 0], [0, 15, 8]], + "with": {"id": "minecraft:stone"} + }, + { + "at": 0, + "do": "fill", + "region": [[16, 1, 0], [16, 15, 8]], + "with": {"id": "minecraft:stone"} + }, + { "at": 1, "do": "place", "pos": [8, 15, 4], "block": {"id": "minecraft:water", "level": 0} }, + { + "at": 300, + "do": "assert", + "checks": [ + {"pos": [8, 15, 4], "is": {"id": "minecraft:water", "level": "0"}}, + {"pos": [8, 14, 4], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [8, 10, 4], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [8, 5, 4], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [8, 3, 4], "is": {"id": "minecraft:water", "level": "8"}}, + {"pos": [8, 1, 4], "is": {"id": "minecraft:water"}}, + {"pos": [7, 1, 4], "is": {"id": "minecraft:water"}}, + {"pos": [9, 1, 4], "is": {"id": "minecraft:water"}}, + {"pos": [8, 1, 3], "is": {"id": "minecraft:water"}}, + {"pos": [8, 1, 5], "is": {"id": "minecraft:water"}}, + {"pos": [6, 1, 3], "is": {"id": "minecraft:water"}}, + {"pos": [10, 1, 5], "is": {"id": "minecraft:water"}} + ] + } + ] +} From d70e775b79e87ff1172793803c8570bea2d8ab79 Mon Sep 17 00:00:00 2001 From: JunkyDeveloper Date: Tue, 10 Mar 2026 00:47:54 +0100 Subject: [PATCH 2/2] removed wrong tests --- tests/fluids/water/cascading_waterfall.json | 74 --------- tests/fluids/water/channel_race.json | 90 ---------- tests/fluids/water/infinite_source_grid.json | 83 --------- tests/fluids/water/maze_slope_routing.json | 98 ----------- .../multi_level_waterfall_obstacles.json | 94 ----------- .../fluids/water/multi_source_pool_fill.json | 73 -------- tests/fluids/water/obstacle_course.json | 93 ----------- tests/fluids/water/spiral_channel_flow.json | 104 ------------ .../water/spreading_around_pillar_array.json | 157 ------------------ tests/fluids/water/two_sources_converge.json | 75 --------- .../water/waterfall_into_pool_overflow.json | 75 --------- 11 files changed, 1016 deletions(-) delete mode 100644 tests/fluids/water/cascading_waterfall.json delete mode 100644 tests/fluids/water/channel_race.json delete mode 100644 tests/fluids/water/infinite_source_grid.json delete mode 100644 tests/fluids/water/maze_slope_routing.json delete mode 100644 tests/fluids/water/multi_level_waterfall_obstacles.json delete mode 100644 tests/fluids/water/multi_source_pool_fill.json delete mode 100644 tests/fluids/water/obstacle_course.json delete mode 100644 tests/fluids/water/spiral_channel_flow.json delete mode 100644 tests/fluids/water/spreading_around_pillar_array.json delete mode 100644 tests/fluids/water/two_sources_converge.json delete mode 100644 tests/fluids/water/waterfall_into_pool_overflow.json diff --git a/tests/fluids/water/cascading_waterfall.json b/tests/fluids/water/cascading_waterfall.json deleted file mode 100644 index 166f957..0000000 --- a/tests/fluids/water/cascading_waterfall.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", - "name": "water_cascading_waterfall", - "description": "Water cascading down multiple stair-stepped platforms, each time resetting its spread level via falling. Tests that each landing produces full 7-block spread and that falling water at every step has level 8.", - "tags": ["cascade", "falling", "staircase"], - "dependencies": [], - "setup": { - "cleanup": { - "region": [[0, 0, 0], [20, 12, 6]] - } - }, - "timeline": [ - { - "at": 0, - "do": "fill", - "region": [[0, 0, 0], [20, 0, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [20, 11, 0]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 6], [20, 11, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [0, 11, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[20, 1, 0], [20, 11, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 8, 0], [5, 8, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[6, 4, 0], [11, 4, 6]], - "with": {"id": "minecraft:stone"} - }, - { "at": 1, "do": "place", "pos": [1, 9, 3], "block": {"id": "minecraft:water", "level": 0} }, - { - "at": 120, - "do": "assert", - "checks": [ - {"pos": [1, 9, 3], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [5, 9, 3], "is": {"id": "minecraft:water", "level": "4"}}, - {"pos": [5, 8, 3], "is": {"id": "minecraft:water"}}, - {"pos": [6, 8, 3], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [6, 5, 3], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [6, 1, 3], "is": {"id": "minecraft:water"}}, - {"pos": [7, 5, 3], "is": {"id": "minecraft:water", "level": "1"}}, - {"pos": [11, 5, 3], "is": {"id": "minecraft:water", "level": "5"}}, - {"pos": [12, 4, 3], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [12, 1, 3], "is": {"id": "minecraft:water"}}, - {"pos": [13, 1, 3], "is": {"id": "minecraft:water"}} - ] - } - ] -} diff --git a/tests/fluids/water/channel_race.json b/tests/fluids/water/channel_race.json deleted file mode 100644 index 8d26376..0000000 --- a/tests/fluids/water/channel_race.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", - "name": "water_channel_race_slope_selection", - "description": "Water source placed between two channels of different lengths, both leading to drop-offs. The shorter channel (3 blocks) has a hole while the longer channel (7 blocks) also has a hole. Water should prefer the shorter path via getSlopeDistance and only flow that direction, ignoring the longer path entirely.", - "tags": ["slope", "pathfinding", "channel", "large"], - "dependencies": [], - "setup": { - "cleanup": { - "region": [[0, 0, 0], [22, 5, 8]] - } - }, - "timeline": [ - { - "at": 0, - "do": "fill", - "region": [[0, 0, 0], [22, 0, 8]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [22, 1, 8]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 2, 0], [22, 4, 0]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 2, 8], [22, 4, 8]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 2, 0], [0, 4, 8]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[22, 2, 0], [22, 4, 8]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 2, 3], [22, 4, 3]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 2, 5], [22, 4, 5]], - "with": {"id": "minecraft:stone"} - }, - { "at": 0, "do": "place", "pos": [7, 1, 2], "block": {"id": "minecraft:air"} }, - { "at": 0, "do": "place", "pos": [15, 1, 6], "block": {"id": "minecraft:air"} }, - { - "at": 0, - "do": "fill", - "region": [[10, 2, 3], [10, 4, 5]], - "with": {"id": "minecraft:air"} - }, - { "at": 1, "do": "place", "pos": [10, 2, 4], "block": {"id": "minecraft:water", "level": 0} }, - { - "at": 80, - "do": "assert", - "checks": [ - {"pos": [10, 2, 4], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [10, 2, 2], "is": {"id": "minecraft:water"}}, - {"pos": [9, 2, 2], "is": {"id": "minecraft:water"}}, - {"pos": [8, 2, 2], "is": {"id": "minecraft:water"}}, - {"pos": [7, 2, 2], "is": {"id": "minecraft:water"}}, - {"pos": [7, 1, 2], "is": {"id": "minecraft:water"}}, - {"pos": [10, 2, 6], "is": {"id": "minecraft:water"}}, - {"pos": [11, 2, 6], "is": {"id": "minecraft:water"}}, - {"pos": [12, 2, 6], "is": {"id": "minecraft:water"}}, - {"pos": [13, 2, 6], "is": {"id": "minecraft:water"}}, - {"pos": [14, 2, 6], "is": {"id": "minecraft:water"}}, - {"pos": [15, 2, 6], "is": {"id": "minecraft:water"}}, - {"pos": [15, 1, 6], "is": {"id": "minecraft:water"}} - ] - } - ] -} diff --git a/tests/fluids/water/infinite_source_grid.json b/tests/fluids/water/infinite_source_grid.json deleted file mode 100644 index d511599..0000000 --- a/tests/fluids/water/infinite_source_grid.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", - "name": "water_infinite_source_grid_propagation", - "description": "A line of source blocks along one edge of a 16x16 pool causes infinite source creation to propagate across the entire pool. Tests that source conversion cascades correctly: each new row of sources enables the next row to form, filling the pool entirely with source blocks.", - "tags": ["source", "infinite", "grid", "large"], - "dependencies": [], - "setup": { - "cleanup": { - "region": [[0, 0, 0], [17, 4, 17]] - } - }, - "timeline": [ - { - "at": 0, - "do": "fill", - "region": [[0, 0, 0], [17, 0, 17]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [17, 3, 0]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 17], [17, 3, 17]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [0, 3, 17]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[17, 1, 0], [17, 3, 17]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 1, - "do": "place_each", - "blocks": [ - { "pos": [1, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [2, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [3, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [4, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [5, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [6, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [7, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [8, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [9, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [10, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [11, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [12, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [13, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [14, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [15, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [16, 1, 1], "block": {"id": "minecraft:water", "level": 0} } - ] - }, - { - "at": 500, - "do": "assert", - "checks": [ - {"pos": [1, 1, 2], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [8, 1, 2], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [16, 1, 2], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [1, 1, 8], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [8, 1, 8], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [16, 1, 8], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [1, 1, 16], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [8, 1, 16], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [16, 1, 16], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [5, 1, 10], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [12, 1, 14], "is": {"id": "minecraft:water", "level": "0"}} - ] - } - ] -} diff --git a/tests/fluids/water/maze_slope_routing.json b/tests/fluids/water/maze_slope_routing.json deleted file mode 100644 index a70f269..0000000 --- a/tests/fluids/water/maze_slope_routing.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", - "name": "water_maze_slope_routing", - "description": "Water navigates a maze-like channel structure using slope pathfinding. The source is placed at one end with walls creating a winding path. A hole exists at the end of the correct path, so getSpread/getSlopeDistance guides the water through the maze toward the drop-off.", - "tags": ["slope", "pathfinding", "maze", "large"], - "dependencies": [], - "setup": { - "cleanup": { - "region": [[0, 0, 0], [20, 5, 16]] - } - }, - "timeline": [ - { - "at": 0, - "do": "fill", - "region": [[0, 0, 0], [20, 0, 16]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [20, 1, 16]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 2, 0], [20, 4, 0]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 2, 16], [20, 4, 16]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 2, 0], [0, 4, 16]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[20, 2, 0], [20, 4, 16]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[1, 2, 4], [16, 4, 4]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[4, 2, 4], [4, 4, 12]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[4, 2, 8], [16, 4, 8]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[8, 2, 8], [8, 4, 16]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[8, 2, 12], [16, 4, 12]], - "with": {"id": "minecraft:stone"} - }, - { "at": 0, "do": "place", "pos": [18, 1, 14], "block": {"id": "minecraft:air"} }, - { "at": 1, "do": "place", "pos": [1, 2, 2], "block": {"id": "minecraft:water", "level": 0} }, - { - "at": 200, - "do": "assert", - "checks": [ - {"pos": [1, 2, 2], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [5, 2, 2], "is": {"id": "minecraft:water"}}, - {"pos": [17, 2, 2], "is": {"id": "minecraft:water"}}, - {"pos": [17, 2, 5], "is": {"id": "minecraft:water"}}, - {"pos": [5, 2, 6], "is": {"id": "minecraft:water"}}, - {"pos": [5, 2, 7], "is": {"id": "minecraft:water"}}, - {"pos": [9, 2, 10], "is": {"id": "minecraft:water"}}, - {"pos": [17, 2, 10], "is": {"id": "minecraft:water"}}, - {"pos": [17, 2, 13], "is": {"id": "minecraft:water"}}, - {"pos": [18, 0, 14], "is": {"id": "minecraft:water"}} - ] - } - ] -} diff --git a/tests/fluids/water/multi_level_waterfall_obstacles.json b/tests/fluids/water/multi_level_waterfall_obstacles.json deleted file mode 100644 index 68540c6..0000000 --- a/tests/fluids/water/multi_level_waterfall_obstacles.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", - "name": "water_multi_level_waterfall_with_obstacles", - "description": "Water falls through 4 levels with obstacles (walls, partial platforms) at each tier. Tests that falling water resets spread at each landing, navigates around obstacles via slope pathfinding, and continues cascading. Each platform has a gap at a different position to create a zigzag path.", - "tags": ["falling", "cascade", "obstacles", "large"], - "dependencies": [], - "setup": { - "cleanup": { - "region": [[0, 0, 0], [18, 20, 6]] - } - }, - "timeline": [ - { - "at": 0, - "do": "fill", - "region": [[0, 0, 0], [18, 0, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [18, 19, 0]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 6], [18, 19, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [0, 19, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[18, 1, 0], [18, 19, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 16, 0], [8, 16, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[10, 12, 0], [18, 12, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 8, 0], [8, 8, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[10, 4, 0], [18, 4, 6]], - "with": {"id": "minecraft:stone"} - }, - { "at": 1, "do": "place", "pos": [1, 17, 3], "block": {"id": "minecraft:water", "level": 0} }, - { - "at": 250, - "do": "assert", - "checks": [ - {"pos": [1, 17, 3], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [8, 17, 3], "is": {"id": "minecraft:water", "level": "7"}}, - {"pos": [8, 16, 3], "is": {"id": "minecraft:water"}}, - {"pos": [9, 16, 3], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [9, 13, 3], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [10, 13, 3], "is": {"id": "minecraft:water"}}, - {"pos": [17, 13, 3], "is": {"id": "minecraft:water", "level": "7"}}, - {"pos": [17, 12, 3], "is": {"id": "minecraft:water"}}, - {"pos": [9, 12, 3], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [9, 9, 3], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [8, 9, 3], "is": {"id": "minecraft:water"}}, - {"pos": [1, 9, 3], "is": {"id": "minecraft:water", "level": "7"}}, - {"pos": [1, 8, 3], "is": {"id": "minecraft:water"}}, - {"pos": [9, 8, 3], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [9, 5, 3], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [10, 5, 3], "is": {"id": "minecraft:water"}}, - {"pos": [17, 5, 3], "is": {"id": "minecraft:water", "level": "7"}}, - {"pos": [17, 4, 3], "is": {"id": "minecraft:water"}}, - {"pos": [17, 1, 3], "is": {"id": "minecraft:water"}} - ] - } - ] -} diff --git a/tests/fluids/water/multi_source_pool_fill.json b/tests/fluids/water/multi_source_pool_fill.json deleted file mode 100644 index c55e3dd..0000000 --- a/tests/fluids/water/multi_source_pool_fill.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", - "name": "water_multi_source_pool_fill", - "description": "Four source blocks placed at corners of a 19x19 walled pool fill the entire pool via infinite source creation. Every pair of adjacent sources creates new sources between them, which cascade inward until the entire pool floor is source blocks.", - "tags": ["source", "pool", "infinite", "large"], - "dependencies": [], - "setup": { - "cleanup": { - "region": [[0, 0, 0], [20, 4, 20]] - } - }, - "timeline": [ - { - "at": 0, - "do": "fill", - "region": [[0, 0, 0], [20, 0, 20]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [20, 3, 0]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 20], [20, 3, 20]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [0, 3, 20]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[20, 1, 0], [20, 3, 20]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 1, - "do": "place_each", - "blocks": [ - { "pos": [1, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [19, 1, 1], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [1, 1, 19], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [19, 1, 19], "block": {"id": "minecraft:water", "level": 0} } - ] - }, - { - "at": 300, - "do": "assert", - "checks": [ - {"pos": [1, 1, 1], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [10, 1, 1], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [19, 1, 1], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [1, 1, 10], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [10, 1, 10], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [19, 1, 10], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [1, 1, 19], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [10, 1, 19], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [19, 1, 19], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [5, 1, 5], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [15, 1, 5], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [5, 1, 15], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [15, 1, 15], "is": {"id": "minecraft:water", "level": "0"}} - ] - } - ] -} diff --git a/tests/fluids/water/obstacle_course.json b/tests/fluids/water/obstacle_course.json deleted file mode 100644 index 2b1790c..0000000 --- a/tests/fluids/water/obstacle_course.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", - "name": "water_obstacle_course_complex_flow", - "description": "Water flows through a complex obstacle course with pillars, partial walls, and gaps at various heights. Tests that water correctly navigates around solid blocks, preferring paths toward drop-offs via slope pathfinding while being blocked by full walls and pillars.", - "tags": ["obstacles", "pathfinding", "complex", "large"], - "dependencies": [], - "setup": { - "cleanup": { - "region": [[0, 0, 0], [20, 5, 16]] - } - }, - "timeline": [ - { - "at": 0, - "do": "fill", - "region": [[0, 0, 0], [20, 0, 16]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [20, 4, 0]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 16], [20, 4, 16]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [0, 4, 16]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[20, 1, 0], [20, 4, 16]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[5, 1, 1], [5, 3, 10]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[10, 1, 6], [10, 3, 15]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[15, 1, 1], [15, 3, 10]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "place_each", - "blocks": [ - { "pos": [3, 1, 5], "block": {"id": "minecraft:stone"} }, - { "pos": [3, 2, 5], "block": {"id": "minecraft:stone"} }, - { "pos": [3, 1, 10], "block": {"id": "minecraft:stone"} }, - { "pos": [3, 2, 10], "block": {"id": "minecraft:stone"} }, - { "pos": [8, 1, 3], "block": {"id": "minecraft:stone"} }, - { "pos": [8, 2, 3], "block": {"id": "minecraft:stone"} }, - { "pos": [8, 1, 12], "block": {"id": "minecraft:stone"} }, - { "pos": [8, 2, 12], "block": {"id": "minecraft:stone"} }, - { "pos": [13, 1, 8], "block": {"id": "minecraft:stone"} }, - { "pos": [13, 2, 8], "block": {"id": "minecraft:stone"} } - ] - }, - { "at": 1, "do": "place", "pos": [2, 1, 8], "block": {"id": "minecraft:water", "level": 0} }, - { - "at": 200, - "do": "assert", - "checks": [ - {"pos": [2, 1, 8], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [4, 1, 8], "is": {"id": "minecraft:water"}}, - {"pos": [2, 1, 12], "is": {"id": "minecraft:water"}}, - {"pos": [5, 1, 12], "is": {"id": "minecraft:water"}}, - {"pos": [6, 1, 12], "is": {"id": "minecraft:water"}}, - {"pos": [5, 1, 5], "is": {"id": "minecraft:air"}}, - {"pos": [10, 1, 3], "is": {"id": "minecraft:air"}}, - {"pos": [15, 1, 5], "is": {"id": "minecraft:air"}} - ] - } - ] -} diff --git a/tests/fluids/water/spiral_channel_flow.json b/tests/fluids/water/spiral_channel_flow.json deleted file mode 100644 index a30db6c..0000000 --- a/tests/fluids/water/spiral_channel_flow.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", - "name": "water_spiral_channel_flow", - "description": "Water flows through a spiral channel carved into a stone platform. The channel spirals inward toward a central hole where water falls down. Tests slope pathfinding through a long winding path and that water correctly follows the spiral toward the nearest drop-off.", - "tags": ["spiral", "channel", "pathfinding", "large"], - "dependencies": [], - "setup": { - "cleanup": { - "region": [[0, 0, 0], [18, 5, 18]] - } - }, - "timeline": [ - { - "at": 0, - "do": "fill", - "region": [[0, 0, 0], [18, 0, 18]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [18, 1, 18]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 2, 0], [18, 4, 0]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 2, 18], [18, 4, 18]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 2, 0], [0, 4, 18]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[18, 2, 0], [18, 4, 18]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[3, 2, 3], [15, 2, 15]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[6, 2, 6], [12, 2, 12]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[3, 2, 1], [15, 2, 1]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[3, 2, 17], [15, 2, 17]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[1, 2, 1], [1, 2, 17]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[17, 2, 1], [17, 2, 17]], - "with": {"id": "minecraft:stone"} - }, - { "at": 0, "do": "place", "pos": [9, 1, 9], "block": {"id": "minecraft:air"} }, - { "at": 0, "do": "place", "pos": [9, 2, 9], "block": {"id": "minecraft:air"} }, - { "at": 1, "do": "place", "pos": [2, 2, 2], "block": {"id": "minecraft:water", "level": 0} }, - { - "at": 250, - "do": "assert", - "checks": [ - {"pos": [2, 2, 2], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [9, 2, 2], "is": {"id": "minecraft:water"}}, - {"pos": [16, 2, 2], "is": {"id": "minecraft:water"}}, - {"pos": [16, 2, 9], "is": {"id": "minecraft:water"}}, - {"pos": [16, 2, 16], "is": {"id": "minecraft:water"}}, - {"pos": [9, 2, 16], "is": {"id": "minecraft:water"}}, - {"pos": [2, 2, 16], "is": {"id": "minecraft:water"}}, - {"pos": [2, 2, 9], "is": {"id": "minecraft:water"}}, - {"pos": [9, 1, 9], "is": {"id": "minecraft:water"}} - ] - } - ] -} diff --git a/tests/fluids/water/spreading_around_pillar_array.json b/tests/fluids/water/spreading_around_pillar_array.json deleted file mode 100644 index af803d0..0000000 --- a/tests/fluids/water/spreading_around_pillar_array.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", - "name": "water_spreading_around_pillar_array", - "description": "Water flows through a grid of stone pillars (2x2 each) spaced 2 blocks apart on a flat surface. Tests that water correctly navigates around multiple obstacles simultaneously, filling all gaps between pillars with flowing water at various levels depending on distance from the source.", - "tags": ["pillars", "obstacles", "spread", "large"], - "dependencies": [], - "setup": { - "cleanup": { - "region": [[0, 0, 0], [20, 4, 20]] - } - }, - "timeline": [ - { - "at": 0, - "do": "fill", - "region": [[0, 0, 0], [20, 0, 20]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [20, 3, 0]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 20], [20, 3, 20]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [0, 3, 20]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[20, 1, 0], [20, 3, 20]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[4, 1, 4], [5, 3, 5]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[8, 1, 4], [9, 3, 5]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[12, 1, 4], [13, 3, 5]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[16, 1, 4], [17, 3, 5]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[4, 1, 8], [5, 3, 9]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[8, 1, 8], [9, 3, 9]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[12, 1, 8], [13, 3, 9]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[16, 1, 8], [17, 3, 9]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[4, 1, 12], [5, 3, 13]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[8, 1, 12], [9, 3, 13]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[12, 1, 12], [13, 3, 13]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[16, 1, 12], [17, 3, 13]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[4, 1, 16], [5, 3, 17]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[8, 1, 16], [9, 3, 17]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[12, 1, 16], [13, 3, 17]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[16, 1, 16], [17, 3, 17]], - "with": {"id": "minecraft:stone"} - }, - { "at": 1, "do": "place", "pos": [10, 1, 10], "block": {"id": "minecraft:water", "level": 0} }, - { - "at": 200, - "do": "assert", - "checks": [ - {"pos": [10, 1, 10], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [10, 1, 6], "is": {"id": "minecraft:water"}}, - {"pos": [10, 1, 14], "is": {"id": "minecraft:water"}}, - {"pos": [6, 1, 10], "is": {"id": "minecraft:water"}}, - {"pos": [14, 1, 10], "is": {"id": "minecraft:water"}}, - {"pos": [6, 1, 6], "is": {"id": "minecraft:water"}}, - {"pos": [14, 1, 14], "is": {"id": "minecraft:water"}}, - {"pos": [4, 1, 4], "is": {"id": "minecraft:stone"}}, - {"pos": [8, 1, 8], "is": {"id": "minecraft:stone"}}, - {"pos": [16, 1, 16], "is": {"id": "minecraft:stone"}} - ] - } - ] -} diff --git a/tests/fluids/water/two_sources_converge.json b/tests/fluids/water/two_sources_converge.json deleted file mode 100644 index 165a7de..0000000 --- a/tests/fluids/water/two_sources_converge.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", - "name": "water_two_sources_converge_on_flat", - "description": "Two source blocks placed 14 apart on a flat surface spread toward each other. Where they meet in the middle, the levels should stabilize. With dropOff=1 each source spreads 7 blocks, so they meet at x=8 from source at x=1 and x=15. The overlapping flows at x=8 get level recalculated from both directions via getNewLiquid.", - "tags": ["converge", "spread", "recalculate", "large"], - "dependencies": [], - "setup": { - "cleanup": { - "region": [[0, 0, 0], [18, 4, 6]] - } - }, - "timeline": [ - { - "at": 0, - "do": "fill", - "region": [[0, 0, 0], [18, 0, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [18, 3, 0]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 6], [18, 3, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [0, 3, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[18, 1, 0], [18, 3, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 1, - "do": "place_each", - "blocks": [ - { "pos": [1, 1, 3], "block": {"id": "minecraft:water", "level": 0} }, - { "pos": [17, 1, 3], "block": {"id": "minecraft:water", "level": 0} } - ] - }, - { - "at": 100, - "do": "assert", - "checks": [ - {"pos": [1, 1, 3], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [2, 1, 3], "is": {"id": "minecraft:water", "level": "1"}}, - {"pos": [3, 1, 3], "is": {"id": "minecraft:water", "level": "2"}}, - {"pos": [4, 1, 3], "is": {"id": "minecraft:water", "level": "3"}}, - {"pos": [5, 1, 3], "is": {"id": "minecraft:water", "level": "4"}}, - {"pos": [6, 1, 3], "is": {"id": "minecraft:water", "level": "5"}}, - {"pos": [7, 1, 3], "is": {"id": "minecraft:water", "level": "6"}}, - {"pos": [8, 1, 3], "is": {"id": "minecraft:water", "level": "7"}}, - {"pos": [9, 1, 3], "is": {"id": "minecraft:water"}}, - {"pos": [10, 1, 3], "is": {"id": "minecraft:water", "level": "7"}}, - {"pos": [11, 1, 3], "is": {"id": "minecraft:water", "level": "6"}}, - {"pos": [12, 1, 3], "is": {"id": "minecraft:water", "level": "5"}}, - {"pos": [13, 1, 3], "is": {"id": "minecraft:water", "level": "4"}}, - {"pos": [14, 1, 3], "is": {"id": "minecraft:water", "level": "3"}}, - {"pos": [15, 1, 3], "is": {"id": "minecraft:water", "level": "2"}}, - {"pos": [16, 1, 3], "is": {"id": "minecraft:water", "level": "1"}}, - {"pos": [17, 1, 3], "is": {"id": "minecraft:water", "level": "0"}} - ] - } - ] -} diff --git a/tests/fluids/water/waterfall_into_pool_overflow.json b/tests/fluids/water/waterfall_into_pool_overflow.json deleted file mode 100644 index bea3417..0000000 --- a/tests/fluids/water/waterfall_into_pool_overflow.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/FlintTestMC/flint-core/refs/heads/main/flint-content/test_spec_schema.json", - "name": "water_waterfall_into_pool_overflow", - "description": "A source block at the top of a tall column falls into a small walled pool below. The pool fills with source blocks (via infinite source conversion from adjacent flow) and eventually overflows the pool walls. Tests falling water column, source creation in confined space, and overflow behavior.", - "tags": ["waterfall", "pool", "overflow", "source", "large"], - "dependencies": [], - "setup": { - "cleanup": { - "region": [[0, 0, 0], [16, 16, 8]] - } - }, - "timeline": [ - { - "at": 0, - "do": "fill", - "region": [[0, 0, 0], [16, 0, 8]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[5, 1, 2], [11, 2, 6]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[6, 1, 3], [10, 1, 5]], - "with": {"id": "minecraft:air"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [16, 15, 0]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 8], [16, 15, 8]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[0, 1, 0], [0, 15, 8]], - "with": {"id": "minecraft:stone"} - }, - { - "at": 0, - "do": "fill", - "region": [[16, 1, 0], [16, 15, 8]], - "with": {"id": "minecraft:stone"} - }, - { "at": 1, "do": "place", "pos": [8, 15, 4], "block": {"id": "minecraft:water", "level": 0} }, - { - "at": 300, - "do": "assert", - "checks": [ - {"pos": [8, 15, 4], "is": {"id": "minecraft:water", "level": "0"}}, - {"pos": [8, 14, 4], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [8, 10, 4], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [8, 5, 4], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [8, 3, 4], "is": {"id": "minecraft:water", "level": "8"}}, - {"pos": [8, 1, 4], "is": {"id": "minecraft:water"}}, - {"pos": [7, 1, 4], "is": {"id": "minecraft:water"}}, - {"pos": [9, 1, 4], "is": {"id": "minecraft:water"}}, - {"pos": [8, 1, 3], "is": {"id": "minecraft:water"}}, - {"pos": [8, 1, 5], "is": {"id": "minecraft:water"}}, - {"pos": [6, 1, 3], "is": {"id": "minecraft:water"}}, - {"pos": [10, 1, 5], "is": {"id": "minecraft:water"}} - ] - } - ] -}