├── .idea ├── .gitignore ├── misc.xml ├── modules.xml ├── packs.iml ├── runConfigurations.xml └── vcs.xml ├── LICENSE ├── README.md ├── biome-providers ├── README.md ├── presets │ ├── default.yml │ └── single.yml ├── sources │ ├── aether.yml │ ├── betterend.yml │ ├── reimagEND.yml │ └── vanilla.yml └── stages │ ├── add_border_biomes.yml │ ├── aether_pockets.yml │ ├── base-distribution │ ├── aether_distribution.yml │ ├── end_biome_distribution.yml │ ├── optional │ │ ├── betterend_distribution.yml │ │ └── vanilla_distribution.yml │ ├── ring_distribution.yml │ └── void_distribution.yml │ ├── dragon_pit.yml │ ├── expand.yml │ └── smooth.yml ├── biomes ├── abstract │ ├── base_aether.yml │ ├── base_end.yml │ ├── base_void.yml │ ├── carving │ │ └── carving_land.yml │ ├── cave │ │ └── cave.yml │ ├── features │ │ ├── deposits │ │ │ └── deposits_default.yml │ │ └── ores │ │ │ └── ores_default.yml │ └── terrain │ │ ├── aether │ │ ├── coasts │ │ │ ├── eq_aether_coast_isles.yml │ │ │ └── eq_aether_coasts.yml │ │ ├── eq_aether_cliffs.yml │ │ ├── eq_aether_default.yml │ │ ├── eq_aether_driftfalls.yml │ │ └── mountains │ │ │ ├── eq_aether_mountains.yml │ │ │ └── eq_ridges.yml │ │ ├── end │ │ ├── defaults │ │ │ ├── eq_default.yml │ │ │ ├── eq_default_noodles.yml │ │ │ └── eq_default_planes.yml │ │ ├── eq_ashen.yml │ │ ├── eq_bumpy.yml │ │ ├── eq_fragmented.yml │ │ ├── eq_mountains.yml │ │ ├── eq_overhangs.yml │ │ ├── eq_rectangular.yml │ │ ├── eq_small_isles.yml │ │ ├── eq_spikes.yml │ │ ├── eq_spires.yml │ │ └── eq_webs.yml │ │ └── void │ │ ├── eq_debri.yml │ │ └── eq_void.yml ├── aether │ ├── aether_ancient_aether.yml │ ├── aether_azure_meadows.yml │ ├── aether_bramble_wilds.yml │ ├── aether_cloud_sea.yml │ ├── aether_crimsic_landscapes.yml │ ├── aether_driftfalls.yml │ ├── aether_frostbite_woods.yml │ ├── aether_golden_fields.yml │ ├── aether_honey_heights.yml │ ├── aether_orchard_woodlands.yml │ ├── aether_tenebrous_thicket.yml │ ├── coasts │ │ ├── aether_insipid_coasts.yml │ │ └── aether_marble_coasts.yml │ └── mountains │ │ ├── aether_frigid_bluffs.yml │ │ └── aether_prismatic_ridges.yml ├── colors.yml ├── end │ ├── amethyst_end.yml │ ├── aprichorus_plains.yml │ ├── argil_growth.yml │ ├── ashen_end.yml │ ├── cerise_corral.yml │ ├── choral_deadlands.yml │ ├── corrupted_wastes.yml │ ├── craggy_end.yml │ ├── crying_currents.yml │ ├── crystal_overhead.yml │ ├── dark_end.yml │ ├── dragon-island │ │ └── main_end.yml │ ├── forest │ │ ├── choruve_woods.yml │ │ ├── crim_desolate.yml │ │ ├── flaxen_forest.yml │ │ ├── ivory_empyrean.yml │ │ ├── mauve_jungle.yml │ │ └── vermilion_wilds.yml │ ├── generic │ │ ├── end_barrens.yml │ │ ├── end_highlands.yml │ │ └── end_midlands.yml │ ├── glimmering_spires.yml │ ├── marbled_landscapes.yml │ ├── mushroom │ │ └── cerulean_expanse.yml │ ├── rosette_pools.yml │ ├── shattered │ │ ├── shattered_end.yml │ │ └── shattered_forest.yml │ ├── skewered_cliffs.yml │ ├── stygian_barrens.yml │ └── warped │ │ ├── twisted_grove.yml │ │ └── warped_woodlands.yml ├── void │ ├── asteroid_field.yml │ ├── dragon-island-void │ │ └── main_end_void.yml │ ├── galaxy_field.yml │ ├── starfield.yml │ ├── void-sea │ │ ├── void_sea.yml │ │ └── void_sea_border.yml │ ├── void.yml │ ├── void_aurora.yml │ └── void_webs.yml └── x-optional │ └── betterEnd │ ├── aether.yml │ ├── aether_forest.yml │ ├── aether_highlands.yml │ └── aether_highlands_forest.yml ├── features ├── aether │ ├── boulders │ │ ├── mossy_boulders.yml │ │ └── small_mossy_boulder_patches.yml │ ├── buildings │ │ ├── mineshafts │ │ │ └── mineshafts.yml │ │ └── ruins │ │ │ ├── ancient-aether │ │ │ ├── ancient_aether_tower_bridges.yml │ │ │ ├── ancient_aether_tower_clouds.yml │ │ │ └── ancient_aether_towers.yml │ │ │ ├── fort_ruins.yml │ │ │ └── tower_ruins.yml │ ├── ceiling_icicles.yml │ ├── deposits │ │ ├── deposits │ │ │ ├── andesite_deposits.yml │ │ │ ├── diorite_deposits.yml │ │ │ ├── dirt_deposits.yml │ │ │ ├── granite_deposits.yml │ │ │ ├── gravel_deposits.yml │ │ │ └── tuff_deposits.yml │ │ ├── distribution.yml │ │ └── ores │ │ │ ├── coal_ore.yml │ │ │ ├── coal_ore_uniform.yml │ │ │ ├── copper_ore.yml │ │ │ ├── diamond_ore.yml │ │ │ ├── emerald_ore.yml │ │ │ ├── gold_ore.yml │ │ │ ├── gold_ore_uniform.yml │ │ │ ├── iron_ore.yml │ │ │ ├── iron_ore_high.yml │ │ │ ├── iron_ore_uniform.yml │ │ │ ├── lapis_ore.yml │ │ │ ├── lapis_ore_uniform.yml │ │ │ ├── redstone_ore.yml │ │ │ └── redstone_ore_uniform.yml │ ├── hanging_lanterns.yml │ ├── misc │ │ ├── clouds │ │ │ ├── cloud_river.yml │ │ │ ├── clouds.yml │ │ │ └── sky_clouds.yml │ │ ├── giant_bee_nests.yml │ │ ├── honey_drips.yml │ │ └── pseudo-sky │ │ │ ├── cloud_layer.yml │ │ │ └── sky_layer.yml │ ├── sky_water_columns.yml │ ├── slabs │ │ ├── slabs.yml │ │ ├── snow.yml │ │ └── snow_stone.yml │ ├── snow_layers.yml │ ├── tree_snow.yml │ └── vegetation │ │ ├── bramble_vines.yml │ │ ├── brambles.yml │ │ ├── bushes │ │ ├── dark_oak_bushes.yml │ │ ├── oak_bushes.yml │ │ └── spruce_bushes.yml │ │ ├── crops │ │ ├── sweet_berry_bush_patches.yml │ │ └── wheat_patches.yml │ │ ├── ferns.yml │ │ ├── flowers │ │ ├── blue_flowers.yml │ │ └── mixed_flower_cover.yml │ │ ├── grass.yml │ │ ├── lily_pads.yml │ │ ├── tall_grass.yml │ │ └── trees │ │ ├── azure_trees.yml │ │ ├── betterEnd │ │ ├── oak_trees.yml │ │ ├── sparse_oak_trees.yml │ │ ├── sparse_spruce_trees.yml │ │ └── spruce_trees.yml │ │ ├── crimsic_trees.yml │ │ ├── frostbite_trees.yml │ │ ├── orchard_trees.yml │ │ └── swamp_trees.yml ├── end │ ├── ashen_columns.yml │ ├── buildings │ │ ├── crashed_endships.yml │ │ ├── end_houses.yml │ │ ├── end_towers.yml │ │ ├── endships.yml │ │ └── shulker_ruins.yml │ ├── corrupted_whirls.yml │ ├── craggy_rocks.yml │ ├── dragon_island │ │ ├── chains │ │ │ └── dragon_chains.yml │ │ ├── endstone_ring │ │ │ └── endstone_ring.yml │ │ ├── fountain │ │ │ ├── fountain_hill.yml │ │ │ ├── fountain_island.yml │ │ │ ├── fountain_spikes.yml │ │ │ ├── fountain_vex_spawner.yml │ │ │ └── upgraded_fountain.yml │ │ ├── nebula │ │ │ ├── nebula_concrete.yml │ │ │ ├── nebula_glass.yml │ │ │ └── nebula_obsidian.yml │ │ ├── obsidian_circlet │ │ │ ├── obsidian_circlet.yml │ │ │ └── pillar_circlet.yml │ │ └── pillars │ │ │ ├── main_pillars.yml │ │ │ ├── outer_pillars.yml │ │ │ ├── pillar_vex_spawner_bottom.yml │ │ │ └── pillar_vex_spawner_top.yml │ ├── end_sky.yml │ ├── giant_amethyst_crystals.yml │ ├── misc │ │ ├── crying_drips.yml │ │ ├── crying_end_glows.yml │ │ ├── end_gateways.yml │ │ ├── water_columns.yml │ │ └── water_pools.yml │ ├── pillars │ │ └── shattered_pillars.yml │ ├── spikes │ │ ├── crystal_spikes │ │ │ ├── crystal_spikes.yml │ │ │ └── crystal_spikes_down.yml │ │ ├── glowstone_spikes.yml │ │ └── tipped_obsidian_spikes.yml │ ├── swirls.yml │ ├── tendrils │ │ ├── purple_tendril_down.yml │ │ ├── purple_tendrils_side.yml │ │ └── purple_tendrils_up.yml │ └── vegetation │ │ ├── apribloons.yml │ │ ├── argil_vine_spikes.yml │ │ ├── bushes │ │ ├── crimson_stem_bushes.yml │ │ ├── pearlescent_bushes.yml │ │ ├── stripped_acacia_bushes.yml │ │ ├── stripped_mangrove_bushes.yml │ │ └── warped_stem_bushes.yml │ │ ├── choral_brambles.yml │ │ ├── grass │ │ ├── coral_grass.yml │ │ ├── end_grass.yml │ │ ├── end_tall_grass.yml │ │ └── warped_grass.yml │ │ ├── legged_lanterns.yml │ │ ├── magenta_coral.yml │ │ └── trees │ │ ├── aprichorus_trees.yml │ │ ├── bulb_trees.yml │ │ ├── burble_trees.yml │ │ ├── chorus_trees.yml │ │ ├── choruve_trees.yml │ │ ├── corkscrew_trees.yml │ │ ├── crim_trees.yml │ │ ├── glowstone_trees.yml │ │ ├── ivory_trees.yml │ │ ├── mauve_trees.yml │ │ ├── mushrooms │ │ ├── blue_mushrooms.yml │ │ └── marbled_mushrooms.yml │ │ ├── rosette_bulb_trees.yml │ │ ├── shattered_trees.yml │ │ ├── trap_trees.yml │ │ ├── vermilion_trees.yml │ │ └── warped │ │ ├── twisting_beanstalks.yml │ │ ├── warped_mangroves.yml │ │ └── warped_mesquite_trees.yml ├── meta.yml └── void │ ├── asteroids.yml │ ├── aurora.yml │ ├── galaxys.yml │ ├── icy_asteroids.yml │ ├── star_trails.yml │ ├── void-sea │ ├── void_sea.yml │ └── void_sea_air.yml │ ├── void_webs.yml │ └── voidstars.yml ├── math ├── README.md ├── functions │ ├── interpolation.yml │ ├── lerp.yml │ ├── maskSmooth.yml │ └── terrace.yml └── samplers │ └── simplex.yml ├── meta.yml ├── pack.yml ├── palettes ├── aether │ ├── calcite_powder_mix.yml │ ├── calcite_stone_mix.yml │ ├── deepslate.yml │ ├── grass.yml │ ├── grass_gravel_patches.yml │ ├── grass_gray_terracotta.yml │ ├── gray_concrete_terracotta.yml │ ├── light_gray_powder.yml │ ├── mud_powder_mix.yml │ ├── podzol.yml │ ├── snow.yml │ ├── stone_cobble_mix.yml │ ├── terracotta_mix.yml │ └── yellow_concrete_terracotta.yml ├── end │ ├── amesthyst_end.yml │ ├── ashen_end.yml │ ├── black_gray_terracotta.yml │ ├── blue_light_terracotta.yml │ ├── calcite_concrete_mix_end.yml │ ├── craggy_end.yml │ ├── crying_currents.yml │ ├── dark_end.yml │ ├── dead_coral_ground.yml │ ├── gray_glimmering_currents.yml │ ├── mix_end.yml │ ├── obby_purple_mix.yml │ ├── powder │ │ ├── black_powder_end.yml │ │ ├── blue_powder_end.yml │ │ ├── cyan_powder_end.yml │ │ ├── light_gray_powder_end.yml │ │ ├── lime_powder_end.yml │ │ ├── magenta_powder_end.yml │ │ ├── orange_powder_end.yml │ │ ├── pink_powder_end.yml │ │ ├── purple_powder_end.yml │ │ ├── red_powder_end.yml │ │ ├── white_powder_end.yml │ │ └── yellow_powder_end.yml │ ├── purple_terracotta_end.yml │ ├── shattered_ground.yml │ └── white_gray_terracotta.yml └── void │ ├── asteroid.yml │ ├── ice_asteroid.yml │ ├── ice_asteroid_bottom.yml │ └── ice_asteroid_middle.yml └── structures ├── aether ├── bee-nests │ ├── bee_nest.tesf │ ├── bee_nest_block.tesf │ ├── giant_bee_nest.tesf │ ├── gigantic_bee_nest.tesf │ └── honey_drip.tesf ├── blank.tesf ├── boulders │ ├── boulder_ores.tesf │ ├── boulder_palette.tesf │ ├── boulder_textured.tesf │ └── small_boulder_textured.tesf ├── buildings │ ├── mineshaft │ │ ├── mineshaft_chain.tesf │ │ ├── mineshaft_procedural_ew.tesf │ │ ├── mineshaft_procedural_ns.tesf │ │ ├── place_big_mineshaft.tesf │ │ └── place_mineshaft.tesf │ └── ruins │ │ ├── ancient_aether_tower │ │ ├── ancient_aether_tower.tesf │ │ ├── ancient_aether_tower_bridge.tesf │ │ ├── objects │ │ │ ├── ore_chunk.tesf │ │ │ ├── place_random_object.tesf │ │ │ ├── plant.tesf │ │ │ ├── ruin_ores.tesf │ │ │ └── spawner_obelisk.tesf │ │ ├── rooms │ │ │ ├── ancient_aether_tower_room_pillars.tesf │ │ │ ├── ancient_aether_tower_room_pillars_2.tesf │ │ │ ├── ancient_aether_tower_room_stairs.tesf │ │ │ ├── ancient_aether_tower_room_tall_halls.tesf │ │ │ ├── ancient_aether_tower_room_walkways.tesf │ │ │ └── ancient_aether_tower_room_walkways_2.tesf │ │ └── windows │ │ │ └── ancient_aether_tower_door_windows.tesf │ │ ├── fort_ruin │ │ ├── fort_ruin.tesf │ │ ├── ruin_wall.tesf │ │ └── taller_ruin_wall.tesf │ │ ├── ruin.tesf │ │ ├── ruin_block.tesf │ │ └── tower_ruin.tesf ├── ceiling_icicle.tesf ├── deposits │ ├── deposits │ │ ├── abstract_deep_deposit.yml │ │ ├── abstract_deposit.yml │ │ ├── andesite_deposit.yml │ │ ├── diorite_deposit.yml │ │ ├── dirt_deposit.yml │ │ ├── granite_deposit.yml │ │ ├── gravel_deposit.yml │ │ └── tuff_deposit.yml │ └── ores │ │ ├── abstract_ore.yml │ │ ├── coal_ore.yml │ │ ├── copper_ore.yml │ │ ├── copper_ore_large.yml │ │ ├── diamond_ore.yml │ │ ├── diamond_ore_large.yml │ │ ├── diamond_ore_small.yml │ │ ├── emerald_ore.yml │ │ ├── gold_ore.yml │ │ ├── iron_ore.yml │ │ ├── lapis_ore.yml │ │ └── redstone_ore.yml ├── hanging_lantern.tesf ├── misc │ ├── clouds │ │ ├── cloud.tesf │ │ └── translucent_cloud.tesf │ └── sky_water_column.tesf ├── snow_layers.tesf └── vegetation │ ├── big_dripleaf.tesf │ ├── bramble.tesf │ ├── bushes │ ├── dark_oak_bush.tesf │ ├── oak_bush.tesf │ └── spruce_bush.tesf │ ├── crops │ ├── sweet_berry_bush_patch.tesf │ └── wheat_patch.tesf │ ├── flowers │ ├── lilac.tesf │ ├── peony.tesf │ ├── rose_bush.tesf │ └── sunflower.tesf │ ├── large_fern.tesf │ ├── place_vines.tesf │ ├── plantable.tesf │ ├── tall_grass.tesf │ └── trees │ ├── azure_tree.tesf │ ├── betterEnd │ ├── large_oak_tree_procedural.tesf │ ├── large_oak_tree_procedural_2.tesf │ ├── oak_tree_procedural.tesf │ └── spruce_tree_procedural.tesf │ ├── crimsic_tree.tesf │ ├── frostbite_tree.tesf │ ├── leaves │ ├── dark_oak_leaves_clump.tesf │ ├── oak_leaves_clump.tesf │ └── orchard_leaves_clump.tesf │ ├── orchard │ ├── place_apple.tesf │ └── small_orchard_tree.tesf │ └── swamp_tree_procedural.tesf ├── end ├── argil_vine_spikes.tesf ├── ashen_column.tesf ├── buildings │ ├── crashed-end-ship │ │ ├── crashed_endship.tesf │ │ └── schematics │ │ │ ├── crashed_endship_sc_east.schem │ │ │ ├── crashed_endship_sc_north.schem │ │ │ ├── crashed_endship_sc_south.schem │ │ │ └── crashed_endship_sc_west.schem │ ├── end_house │ │ ├── end_house.tesf │ │ └── schematics │ │ │ ├── end_house_sc_east.schem │ │ │ ├── end_house_sc_north.schem │ │ │ ├── end_house_sc_south.schem │ │ │ └── end_house_sc_west.schem │ ├── end_tower │ │ ├── end_tower.tesf │ │ └── schematics │ │ │ ├── end_tower_sc_east.schem │ │ │ ├── end_tower_sc_north.schem │ │ │ ├── end_tower_sc_south.schem │ │ │ └── end_tower_sc_west.schem │ ├── endship │ │ ├── endship.tesf │ │ └── schematics │ │ │ ├── endship_sc_east.schem │ │ │ ├── endship_sc_north.schem │ │ │ ├── endship_sc_south.schem │ │ │ └── endship_sc_west.schem │ └── shulker-ruin │ │ ├── parts │ │ ├── end_debri_block.tesf │ │ ├── end_ruin_block.tesf │ │ └── end_ruin_wall.tesf │ │ ├── shulker_ruin.tesf │ │ └── shulker_spawn.tesf ├── corrupted_whirl.tesf ├── craggy_rock.tesf ├── dragon-island │ ├── chains │ │ ├── dragon_chain.tesf │ │ └── vortex.tesf │ ├── dragon_pillar.tesf │ ├── fountain │ │ ├── fountain_hill.tesf │ │ ├── upgraded_fountain.tesf │ │ └── upgraded_fountain_sc.schem │ ├── fountain_island.tesf │ ├── fountain_spikes.tesf │ ├── obsidian_spike_cluster.tesf │ └── vex_spawner │ │ ├── fountain_vex_spawner.tesf │ │ ├── pillar_vex_spawner.tesf │ │ └── schematic │ │ └── vex_spawner_sc.schem ├── misc │ ├── amethyst │ │ ├── amethyst_buds.tesf │ │ └── giant_amethyst_crystal.tesf │ ├── apribloon │ │ ├── apribloon_body.tesf │ │ └── apribloon_procedural.tesf │ ├── crying_drip.tesf │ ├── end-gateways │ │ ├── end_gateway.schem │ │ └── place_end_gateway.tesf │ └── water_column.tesf ├── pillars │ ├── giant_obsidian_pillar.tesf │ ├── shattered_pillar_procedural.tesf │ └── tilted_giant_obsidian_pillar.tesf ├── spikes │ ├── crystal-spikes │ │ ├── crystal_spike.tesf │ │ ├── crystal_spike_cluster.tesf │ │ ├── crystal_spike_cluster_down.tesf │ │ └── crystal_spike_down.tesf │ ├── glowstone_spike.tesf │ ├── tipped_obsidian_spike.tesf │ └── tipped_obsidian_spike_cluster.tesf ├── swirl.tesf ├── tendrils │ ├── purple_tendril_down.tesf │ ├── purple_tendril_side.tesf │ └── purple_tendril_up.tesf └── vegetation │ ├── bushes │ ├── pearlescent_bush.tesf │ ├── stripped_acacia_bush.tesf │ ├── stripped_mangrove_bush.tesf │ └── warped_stem_bush.tesf │ ├── choral_bramble.tesf │ ├── crimson_stem_bush.tesf │ ├── mushrooms │ ├── blue_mushrooms │ │ ├── blue_mushroom.tesf │ │ ├── blue_mushroom_cap.tesf │ │ └── blue_mushroom_cluster.tesf │ └── marbled_mushrooms │ │ ├── marbled_mushroom.tesf │ │ └── marbled_mushroom_cap.tesf │ └── trees │ ├── aprichorus_trees │ ├── aprichorus_tree.tesf │ ├── aprichorus_tree_branch.tesf │ ├── aprichorus_tree_bulb.tesf │ └── aprichorus_tree_spikes.tesf │ ├── bulb_trees │ ├── bulb.tesf │ └── bulb_tree.tesf │ ├── burble_trees │ ├── burble_bulb.tesf │ ├── burble_stems.tesf │ └── burble_tree.tesf │ ├── chorus_tree │ ├── chorus_branches │ │ ├── chorus_branch_east.tesf │ │ ├── chorus_branch_north.tesf │ │ ├── chorus_branch_south.tesf │ │ └── chorus_branch_west.tesf │ └── chorus_tree.tesf │ ├── choruve_trees │ ├── choruve_leaves_clump.tesf │ └── choruve_tree.tesf │ ├── corkscrew_tree_procedural.tesf │ ├── crim_trees │ ├── crim_tree.tesf │ ├── inner_shell.tesf │ └── outer_shell.tesf │ ├── drooping_trees │ ├── drooping_branch_bulb.tesf │ ├── drooping_side_branch.tesf │ ├── drooping_top_branch.tesf │ └── drooping_tree.tesf │ ├── glowstone_trees.tesf │ ├── ivory_trees │ ├── ivory_clump.tesf │ ├── ivory_vine.tesf │ ├── large_ivory_tree.tesf │ └── small_ivory_tree.tesf │ ├── legged_lantern.tesf │ ├── magenta-coral │ ├── magenta_strand.tesf │ └── magenta_strand_cluster.tesf │ ├── mauve_trees │ ├── large_mauve_tree.tesf │ └── small_mauve_tree.tesf │ ├── rosette_bulb_trees │ ├── rosette_bulb.tesf │ ├── rosette_bulb_branch.tesf │ └── rosette_bulb_tree.tesf │ ├── shattered_trees │ ├── large_shattered_tree.tesf │ ├── shattered_leaves_clump.tesf │ └── small_shattered_tree.tesf │ ├── trap_tree │ ├── trap_tree.tesf │ ├── trap_tree_mouth.tesf │ └── trap_tree_small_mouth.tesf │ └── warped │ ├── twisting_beanstalk.tesf │ ├── twisting_leaf.tesf │ ├── twisting_vines.tesf │ ├── warped_mangrove │ ├── warped_buds.tesf │ ├── warped_mangrove_tree_procedural.tesf │ └── warped_wart_clump.tesf │ └── warped_mesquite_tree_procedural.tesf ├── is_leaf.tesf ├── is_rock.tesf └── void ├── asteroids ├── asteroid.tesf ├── asteroid_ores.tesf ├── asteroid_palette.tesf └── icy-asteroid │ ├── icy_asteroid.tesf │ ├── icy_asteroid_palette.tesf │ └── spiky_ice_asteroid.tesf ├── aurora ├── blue_aurora_segment.tesf ├── cyan_aurora_segment.tesf ├── green_aurora_segment.tesf ├── light_blue_aurora_segment.tesf ├── lime_aurora_segment.tesf ├── magenta_aurora_segment.tesf ├── pink_aurora_segment.tesf ├── purple_aurora_segment.tesf ├── red_aurora_segment.tesf └── yellow_aurora_segment.tesf ├── galaxies ├── horizontal_galaxy.tesf └── vertical_galaxy.tesf └── voidstars ├── voidstar_a.tesf ├── voidstar_b.tesf ├── voidstar_c.tesf ├── voidstar_d.tesf ├── voidstar_e.tesf ├── voidstar_f.tesf └── voidstar_g.tesf /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/packs.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /biome-providers/presets/single.yml: -------------------------------------------------------------------------------- 1 | biomes: 2 | type: SINGLE 3 | biome: STARFIELD 4 | -------------------------------------------------------------------------------- /biome-providers/sources/aether.yml: -------------------------------------------------------------------------------- 1 | source: 2 | type: SAMPLER 3 | biomes: 4 | - aether: 1 5 | sampler: 6 | type: CELLULAR 7 | return: CellValue 8 | frequency: 1 / ${meta.yml:biome-distribution.aether-biome-scale} / ${meta.yml:biome-distribution.global-scale} 9 | salt: 6579 -------------------------------------------------------------------------------- /biome-providers/sources/betterend.yml: -------------------------------------------------------------------------------- 1 | source: 2 | type: SAMPLER 3 | biomes: 4 | - betterEnd: 1 5 | - MAIN_END_VOID: 2 6 | - MAIN_END: 1 7 | sampler: 8 | type: EXPRESSION 9 | expression: | 10 | circle(centerRadius, x+noise(x,z)-1, z+noise(x,z)-1, 1) + circle(centerRadius+buffer, x+noise(x,z)-1, z+noise(x,z)-1, 0.5) 11 | variables: 12 | centerRadius: ${meta.yml:biome-distribution.main-end-scale} 13 | buffer: ${meta.yml:biome-distribution.void-buffer-scale} 14 | functions: 15 | circle: {arguments: [r, x, z, l], expression: "if(x*x+z*z>r*r,-1,l)"} 16 | samplers: 17 | noise: 18 | type: OPEN_SIMPLEX_2 19 | dimensions: 2 20 | salt: 3912 21 | frequency: 0.1 -------------------------------------------------------------------------------- /biome-providers/sources/reimagEND.yml: -------------------------------------------------------------------------------- 1 | source: 2 | type: SAMPLER 3 | biomes: 4 | - outer_end: 1 5 | - MAIN_END_VOID: 2 6 | - MAIN_END: 1 7 | sampler: 8 | type: EXPRESSION 9 | expression: | 10 | circle(centerRadius, x+noise(x,z)-1, z+noise(x,z)-1, 1) + circle(centerRadius+buffer, x+noise(x,z)-1, z+noise(x,z)-1, 0.5) 11 | variables: 12 | centerRadius: ${meta.yml:biome-distribution.main-end-scale} 13 | buffer: ${meta.yml:biome-distribution.void-buffer-scale} 14 | functions: 15 | circle: {arguments: [r, x, z, l], expression: "if(x*x+z*z>r*r,-1,l)"} 16 | samplers: 17 | noise: 18 | type: OPEN_SIMPLEX_2 19 | dimensions: 2 20 | salt: 3912 21 | frequency: 0.1 -------------------------------------------------------------------------------- /biome-providers/sources/vanilla.yml: -------------------------------------------------------------------------------- 1 | source: 2 | type: SAMPLER 3 | biomes: 4 | - vanilla_end: 1 5 | - MAIN_END_VOID: 2 6 | - MAIN_END: 1 7 | sampler: 8 | type: EXPRESSION 9 | expression: | 10 | circle(centerRadius, x+noise(x,z)-1, z+noise(x,z)-1, 1) + circle(centerRadius+buffer, x+noise(x,z)-1, z+noise(x,z)-1, 0.5) 11 | variables: 12 | centerRadius: ${meta.yml:biome-distribution.main-end-scale} 13 | buffer: ${meta.yml:biome-distribution.void-buffer-scale} 14 | functions: 15 | circle: {arguments: [r, x, z, l], expression: "if(x*x+z*z>r*r,-1,l)"} 16 | samplers: 17 | noise: 18 | type: OPEN_SIMPLEX_2 19 | dimensions: 2 20 | salt: 3912 21 | frequency: 0.1 -------------------------------------------------------------------------------- /biome-providers/stages/add_border_biomes.yml: -------------------------------------------------------------------------------- 1 | stages: 2 | - type: BORDER 3 | sampler: 4 | type: CONSTANT 5 | replace: VOID_SEA 6 | from: NOT_VOID_SEA 7 | to: VOID_SEA_BORDER 8 | - type: BORDER 9 | sampler: 10 | type: CONSTANT 11 | replace: ANCIENT_AETHER 12 | from: AETHER 13 | to: AETHER_CLOUD_SEA -------------------------------------------------------------------------------- /biome-providers/stages/base-distribution/optional/vanilla_distribution.yml: -------------------------------------------------------------------------------- 1 | stages: 2 | - type: REPLACE 3 | sampler: 4 | dimensions: 2 5 | type: FBM 6 | octaves: 2 7 | sampler: 8 | type: OPEN_SIMPLEX_2 9 | salt: 6836 10 | frequency: 1 / ${meta.yml:biome-distribution.frontier-biome-scale} / ${meta.yml:biome-distribution.global-scale} 11 | from: vanilla_end 12 | to: 13 | - VOID: 3 14 | - END_BARRENS: 1 15 | - END_MIDLANDS: 2 16 | - END_HIGHLANDS: 2 17 | 18 | -------------------------------------------------------------------------------- /biome-providers/stages/dragon_pit.yml: -------------------------------------------------------------------------------- 1 | distribution-map: &distribution-map 2 | type: EXPRESSION 3 | expression: | 4 | circle(radius, x-1, z-1, 1) 5 | variables: 6 | radius: ${meta.yml:dragon-island.dragon-pit-radius} 7 | functions: 8 | circle: {arguments: [r, x, z, l], expression: "if(x*x+z*z 0, -1, 1) 22 | variables: 23 | toggle: ${meta.yml:dragon-island.dragon-chains-toggle} 24 | 25 | 26 | locator: 27 | type: AND 28 | locators: 29 | - type: TOP 30 | range: &range 31 | min: 40 32 | max: 80 33 | pattern: 34 | type: MATCH_SOLID 35 | offset: -1 36 | 37 | structures: 38 | distribution: 39 | type: CONSTANT 40 | structures: dragon_chain -------------------------------------------------------------------------------- /features/end/dragon_island/fountain/fountain_hill.yml: -------------------------------------------------------------------------------- 1 | id: FOUNTAIN_HILL 2 | type: FEATURE 3 | 4 | # Mound of endstone that end fountain spawns on top of 5 | 6 | distributor: 7 | type: POINTS 8 | points: 9 | - x: 0 10 | z: 0 11 | 12 | locator: 13 | type: AND 14 | locators: 15 | - type: TOP 16 | range: &range 17 | min: 40 18 | max: 319 19 | - type: PATTERN 20 | range: *range 21 | pattern: 22 | type: MATCH_SOLID 23 | offset: -1 24 | - type: PATTERN 25 | range: *range 26 | pattern: 27 | type: MATCH_AIR 28 | offset: 0 29 | 30 | structures: 31 | distribution: 32 | type: CONSTANT 33 | structures: fountain_hill -------------------------------------------------------------------------------- /features/end/dragon_island/fountain/fountain_island.yml: -------------------------------------------------------------------------------- 1 | id: FOUNTAIN_ISLAND 2 | type: FEATURE 3 | 4 | # Mound of endstone that end fountain spawns on top of 5 | 6 | distributor: 7 | type: POINTS 8 | points: 9 | - x: 0 10 | z: 0 11 | - x: 62 12 | z: 0 13 | - x: 53 14 | z: 44 15 | - x: 12 16 | z: 59 17 | - x: -12 18 | z: 59 19 | - x: -53 20 | z: 44 21 | - x: -62 22 | z: 0 23 | - x: -53 24 | z: -44 25 | - x: -12 26 | z: -59 27 | - x: 12 28 | z: -59 29 | - x: 53 30 | z: -44 31 | 32 | locator: 33 | type: AND 34 | locators: 35 | - type: RANDOM 36 | height: &range 37 | min: 55 38 | max: 65 39 | amount: 1 40 | - type: PATTERN 41 | range: *range 42 | pattern: 43 | type: MATCH_AIR 44 | offset: 0 45 | 46 | structures: 47 | distribution: 48 | type: CONSTANT 49 | structures: fountain_island -------------------------------------------------------------------------------- /features/end/dragon_island/fountain/fountain_spikes.yml: -------------------------------------------------------------------------------- 1 | id: FOUNTAIN_SPIKES 2 | type: FEATURE 3 | 4 | # Rib cage like spikes surrounding fountain 5 | 6 | distributor: 7 | type: POINTS 8 | points: 9 | - x: 0 10 | z: 0 11 | 12 | locator: 13 | type: AND 14 | locators: 15 | - type: TOP 16 | range: &range 17 | min: 0 18 | max: 80 19 | pattern: 20 | type: MATCH_SOLID 21 | offset: -1 22 | 23 | structures: 24 | distribution: 25 | type: CONSTANT 26 | structures: fountain_spikes -------------------------------------------------------------------------------- /features/end/dragon_island/fountain/fountain_vex_spawner.yml: -------------------------------------------------------------------------------- 1 | id: FOUNTAIN_VEX_SPAWNER 2 | type: FEATURE 3 | 4 | # Rib cage like spikes surrounding fountain 5 | 6 | distributor: 7 | type: AND 8 | distributors: 9 | - type: POINTS 10 | points: 11 | - x: 0 12 | z: 0 13 | - type: SAMPLER 14 | sampler: 15 | type: EXPRESSION 16 | expression: | 17 | if (toggle > 0, -1, 1) 18 | variables: 19 | toggle: ${meta.yml:dragon-island.fountain-vex-toggle} 20 | 21 | locator: 22 | type: AND 23 | locators: 24 | - type: TOP 25 | range: &range 26 | min: 0 27 | max: 80 28 | pattern: 29 | type: MATCH_SOLID 30 | offset: -1 31 | 32 | structures: 33 | distribution: 34 | type: CONSTANT 35 | structures: fountain_vex_spawner -------------------------------------------------------------------------------- /features/end/dragon_island/fountain/upgraded_fountain.yml: -------------------------------------------------------------------------------- 1 | id: UPGRADED_FOUNTAIN 2 | type: FEATURE 3 | 4 | # Mound of endstone that end fountain spawns on top of 5 | 6 | distributor: 7 | type: POINTS 8 | points: 9 | - x: 0 10 | z: 0 11 | 12 | locator: 13 | type: AND 14 | locators: 15 | - type: TOP 16 | range: &range 17 | min: 40 18 | max: 319 19 | - type: PATTERN 20 | range: *range 21 | pattern: 22 | type: MATCH_SOLID 23 | offset: -1 24 | - type: PATTERN 25 | range: *range 26 | pattern: 27 | type: MATCH_AIR 28 | offset: 0 29 | 30 | structures: 31 | distribution: 32 | type: CONSTANT 33 | structures: upgraded_fountain -------------------------------------------------------------------------------- /features/end/dragon_island/pillars/main_pillars.yml: -------------------------------------------------------------------------------- 1 | id: MAIN_PILLARS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: POINTS 6 | points: 7 | - x: 62 8 | z: 0 9 | - x: 53 10 | z: 44 11 | - x: 12 12 | z: 59 13 | - x: -12 14 | z: 59 15 | - x: -53 16 | z: 44 17 | - x: -62 18 | z: 0 19 | - x: -53 20 | z: -44 21 | - x: -12 22 | z: -59 23 | - x: 12 24 | z: -59 25 | - x: 53 26 | z: -44 27 | 28 | 29 | locator: 30 | type: AND 31 | locators: 32 | - type: TOP 33 | range: &range 34 | min: 0 35 | max: 70 36 | pattern: 37 | type: MATCH_AIR 38 | offset: 0 39 | - type: PATTERN 40 | range: *range 41 | pattern: 42 | type: MATCH_SOLID 43 | offset: -1 44 | 45 | structures: 46 | distribution: 47 | type: CONSTANT 48 | structures: dragon_pillar -------------------------------------------------------------------------------- /features/end/giant_amethyst_crystals.yml: -------------------------------------------------------------------------------- 1 | id: GIANT_AMETHYST_CRYSTALS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: SAMPLER 6 | sampler: 7 | type: POSITIVE_WHITE_NOISE 8 | salt: 8756 9 | threshold: 0.1 10 | 11 | locator: 12 | type: AND 13 | locators: 14 | - type: TOP 15 | range: &range 16 | min: 0 17 | max: 319 18 | - type: PATTERN 19 | range: *range 20 | pattern: 21 | type: MATCH 22 | block: minecraft:amethyst_block 23 | offset: -1 24 | 25 | structures: 26 | distribution: 27 | type: CONSTANT 28 | structures: giant_amethyst_crystal 29 | -------------------------------------------------------------------------------- /features/end/misc/crying_drips.yml: -------------------------------------------------------------------------------- 1 | id: CRYING_DRIPS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: SAMPLER 6 | sampler: 7 | type: POSITIVE_WHITE_NOISE 8 | salt: 7652 9 | threshold: 0.09 10 | 11 | locator: 12 | type: AND 13 | locators: 14 | - type: PATTERN 15 | range: &range 16 | min: 0 17 | max: 255 18 | pattern: 19 | type: MATCH_AIR 20 | offset: 0 21 | - type: PATTERN 22 | range: *range 23 | pattern: 24 | type: MATCH 25 | block: minecraft:purple_concrete 26 | offset: 1 27 | 28 | structures: 29 | distribution: 30 | type: CONSTANT 31 | structures: crying_drip 32 | 33 | -------------------------------------------------------------------------------- /features/end/misc/water_columns.yml: -------------------------------------------------------------------------------- 1 | id: WATER_COLUMNS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: SAMPLER 6 | sampler: 7 | type: POSITIVE_WHITE_NOISE 8 | salt: 6012 9 | threshold: 0.5/8 10 | 11 | locator: 12 | type: PATTERN 13 | range: 14 | min: 0 15 | max: 280 16 | pattern: 17 | # Match air on top of lava 18 | type: AND 19 | patterns: 20 | - type: MATCH 21 | block: minecraft:water 22 | offset: -1 23 | - type: MATCH_AIR 24 | offset: 0 25 | 26 | structures: 27 | distribution: 28 | type: CONSTANT 29 | structures: water_column -------------------------------------------------------------------------------- /features/end/pillars/shattered_pillars.yml: -------------------------------------------------------------------------------- 1 | id: SHATTERED_PILLARS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: SAMPLER 6 | sampler: 7 | type: POSITIVE_WHITE_NOISE 8 | salt: 6821 9 | threshold: 0.003 10 | 11 | locator: 12 | type: AND 13 | locators: 14 | - type: SURFACE 15 | range: &range 16 | min: 40 17 | max: 319 18 | - type: PATTERN 19 | range: *range 20 | pattern: 21 | type: MATCH 22 | block: minecraft:end_stone 23 | offset: -1 24 | - type: PATTERN 25 | range: *range 26 | pattern: 27 | type: MATCH_AIR 28 | offset: 0 29 | 30 | structures: 31 | distribution: 32 | type: WHITE_NOISE 33 | structures: 34 | - shattered_pillar_procedural: 150 35 | - giant_obsidian_pillar: 2 36 | - tilted_giant_obsidian_pillar: 1 -------------------------------------------------------------------------------- /features/end/spikes/glowstone_spikes.yml: -------------------------------------------------------------------------------- 1 | id: GLOWSTONE_SPIKES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 100 7 | padding: 9 8 | salt: 2552 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 60 16 | max: 255 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH_AIR 21 | offset: 0 22 | - type: PATTERN 23 | range: *range 24 | pattern: 25 | type: MATCH 26 | block: minecraft:black_concrete_powder 27 | offset: -1 28 | 29 | 30 | structures: 31 | distribution: 32 | type: CONSTANT 33 | structures: 34 | - glowstone_spike: 1 -------------------------------------------------------------------------------- /features/end/spikes/tipped_obsidian_spikes.yml: -------------------------------------------------------------------------------- 1 | id: TIPPED_OBSIDIAN_SPIKES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 7 7 | padding: 9 8 | salt: 3247 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 60 16 | max: 255 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH_AIR 21 | offset: 0 22 | - type: PATTERN 23 | range: *range 24 | pattern: 25 | type: MATCH 26 | block: minecraft:end_stone 27 | offset: -1 28 | 29 | 30 | structures: 31 | distribution: 32 | type: CONSTANT 33 | structures: 34 | - tipped_obsidian_spike: 4 35 | - tipped_obsidian_spike_cluster: 1 36 | -------------------------------------------------------------------------------- /features/end/tendrils/purple_tendril_down.yml: -------------------------------------------------------------------------------- 1 | id: PURPLE_TENDRILS_DOWN 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 18 7 | padding: 11 8 | salt: 7905 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: PATTERN 14 | range: &range 15 | min: 0 16 | max: 319 17 | pattern: 18 | type: MATCH 19 | block: minecraft:purple_concrete 20 | offset: 1 21 | - type: PATTERN 22 | range: *range 23 | pattern: 24 | type: MATCH_AIR 25 | offset: 0 26 | - type: PATTERN 27 | range: *range 28 | pattern: 29 | type: MATCH_SOLID 30 | offset: 5 31 | - type: PATTERN 32 | range: *range 33 | pattern: 34 | type: MATCH_AIR 35 | offset: -10 36 | 37 | structures: 38 | distribution: 39 | type: CONSTANT 40 | structures: purple_tendril_down -------------------------------------------------------------------------------- /features/end/tendrils/purple_tendrils_side.yml: -------------------------------------------------------------------------------- 1 | id: PURPLE_TENDRILS_SIDE 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 16 7 | padding: 12 8 | salt: 5467 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: PATTERN 14 | range: &range 15 | min: 0 16 | max: 319 17 | pattern: 18 | type: MATCH 19 | block: minecraft:purple_concrete 20 | offset: 0 21 | - type: ADJACENT_PATTERN 22 | range: *range 23 | pattern: 24 | type: MATCH_AIR 25 | offset: 0 26 | - type: ADJACENT_PATTERN 27 | range: *range 28 | pattern: 29 | type: MATCH_AIR 30 | offset: 2 31 | - type: ADJACENT_PATTERN 32 | range: *range 33 | pattern: 34 | type: MATCH_AIR 35 | offset: -2 36 | 37 | structures: 38 | distribution: 39 | type: CONSTANT 40 | structures: purple_tendril_side -------------------------------------------------------------------------------- /features/end/tendrils/purple_tendrils_up.yml: -------------------------------------------------------------------------------- 1 | id: PURPLE_TENDRILS_UP 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 16 7 | padding: 12 8 | salt: 5467 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH 21 | block: minecraft:purple_concrete 22 | offset: -1 23 | - type: PATTERN 24 | range: *range 25 | pattern: 26 | type: MATCH_AIR 27 | offset: 0 28 | - type: PATTERN 29 | range: *range 30 | pattern: 31 | type: MATCH_SOLID 32 | offset: -5 33 | - type: PATTERN 34 | range: *range 35 | pattern: 36 | type: MATCH_AIR 37 | offset: 10 38 | 39 | structures: 40 | distribution: 41 | type: CONSTANT 42 | structures: purple_tendril_up -------------------------------------------------------------------------------- /features/end/vegetation/bushes/pearlescent_bushes.yml: -------------------------------------------------------------------------------- 1 | id: PEARLESCENT_BUSHES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 7 7 | padding: 2 8 | salt: 3246 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: OR 21 | patterns: 22 | - type: MATCH_SET 23 | blocks: $features/meta.yml:end-plantable-blocks 24 | offset: -1 25 | - type: MATCH_SET 26 | blocks: 27 | - minecraft:sand 28 | - minecraft:red_sand 29 | offset: -1 30 | - type: PATTERN 31 | range: *range 32 | pattern: 33 | type: MATCH_SET 34 | blocks: 35 | - minecraft:snow 36 | - minecraft:air 37 | offset: 0 38 | 39 | structures: 40 | distribution: 41 | type: CONSTANT 42 | structures: pearlescent_bush -------------------------------------------------------------------------------- /features/end/vegetation/bushes/warped_stem_bushes.yml: -------------------------------------------------------------------------------- 1 | id: WARPED_STEM_BUSHES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 7 7 | padding: 2 8 | salt: 9152 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: OR 21 | patterns: 22 | - type: MATCH_SET 23 | blocks: $features/meta.yml:end-plantable-blocks 24 | offset: -1 25 | - type: MATCH_SET 26 | blocks: 27 | - minecraft:sand 28 | - minecraft:red_sand 29 | offset: -1 30 | - type: PATTERN 31 | range: *range 32 | pattern: 33 | type: MATCH_SET 34 | blocks: 35 | - minecraft:snow 36 | - minecraft:air 37 | offset: 0 38 | 39 | structures: 40 | distribution: 41 | type: CONSTANT 42 | structures: warped_stem_bush -------------------------------------------------------------------------------- /features/end/vegetation/choral_brambles.yml: -------------------------------------------------------------------------------- 1 | id: CHORAL_BRAMBLES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: AND 6 | distributors: 7 | - type: SAMPLER 8 | sampler: 9 | type: CELLULAR 10 | return: CellValue 11 | frequency: 0.05 12 | salt: 3425 13 | threshold: -0.4 14 | - type: SAMPLER 15 | sampler: 16 | type: POSITIVE_WHITE_NOISE 17 | salt: 6579 18 | threshold: 0.05 19 | 20 | locator: 21 | type: AND 22 | locators: 23 | - type: SURFACE 24 | range: &range 25 | min: 0 26 | max: 225 27 | - type: PATTERN 28 | range: *range 29 | pattern: 30 | type: MATCH_SOLID 31 | offset: -1 32 | 33 | structures: 34 | distribution: 35 | type: CONSTANT 36 | structures: choral_bramble -------------------------------------------------------------------------------- /features/end/vegetation/grass/end_grass.yml: -------------------------------------------------------------------------------- 1 | id: END_GRASS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: SAMPLER 6 | sampler: 7 | type: POSITIVE_WHITE_NOISE 8 | salt: 7544 9 | threshold: 0.125 10 | 11 | locator: 12 | type: AND 13 | locators: 14 | - type: SURFACE 15 | range: &range 16 | min: 0 17 | max: 319 18 | - type: PATTERN 19 | range: *range 20 | pattern: 21 | type: MATCH_SET 22 | blocks: $features/meta.yml:end-plantable-blocks 23 | offset: -1 24 | - type: PATTERN 25 | range: *range 26 | pattern: 27 | type: MATCH 28 | block: minecraft:end_stone 29 | offset: -2 30 | 31 | structures: 32 | distribution: 33 | type: WHITE_NOISE 34 | structures: 35 | - BLOCK:minecraft:short_grass: 6 36 | - tall_grass: 1 -------------------------------------------------------------------------------- /features/end/vegetation/grass/warped_grass.yml: -------------------------------------------------------------------------------- 1 | id: WARPED_GRASS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: SAMPLER 6 | sampler: 7 | type: POSITIVE_WHITE_NOISE 8 | salt: 4689 9 | threshold: 0.1 10 | 11 | locator: 12 | type: PATTERN 13 | range: 14 | min: 0 15 | max: 319 16 | pattern: 17 | type: AND 18 | patterns: 19 | - type: MATCH_SET 20 | blocks: $features/meta.yml:end-plantable-blocks 21 | offset: -1 22 | - type: MATCH_AIR 23 | offset: 0 24 | - type: MATCH 25 | block: minecraft:end_stone 26 | offset: -2 27 | 28 | 29 | structures: 30 | distribution: 31 | type: WHITE_NOISE 32 | structures: 33 | - BLOCK:minecraft:nether_sprouts: 5 34 | - BLOCK:minecraft:warped_roots: 2 35 | - twisting_vines: 2 -------------------------------------------------------------------------------- /features/end/vegetation/legged_lanterns.yml: -------------------------------------------------------------------------------- 1 | id: LEGGED_LANTERNS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 34 7 | padding: 25 8 | salt: 5467 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 235 17 | amount: 1 18 | - type: PATTERN 19 | range: *range 20 | pattern: 21 | type: MATCH 22 | block: minecraft:end_stone 23 | offset: -5 24 | - type: PATTERN 25 | range: *range 26 | pattern: 27 | type: MATCH_AIR 28 | offset: 0 29 | - type: PATTERN 30 | range: *range 31 | pattern: 32 | type: MATCH_AIR 33 | offset: 10 34 | 35 | structures: 36 | distribution: 37 | type: CONSTANT 38 | structures: legged_lantern -------------------------------------------------------------------------------- /features/end/vegetation/magenta_coral.yml: -------------------------------------------------------------------------------- 1 | id: MAGENTA_CORAL 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 20 7 | padding: 8 8 | salt: 4357 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 235 17 | amount: 1 18 | - type: PATTERN 19 | range: *range 20 | pattern: 21 | type: MATCH 22 | block: minecraft:end_stone 23 | offset: -5 24 | - type: PATTERN 25 | range: *range 26 | pattern: 27 | type: MATCH_AIR 28 | offset: 0 29 | - type: PATTERN 30 | range: *range 31 | pattern: 32 | type: MATCH_AIR 33 | offset: 5 34 | 35 | structures: 36 | distribution: 37 | type: CONSTANT 38 | structures: magenta_strand_cluster -------------------------------------------------------------------------------- /features/end/vegetation/trees/aprichorus_trees.yml: -------------------------------------------------------------------------------- 1 | id: APRICHORUS_TREES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 14 7 | padding: 7 8 | salt: 4357 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH_SET 21 | blocks: 22 | - minecraft:end_stone 23 | offset: -1 24 | - type: PATTERN 25 | range: *range 26 | pattern: 27 | type: MATCH_AIR 28 | offset: 0 29 | - type: ADJACENT_PATTERN 30 | range: *range 31 | pattern: 32 | type: MATCH_SOLID 33 | offset: -1 34 | 35 | structures: 36 | distribution: 37 | type: CONSTANT 38 | structures: aprichorus_tree -------------------------------------------------------------------------------- /features/end/vegetation/trees/bulb_trees.yml: -------------------------------------------------------------------------------- 1 | id: BULB_TREES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 27 7 | padding: 18 8 | salt: 5468 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH_AIR 21 | offset: 0 22 | - type: PATTERN 23 | range: *range 24 | pattern: 25 | type: MATCH_SET 26 | blocks: 27 | - minecraft:light_gray_concrete 28 | - minecraft:light_gray_concrete_powder 29 | - minecraft:end_stone 30 | offset: -1 31 | 32 | structures: 33 | distribution: 34 | type: CONSTANT 35 | structures: bulb_tree -------------------------------------------------------------------------------- /features/end/vegetation/trees/chorus_trees.yml: -------------------------------------------------------------------------------- 1 | id: CHORUS_TREES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 7 7 | padding: 4 8 | salt: 4355 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH 21 | block: minecraft:end_stone 22 | offset: -1 23 | 24 | structures: 25 | distribution: 26 | type: CONSTANT 27 | structures: chorus_tree -------------------------------------------------------------------------------- /features/end/vegetation/trees/choruve_trees.yml: -------------------------------------------------------------------------------- 1 | id: CHORUVE_TREES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: AND 6 | distributors: 7 | - type: PADDED_GRID 8 | width: 6 9 | padding: 12 10 | salt: 1320 11 | - type: SAMPLER 12 | sampler: 13 | type: PROBABILITY 14 | sampler: 15 | type: OPEN_SIMPLEX_2 16 | salt: 1156 17 | threshold: 0.75 18 | 19 | locator: 20 | type: AND 21 | locators: 22 | - type: TOP 23 | range: &range 24 | min: 0 25 | max: 319 26 | - type: PATTERN 27 | range: *range 28 | pattern: 29 | type: MATCH_SET 30 | blocks: 31 | - minecraft:light_blue_terracotta 32 | - minecraft:blue_terracotta 33 | - minecraft:end_stone 34 | offset: -1 35 | 36 | structures: 37 | distribution: 38 | type: CONSTANT 39 | structures: choruve_tree -------------------------------------------------------------------------------- /features/end/vegetation/trees/crim_trees.yml: -------------------------------------------------------------------------------- 1 | id: CRIM_TREES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 17 7 | padding: 6 8 | salt: 4357 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH_AIR 21 | offset: 0 22 | - type: PATTERN 23 | range: *range 24 | pattern: 25 | type: MATCH_SET 26 | blocks: 27 | - minecraft:purple_terracotta 28 | - minecraft:magenta_terracotta 29 | - minecraft:end_stone 30 | offset: -1 31 | 32 | structures: 33 | distribution: 34 | type: CONSTANT 35 | structures: crim_tree -------------------------------------------------------------------------------- /features/end/vegetation/trees/glowstone_trees.yml: -------------------------------------------------------------------------------- 1 | id: GLOWSTONE_TREES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: AND 6 | distributors: 7 | - type: PADDED_GRID 8 | width: 3 9 | padding: 4 10 | salt: 2514 11 | - type: SAMPLER 12 | sampler: 13 | type: CELLULAR 14 | return: CellValue 15 | frequency: 0.06 16 | salt: 1285 17 | threshold: -0.9 18 | 19 | locator: 20 | type: AND 21 | locators: 22 | - type: TOP 23 | range: &range 24 | min: 0 25 | max: 255 26 | - type: PATTERN 27 | range: *range 28 | pattern: 29 | type: MATCH_AIR 30 | offset: 0 31 | - type: PATTERN 32 | range: *range 33 | pattern: 34 | type: MATCH 35 | block: minecraft:black_concrete_powder 36 | offset: -1 37 | 38 | structures: 39 | distribution: 40 | type: WHITE_NOISE 41 | structures: 42 | - glowstone_trees: 1 -------------------------------------------------------------------------------- /features/end/vegetation/trees/mauve_trees.yml: -------------------------------------------------------------------------------- 1 | id: MAUVE_TREES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 16 7 | padding: 7 8 | salt: 6578 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH_AIR 21 | offset: 0 22 | - type: PATTERN 23 | range: *range 24 | pattern: 25 | type: MATCH_SET 26 | blocks: 27 | - minecraft:purple_concrete_powder 28 | - minecraft:purple_concrete 29 | - minecraft:end_stone 30 | offset: -1 31 | 32 | structures: 33 | distribution: 34 | type: WHITE_NOISE 35 | structures: 36 | - small_mauve_tree: 3 37 | - large_mauve_tree: 1 -------------------------------------------------------------------------------- /features/end/vegetation/trees/rosette_bulb_trees.yml: -------------------------------------------------------------------------------- 1 | id: ROSETTE_BULB_TREES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 13 7 | padding: 11 8 | salt: 7778 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH_AIR 21 | offset: 0 22 | - type: PATTERN 23 | range: *range 24 | pattern: 25 | type: MATCH_SET 26 | blocks: 27 | - minecraft:pink_concrete_powder 28 | - minecraft:pink_concrete_powder 29 | - minecraft:end_stone 30 | offset: -1 31 | 32 | structures: 33 | distribution: 34 | type: CONSTANT 35 | structures: rosette_bulb_tree -------------------------------------------------------------------------------- /features/end/vegetation/trees/shattered_trees.yml: -------------------------------------------------------------------------------- 1 | id: SHATTERED_TREES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 8 7 | padding: 6 8 | salt: 4678 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH 21 | block: minecraft:end_stone 22 | offset: -1 23 | - type: PATTERN 24 | range: *range 25 | pattern: 26 | type: MATCH 27 | block: minecraft:end_stone 28 | offset: -3 29 | 30 | structures: 31 | distribution: 32 | type: WHITE_NOISE 33 | structures: 34 | - small_shattered_tree: 5 35 | - large_shattered_tree: 1 -------------------------------------------------------------------------------- /features/end/vegetation/trees/trap_trees.yml: -------------------------------------------------------------------------------- 1 | id: TRAP_TREES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 27 7 | padding: 16 8 | salt: 4568 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH_AIR 21 | offset: 0 22 | - type: PATTERN 23 | range: *range 24 | pattern: 25 | type: MATCH_SET 26 | blocks: 27 | - minecraft:magenta_concrete 28 | - minecraft:magenta_concrete_powder 29 | - minecraft:end_stone 30 | offset: -1 31 | 32 | structures: 33 | distribution: 34 | type: CONSTANT 35 | structures: trap_tree -------------------------------------------------------------------------------- /features/end/vegetation/trees/vermilion_trees.yml: -------------------------------------------------------------------------------- 1 | id: VERMILION_TREES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 24 7 | padding: 15 8 | salt: 4357 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH_AIR 21 | offset: 0 22 | - type: PATTERN 23 | range: *range 24 | pattern: 25 | type: MATCH_SET 26 | blocks: 27 | - minecraft:red_concrete 28 | - minecraft:red_concrete_powder 29 | - minecraft:end_stone 30 | offset: -1 31 | 32 | structures: 33 | distribution: 34 | type: CONSTANT 35 | structures: drooping_tree -------------------------------------------------------------------------------- /features/end/vegetation/trees/warped/twisting_beanstalks.yml: -------------------------------------------------------------------------------- 1 | id: TWISTING_BEANSTALKS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: AND 6 | distributors: 7 | - type: PADDED_GRID 8 | width: 9 9 | padding: 4 10 | salt: 1124 11 | - type: SAMPLER 12 | sampler: 13 | type: PROBABILITY 14 | sampler: 15 | type: OPEN_SIMPLEX_2 16 | salt: 6667 17 | threshold: 0.6 18 | 19 | locator: 20 | type: AND 21 | locators: 22 | - type: TOP 23 | range: &range 24 | min: 0 25 | max: 319 26 | - type: PATTERN 27 | range: *range 28 | pattern: 29 | type: MATCH 30 | block: minecraft:end_stone 31 | offset: -1 32 | 33 | structures: 34 | distribution: 35 | type: CONSTANT 36 | structures: twisting_beanstalk -------------------------------------------------------------------------------- /features/end/vegetation/trees/warped/warped_mangroves.yml: -------------------------------------------------------------------------------- 1 | id: WARPED_MANGROVES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 14 7 | padding: 6 8 | salt: 3330 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH_SET 21 | blocks: 22 | - minecraft:light_blue_concrete_powder 23 | - minecraft:cyan_concrete_powder 24 | - minecraft:end_stone 25 | offset: -1 26 | - type: PATTERN 27 | range: *range 28 | pattern: 29 | type: MATCH_AIR 30 | offset: 0 31 | 32 | structures: 33 | distribution: 34 | type: CONSTANT 35 | structures: warped_mangrove_tree_procedural -------------------------------------------------------------------------------- /features/end/vegetation/trees/warped/warped_mesquite_trees.yml: -------------------------------------------------------------------------------- 1 | id: WARPED_MESQUITE_TREES 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 6 7 | padding: 2 8 | salt: 1249 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: TOP 14 | range: &range 15 | min: 0 16 | max: 319 17 | - type: PATTERN 18 | range: *range 19 | pattern: 20 | type: MATCH_AIR 21 | offset: 0 22 | - type: PATTERN 23 | range: *range 24 | pattern: 25 | type: MATCH_SET 26 | blocks: 27 | - minecraft:light_blue_concrete_powder 28 | - minecraft:cyan_concrete_powder 29 | - minecraft:end_stone 30 | offset: -1 31 | 32 | structures: 33 | distribution: 34 | type: CONSTANT 35 | structures: warped_mesquite_tree_procedural -------------------------------------------------------------------------------- /features/void/asteroids.yml: -------------------------------------------------------------------------------- 1 | id: ASTEROIDS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: AND 6 | distributors: 7 | - type: PADDED_GRID 8 | width: 10 9 | padding: 8 10 | salt: 3214 11 | - type: SAMPLER 12 | sampler: 13 | type: CELLULAR 14 | return: CellValue 15 | frequency: 0.05 16 | salt: 8344 17 | threshold: -0.01 18 | 19 | locator: 20 | type: AND 21 | locators: 22 | - type: RANDOM 23 | height: &range 24 | min: 25 25 | max: 125 26 | amount: 1 27 | salt: 1276 28 | - type: PATTERN 29 | range: *range 30 | pattern: 31 | type: MATCH_AIR 32 | offset: 0 33 | 34 | structures: 35 | distribution: 36 | type: CONSTANT 37 | structures: asteroid 38 | -------------------------------------------------------------------------------- /features/void/galaxys.yml: -------------------------------------------------------------------------------- 1 | id: GALAXYS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: PADDED_GRID 6 | width: 24 7 | padding: 14 8 | salt: 8772 9 | 10 | locator: 11 | type: AND 12 | locators: 13 | - type: RANDOM 14 | height: &range 15 | min: 0 16 | max: 225 17 | amount: 1 18 | salt: 2913 19 | - type: PATTERN 20 | range: *range 21 | pattern: 22 | type: MATCH_AIR 23 | offset: 0 24 | 25 | structures: 26 | distribution: 27 | type: WHITE_NOISE 28 | structures: 29 | - vertical_galaxy: 1 30 | - horizontal_galaxy: 1 -------------------------------------------------------------------------------- /features/void/icy_asteroids.yml: -------------------------------------------------------------------------------- 1 | id: ICY_ASTEROIDS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: AND 6 | distributors: 7 | - type: PADDED_GRID 8 | width: 8 9 | padding: 10 10 | salt: 9367 11 | - type: SAMPLER 12 | sampler: 13 | type: CELLULAR 14 | return: CellValue 15 | frequency: 0.05 16 | salt: 5428 17 | threshold: -0.01 18 | 19 | locator: 20 | type: AND 21 | locators: 22 | - type: RANDOM 23 | height: &range 24 | min: 125 25 | max: 215 26 | amount: 1 27 | salt: 2346 28 | - type: PATTERN 29 | range: *range 30 | pattern: 31 | type: MATCH_AIR 32 | offset: 0 33 | 34 | structures: 35 | distribution: 36 | type: WHITE_NOISE 37 | structures: 38 | - icy_asteroid: 5 39 | - spiky_ice_asteroid: 1 40 | -------------------------------------------------------------------------------- /features/void/void-sea/void_sea_air.yml: -------------------------------------------------------------------------------- 1 | id: VOID_SEA_AIR 2 | type: FEATURE 3 | 4 | distributor: 5 | type: "YES" 6 | 7 | locator: 8 | type: PATTERN 9 | range: &range 10 | min: 0 11 | max: 255 12 | pattern: 13 | type: MATCH_AIR 14 | offset: 0 15 | 16 | structures: 17 | distribution: 18 | type: CONSTANT 19 | structures: BLOCK:minecraft:light[level=0] 20 | 21 | -------------------------------------------------------------------------------- /features/void/voidstars.yml: -------------------------------------------------------------------------------- 1 | id: VOIDSTARS 2 | type: FEATURE 3 | 4 | distributor: 5 | type: AND 6 | distributors: 7 | - type: PADDED_GRID 8 | width: 8 9 | padding: 6 10 | salt: 7115 11 | - type: SAMPLER 12 | sampler: 13 | type: CELLULAR 14 | return: CellValue 15 | frequency: 0.05 16 | salt: 6541 17 | threshold: -0.4 18 | 19 | locator: 20 | type: AND 21 | locators: 22 | - type: RANDOM 23 | height: &range 24 | min: 0 25 | max: 225 26 | amount: 1 27 | salt: 2913 28 | - type: PATTERN 29 | range: *range 30 | pattern: 31 | type: MATCH_AIR 32 | offset: 0 33 | 34 | structures: 35 | distribution: 36 | type: WHITE_NOISE 37 | structures: 38 | - voidstar_a: 1 39 | - voidstar_b: 1 40 | - voidstar_c: 1 41 | - voidstar_d: 1 42 | - voidstar_e: 1 43 | - voidstar_f: 1 44 | - voidstar_g: 1 -------------------------------------------------------------------------------- /math/README.md: -------------------------------------------------------------------------------- 1 | # Math 2 | 3 | This directory contains commonly used mathematical functions and noise samplers, 4 | with the intent of being utilized globally across the entire pack. These 5 | functions and samplers are defined in their own files for the sake of 6 | organization, and are injected into the pack manifest, rather than being 7 | directly defined in it. 8 | 9 | Things are only defined here if they are commonplace across different 10 | configurations, more specific single application functions and samplers should 11 | be defined where they are used instead of here. 12 | -------------------------------------------------------------------------------- /math/functions/lerp.yml: -------------------------------------------------------------------------------- 1 | functions: 2 | lerp: 3 | # Linear interpolation between two values 4 | arguments: 5 | - t 6 | - at # Value of t where output = a 7 | - a 8 | - bt # Value of t where output = b 9 | - b 10 | # Values of t between at and bt will be interpolated 11 | expression: | 12 | if(at=bt,b,a*(t-bt)/(at-bt)+b*(t-at)/(bt-at))), 14 | if(t>=at,a,if(t<=bt,b,a*(t-bt)/(at-bt)+b*(t-at)/(bt-at))) 15 | ) -------------------------------------------------------------------------------- /math/functions/maskSmooth.yml: -------------------------------------------------------------------------------- 1 | functions: 2 | maskSmooth: 3 | # Ramp function from 0 to value, typically used to mask a noise function by another 4 | arguments: 5 | - v # Value 6 | - lb # When mask <= lb, returns 0 7 | - ub # When mask >= ub, returns v 8 | # Otherwise, output is interpolated between 0 and v using a hermite curve 9 | - m # Mask, typically a noise function 10 | expression: | 11 | if(lb=ub,v,v*hermite((m-lb)/(ub-lb)))), 13 | if(m>=lb,0,if(m<=ub,v,v*hermite((m-lb)/(ub-lb)))) 14 | ) 15 | functions: 16 | hermite: 17 | arguments: [x] 18 | expression: 3*x^2-2*x^3 -------------------------------------------------------------------------------- /math/samplers/simplex.yml: -------------------------------------------------------------------------------- 1 | samplers: 2 | simplex: 3 | dimensions: 2 4 | type: FBM 5 | octaves: 4 6 | sampler: 7 | type: OPEN_SIMPLEX_2 8 | frequency: 0.0075 9 | simplex3: 10 | dimensions: 3 11 | type: FBM 12 | octaves: 4 13 | sampler: 14 | type: OPEN_SIMPLEX_2 15 | frequency: 0.0075 16 | -------------------------------------------------------------------------------- /palettes/aether/deepslate.yml: -------------------------------------------------------------------------------- 1 | id: DEEPSLATE 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:deepslate: 10 7 | - minecraft:cobbled_deepslate: 5 8 | - minecraft:smooth_basalt: 3 9 | layers: 1 10 | sampler: 11 | type: DOMAIN_WARP 12 | amplitude: 1 13 | warp: 14 | type: GAUSSIAN 15 | sampler: 16 | type: FBM 17 | octaves: 2 18 | sampler: 19 | type: OPEN_SIMPLEX_2 20 | frequency: 0.2 21 | salt: 293 22 | -------------------------------------------------------------------------------- /palettes/aether/grass.yml: -------------------------------------------------------------------------------- 1 | id: GRASS 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: minecraft:grass_block 6 | layers: 1 7 | - materials: minecraft:dirt 8 | layers: 3 9 | - materials: 10 | - minecraft:stone: 10 11 | - minecraft:cobblestone: 5 12 | - minecraft:mossy_cobblestone: 3 13 | layers: 1 14 | sampler: 15 | type: DOMAIN_WARP 16 | amplitude: 1 17 | warp: 18 | type: GAUSSIAN 19 | sampler: 20 | type: FBM 21 | octaves: 2 22 | sampler: 23 | type: OPEN_SIMPLEX_2 24 | frequency: 0.2 25 | salt: 293 -------------------------------------------------------------------------------- /palettes/aether/grass_gravel_patches.yml: -------------------------------------------------------------------------------- 1 | id: GRASS_GRAVEL_PATCHES 2 | 3 | type: PALETTE 4 | 5 | layers: 6 | - materials: 7 | - minecraft:grass_block: 5 8 | - minecraft:gravel: 2 9 | layers: 1 10 | sampler: 11 | type: DOMAIN_WARP 12 | amplitude: 1 13 | warp: 14 | type: GAUSSIAN 15 | sampler: 16 | type: FBM 17 | octaves: 2 18 | sampler: 19 | type: OPEN_SIMPLEX_2 20 | frequency: 0.05 21 | salt: 4246 22 | - materials: minecraft:dirt 23 | layers: 3 24 | - materials: 25 | - minecraft:stone: 10 26 | - minecraft:cobblestone: 5 27 | - minecraft:mossy_cobblestone: 3 28 | layers: 1 29 | sampler: 30 | type: DOMAIN_WARP 31 | amplitude: 1 32 | warp: 33 | type: GAUSSIAN 34 | sampler: 35 | type: FBM 36 | octaves: 2 37 | sampler: 38 | type: OPEN_SIMPLEX_2 39 | frequency: 0.2 40 | salt: 293 -------------------------------------------------------------------------------- /palettes/aether/gray_concrete_terracotta.yml: -------------------------------------------------------------------------------- 1 | id: GRAY_CONCRETE_TERRACOTTA 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:cyan_terracotta: 3 7 | - minecraft:gray_concrete: 2 8 | layers: 8 9 | sampler: 10 | type: DOMAIN_WARP 11 | amplitude: 1 12 | warp: 13 | type: GAUSSIAN 14 | sampler: 15 | type: FBM 16 | octaves: 2 17 | sampler: 18 | type: OPEN_SIMPLEX_2 19 | frequency: 0.04 20 | salt: 5467 21 | - materials: 22 | - minecraft:stone: 10 23 | - minecraft:cobblestone: 5 24 | - minecraft:mossy_cobblestone: 3 25 | layers: 1 26 | sampler: 27 | type: DOMAIN_WARP 28 | amplitude: 1 29 | warp: 30 | type: GAUSSIAN 31 | sampler: 32 | type: FBM 33 | octaves: 2 34 | sampler: 35 | type: OPEN_SIMPLEX_2 36 | frequency: 0.2 37 | salt: 293 38 | -------------------------------------------------------------------------------- /palettes/aether/light_gray_powder.yml: -------------------------------------------------------------------------------- 1 | id: LIGHT_GRAY_POWDER 2 | 3 | type: PALETTE 4 | 5 | layers: 6 | - materials: 7 | - minecraft:light_gray_concrete_powder: 3 8 | layers: 2 9 | sampler: 10 | type: DOMAIN_WARP 11 | amplitude: 10 12 | warp: 13 | type: GAUSSIAN 14 | sampler: 15 | type: FBM 16 | octaves: 2 17 | sampler: 18 | type: OPEN_SIMPLEX_2 19 | frequency: 0.03 20 | salt: 4356 21 | - materials: 22 | - minecraft:stone: 10 23 | - minecraft:cobblestone: 5 24 | - minecraft:mossy_cobblestone: 3 25 | layers: 1 26 | sampler: 27 | type: DOMAIN_WARP 28 | amplitude: 1 29 | warp: 30 | type: GAUSSIAN 31 | sampler: 32 | type: FBM 33 | octaves: 2 34 | sampler: 35 | type: OPEN_SIMPLEX_2 36 | frequency: 0.05 37 | salt: 293 -------------------------------------------------------------------------------- /palettes/aether/podzol.yml: -------------------------------------------------------------------------------- 1 | id: PODZOL 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:grass_block: 4 7 | - minecraft:coarse_dirt: 1 8 | - minecraft:podzol: 1 9 | - minecraft:gravel: 2 10 | layers: 1 11 | sampler: 12 | type: DOMAIN_WARP 13 | amplitude: 1 14 | warp: 15 | type: GAUSSIAN 16 | sampler: 17 | type: FBM 18 | octaves: 2 19 | sampler: 20 | type: OPEN_SIMPLEX_2 21 | frequency: 0.2 22 | salt: 293 23 | - materials: 24 | - minecraft:dirt: 1 25 | layers: 2 26 | - materials: 27 | - minecraft:stone: 10 28 | - minecraft:cobblestone: 5 29 | - minecraft:mossy_cobblestone: 3 30 | layers: 1 31 | sampler: 32 | type: DOMAIN_WARP 33 | amplitude: 1 34 | warp: 35 | type: GAUSSIAN 36 | sampler: 37 | type: FBM 38 | octaves: 2 39 | sampler: 40 | type: OPEN_SIMPLEX_2 41 | frequency: 0.2 42 | salt: 293 43 | -------------------------------------------------------------------------------- /palettes/aether/stone_cobble_mix.yml: -------------------------------------------------------------------------------- 1 | id: STONE_COBBLE_MIX 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:stone: 10 7 | - minecraft:cobblestone: 5 8 | - minecraft:mossy_cobblestone: 3 9 | layers: 1 10 | sampler: 11 | type: DOMAIN_WARP 12 | amplitude: 1 13 | warp: 14 | type: GAUSSIAN 15 | sampler: 16 | type: FBM 17 | octaves: 2 18 | sampler: 19 | type: OPEN_SIMPLEX_2 20 | frequency: 0.2 21 | salt: 293 -------------------------------------------------------------------------------- /palettes/end/amesthyst_end.yml: -------------------------------------------------------------------------------- 1 | id: AMETHYST_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:calcite: 6 7 | - minecraft:diorite: 3 8 | - minecraft:smooth_basalt: 2 9 | - minecraft:obsidian: 6 10 | - minecraft:crying_obsidian: 3 11 | - minecraft:amethyst_block: 5 12 | layers: 1 13 | sampler: 14 | type: DOMAIN_WARP 15 | amplitude: 1 16 | warp: 17 | type: GAUSSIAN 18 | sampler: 19 | type: FBM 20 | octaves: 2 21 | sampler: 22 | type: OPEN_SIMPLEX_2 23 | frequency: 0.04 24 | salt: 6881 25 | 26 | 27 | -------------------------------------------------------------------------------- /palettes/end/ashen_end.yml: -------------------------------------------------------------------------------- 1 | id: ASHEN_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:gray_concrete_powder: 1 7 | layers: 2 8 | sampler: 9 | dimensions: 2 10 | type: DOMAIN_WARP 11 | warp: 12 | type: WHITE_NOISE 13 | sampler: 14 | type: CELLULAR 15 | frequency: 0.1 16 | return: CellValue 17 | - materials: 18 | - minecraft:smooth_basalt: 1 19 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/black_gray_terracotta.yml: -------------------------------------------------------------------------------- 1 | id: BLACK_GRAY_TERRACOTTA 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:black_terracotta: 1 7 | - minecraft:gray_terracotta: 1 8 | - minecraft:end_stone: 1 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 -------------------------------------------------------------------------------- /palettes/end/blue_light_terracotta.yml: -------------------------------------------------------------------------------- 1 | id: BLUE_LIGHT_TERRACOTTA 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:light_blue_terracotta: 1 7 | - minecraft:blue_terracotta: 1 8 | - minecraft:end_stone: 1 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/calcite_concrete_mix_end.yml: -------------------------------------------------------------------------------- 1 | id: CALCITE_CONCRETE_MIX_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:end_stone: 10 7 | - minecraft:white_concrete: 5 8 | - minecraft:white_concrete_powder: 5 9 | - minecraft:calcite: 5 10 | layers: 1 11 | sampler: 12 | type: WHITE_NOISE 13 | amplitude: 1 14 | warp: 15 | type: "OPEN_SIMPLEX_2" 16 | frequency: 0.9 17 | sampler: 18 | type: FBM 19 | octaves: 2 20 | sampler: 21 | type: "CELLULAR" 22 | return: "CellValue" 23 | frequency: 0.5 24 | salt: 9345 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /palettes/end/craggy_end.yml: -------------------------------------------------------------------------------- 1 | id: CRAGGY_END 2 | 3 | type: PALETTE 4 | 5 | layers: 6 | - materials: 7 | - minecraft:end_stone: 8 8 | - minecraft:deepslate: 3 9 | - minecraft:cobbled_deepslate: 2 10 | - minecraft:mud: 1 11 | layers: 2 12 | sampler: 13 | type: DOMAIN_WARP 14 | amplitude: 1 15 | warp: 16 | type: GAUSSIAN 17 | sampler: 18 | type: FBM 19 | octaves: 2 20 | sampler: 21 | type: OPEN_SIMPLEX_2 22 | frequency: 0.1 23 | salt: 4246 24 | - materials: 25 | - minecraft:end_stone: 1 26 | layers: 1 27 | sampler: 28 | type: DOMAIN_WARP 29 | amplitude: 1 30 | warp: 31 | type: GAUSSIAN 32 | sampler: 33 | type: FBM 34 | octaves: 2 35 | sampler: 36 | type: OPEN_SIMPLEX_2 37 | frequency: 0.2 38 | salt: 293 -------------------------------------------------------------------------------- /palettes/end/crying_currents.yml: -------------------------------------------------------------------------------- 1 | id: CRYING_CURRENTS 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:black_concrete_powder: 10 7 | - minecraft:black_concrete: 3 8 | - minecraft:obsidian: 1 9 | - minecraft:crying_obsidian: 1 10 | - minecraft:purple_concrete: 1 11 | - minecraft:purple_concrete_powder: 1 12 | - minecraft:purple_concrete: 1 13 | - minecraft:crying_obsidian: 1 14 | - minecraft:obsidian: 1 15 | - minecraft:black_concrete: 3 16 | - minecraft:black_concrete_powder: 10 17 | layers: 1 18 | sampler: 19 | type: DOMAIN_WARP 20 | amplitude: 2 21 | warp: 22 | type: GAUSSIAN 23 | sampler: 24 | type: FBM 25 | octaves: 2 26 | sampler: 27 | type: OPEN_SIMPLEX_2 28 | frequency: 0.01 29 | salt: 6881 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /palettes/end/dark_end.yml: -------------------------------------------------------------------------------- 1 | id: DARK_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:black_concrete_powder: 1 7 | layers: 2 8 | - materials: 9 | - minecraft:blackstone: 1 10 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/dead_coral_ground.yml: -------------------------------------------------------------------------------- 1 | id: DEAD_CORAL_GROUND 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:dead_tube_coral_block: 1 7 | - minecraft:dead_brain_coral_block: 1 8 | - minecraft:dead_bubble_coral_block: 1 9 | - minecraft:dead_fire_coral_block: 1 10 | - minecraft:dead_horn_coral_block: 1 11 | layers: 1 12 | sampler: 13 | type: WHITE_NOISE 14 | salt: 3457 15 | threshold: 0.5 16 | -------------------------------------------------------------------------------- /palettes/end/gray_glimmering_currents.yml: -------------------------------------------------------------------------------- 1 | id: GRAY_GLIMMERING_CURRENTS 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:end_stone: 35 7 | - minecraft:gray_concrete: 4 8 | - minecraft:cyan_terracotta: 2 9 | - minecraft:pearlescent_froglight: 1 10 | - minecraft:cyan_terracotta: 2 11 | - minecraft:gray_concrete: 4 12 | - minecraft:end_stone: 35 13 | layers: 1 14 | sampler: 15 | type: DOMAIN_WARP 16 | amplitude: 1 17 | warp: 18 | type: GAUSSIAN 19 | sampler: 20 | type: FBM 21 | octaves: 2 22 | sampler: 23 | type: OPEN_SIMPLEX_2 24 | frequency: 0.01 25 | salt: 6579 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /palettes/end/mix_end.yml: -------------------------------------------------------------------------------- 1 | id: MIX_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:obsidian: 3 7 | - minecraft:crying_obsidian: 1 8 | - minecraft:black_stained_glass: 2 9 | - minecraft:purple_stained_glass: 2 10 | - minecraft:magenta_stained_glass: 2 11 | - minecraft:black_concrete: 3 12 | - minecraft:purple_concrete: 3 13 | layers: 1 14 | sampler: 15 | type: DOMAIN_WARP 16 | amplitude: 1 17 | warp: 18 | type: GAUSSIAN 19 | sampler: 20 | type: FBM 21 | octaves: 2 22 | sampler: 23 | type: OPEN_SIMPLEX_2 24 | frequency: 0.2 25 | salt: 7690 26 | -------------------------------------------------------------------------------- /palettes/end/powder/black_powder_end.yml: -------------------------------------------------------------------------------- 1 | id: BLACK_POWDER_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:black_concrete_powder: 3 7 | - minecraft:end_stone: 1 8 | - minecraft:black_concrete: 2 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/powder/blue_powder_end.yml: -------------------------------------------------------------------------------- 1 | id: BLUE_POWDER_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:blue_concrete_powder: 3 7 | - minecraft:blue_concrete: 2 8 | - minecraft:end_stone: 1 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/powder/cyan_powder_end.yml: -------------------------------------------------------------------------------- 1 | id: CYAN_POWDER_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:cyan_concrete_powder: 3 7 | - minecraft:cyan_concrete: 2 8 | - minecraft:end_stone: 1 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/powder/light_gray_powder_end.yml: -------------------------------------------------------------------------------- 1 | id: LIGHT_GRAY_POWDER_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:light_gray_concrete_powder: 3 7 | - minecraft:light_gray_concrete: 2 8 | - minecraft:end_stone: 5 9 | layers: 1 10 | sampler: 11 | type: WHITE_NOISE 12 | amplitude: 1 13 | warp: 14 | type: "OPEN_SIMPLEX_2" 15 | frequency: 0.9 16 | sampler: 17 | type: FBM 18 | octaves: 2 19 | sampler: 20 | type: "CELLULAR" 21 | return: "CellValue" 22 | frequency: 0.5 23 | salt: 9345 -------------------------------------------------------------------------------- /palettes/end/powder/lime_powder_end.yml: -------------------------------------------------------------------------------- 1 | id: LIME_POWDER_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:lime_concrete_powder: 3 7 | - minecraft:lime_concrete: 2 8 | - minecraft:end_stone: 1 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/powder/magenta_powder_end.yml: -------------------------------------------------------------------------------- 1 | id: MAGENTA_POWDER_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:magenta_concrete_powder: 3 7 | - minecraft:end_stone: 1 8 | - minecraft:magenta_concrete: 2 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/powder/orange_powder_end.yml: -------------------------------------------------------------------------------- 1 | id: ORANGE_POWDER_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:orange_concrete_powder: 3 7 | - minecraft:orange_concrete: 2 8 | - minecraft:end_stone: 1 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/powder/pink_powder_end.yml: -------------------------------------------------------------------------------- 1 | id: PINK_POWDER_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:pink_concrete_powder: 3 7 | - minecraft:pink_concrete: 2 8 | - minecraft:end_stone: 1 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/powder/purple_powder_end.yml: -------------------------------------------------------------------------------- 1 | id: PURPLE_POWDER_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:purple_concrete_powder: 3 7 | - minecraft:purple_concrete: 2 8 | - minecraft:end_stone: 1 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/powder/red_powder_end.yml: -------------------------------------------------------------------------------- 1 | id: RED_POWDER_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:red_concrete_powder: 3 7 | - minecraft:end_stone: 1 8 | - minecraft:red_concrete: 2 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/powder/white_powder_end.yml: -------------------------------------------------------------------------------- 1 | id: WHITE_POWDER_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:white_concrete: 3 7 | - minecraft:end_stone: 1 8 | - minecraft:white_concrete_powder: 2 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/powder/yellow_powder_end.yml: -------------------------------------------------------------------------------- 1 | id: YELLOW_POWDER_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:yellow_concrete_powder: 3 7 | - minecraft:end_stone: 1 8 | - minecraft:yellow_concrete: 2 9 | layers: 1 10 | sampler: 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/purple_terracotta_end.yml: -------------------------------------------------------------------------------- 1 | id: PURPLE_TERRACOTTA_END 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:purple_terracotta: 3 7 | - minecraft:magenta_terracotta: 2 8 | - minecraft:end_stone: 1 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 14 | - materials: 15 | - minecraft:end_stone: 1 16 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/shattered_ground.yml: -------------------------------------------------------------------------------- 1 | id: SHATTERED_GROUND 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:air: 1 7 | - minecraft:end_stone: 1 8 | layers: 1 9 | sampler: &transitionSampler 10 | type: WHITE_NOISE 11 | salt: 4357 12 | threshold: 0.5 13 | - materials: 14 | - minecraft:end_stone: 1 15 | layers: 1 -------------------------------------------------------------------------------- /palettes/end/white_gray_terracotta.yml: -------------------------------------------------------------------------------- 1 | id: WHITE_GRAY_TERRACOTTA 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:white_terracotta: 1 7 | - minecraft:light_gray_terracotta: 1 8 | - minecraft:end_stone: 1 9 | layers: 1 10 | sampler: &transitionSampler 11 | type: WHITE_NOISE 12 | salt: 4357 13 | threshold: 0.5 -------------------------------------------------------------------------------- /palettes/void/asteroid.yml: -------------------------------------------------------------------------------- 1 | id: ASTEROID 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:basalt: 2 7 | - minecraft:smooth_basalt: 3 8 | - minecraft:mud: 1 9 | - minecraft:deepslate: 4 10 | layers: 1 11 | sampler: 12 | type: WHITE_NOISE 13 | salt: 4357 14 | threshold: 0.5 -------------------------------------------------------------------------------- /palettes/void/ice_asteroid.yml: -------------------------------------------------------------------------------- 1 | id: ICE_ASTEROID 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:ice: 6 7 | - minecraft:packed_ice: 9 8 | - minecraft:blue_ice: 3 9 | - minecraft:basalt: 2 10 | - minecraft:smooth_basalt: 3 11 | - minecraft:mud: 1 12 | - minecraft:deepslate: 4 13 | layers: 1 14 | sampler: 15 | type: WHITE_NOISE 16 | salt: 4357 17 | threshold: 0.5 -------------------------------------------------------------------------------- /palettes/void/ice_asteroid_bottom.yml: -------------------------------------------------------------------------------- 1 | id: ICE_ASTEROID_BOTTOM 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:ice: 2 7 | - minecraft:packed_ice: 3 8 | - minecraft:blue_ice: 1 9 | - minecraft:basalt: 14 10 | - minecraft:smooth_basalt: 11 11 | - minecraft:mud: 8 12 | - minecraft:deepslate: 17 13 | layers: 1 14 | sampler: 15 | type: WHITE_NOISE 16 | salt: 4357 17 | threshold: 0.5 -------------------------------------------------------------------------------- /palettes/void/ice_asteroid_middle.yml: -------------------------------------------------------------------------------- 1 | id: ICE_ASTEROID_MIDDLE 2 | type: PALETTE 3 | 4 | layers: 5 | - materials: 6 | - minecraft:ice: 4 7 | - minecraft:packed_ice: 5 8 | - minecraft:blue_ice: 3 9 | - minecraft:basalt: 7 10 | - minecraft:smooth_basalt: 10 11 | - minecraft:mud: 4 12 | - minecraft:deepslate: 13 13 | layers: 1 14 | sampler: 15 | type: WHITE_NOISE 16 | salt: 4357 17 | threshold: 0.5 -------------------------------------------------------------------------------- /structures/aether/bee-nests/bee_nest.tesf: -------------------------------------------------------------------------------- 1 | num dir = randomInt(4); 2 | num x = 0; 3 | num z = 0; 4 | str face = "west"; 5 | 6 | if (dir == 0) { 7 | face = "west"; 8 | x = -1; 9 | z = 0; 10 | } else if (dir == 1) { 11 | face = "north"; 12 | x = 0; 13 | z = -1; 14 | } else if (dir == 2) { 15 | face = "east"; 16 | x = 1; 17 | z = 0; 18 | } else if (dir == 3) { 19 | face = "south"; 20 | x = 0; 21 | z = 1; 22 | } 23 | 24 | block(x, 0, z, "minecraft:bee_nest[facing=" + face + "]"); 25 | entity(-2, 0, 0, "minecraft:bee"); 26 | entity(-2, 0, 0, "minecraft:bee"); 27 | entity(-2, 0, 0, "minecraft:bee"); 28 | 29 | -------------------------------------------------------------------------------- /structures/aether/bee-nests/bee_nest_block.tesf: -------------------------------------------------------------------------------- 1 | if (getBlock(0,0,0) != "minecraft:air") fail; 2 | 3 | str direction = "west"; 4 | num randomDir = randomInt(4); 5 | num randomHon = randomInt(6); 6 | 7 | if (randomDir == 0) { 8 | direction = "west"; 9 | } else if (randomDir == 1) { 10 | direction = "east"; 11 | } else if (randomDir == 2) { 12 | direction = "south"; 13 | } else if (randomDir == 3) { 14 | direction = "north"; 15 | } 16 | 17 | block(0,0,0,"minecraft:bee_nest[facing="+ direction +",honey_level="+ randomHon +"]", false); -------------------------------------------------------------------------------- /structures/aether/bee-nests/honey_drip.tesf: -------------------------------------------------------------------------------- 1 | num length = 2 + randomInt(4); 2 | str setBlock = "minecraft:honey_block"; 3 | 4 | for (num y = 0; y < length; y = y + 1) { 5 | 6 | if ( (getBlock(0, -y, 0)) != "minecraft:air") fail; 7 | 8 | block(0, -y, 0, setBlock); 9 | } -------------------------------------------------------------------------------- /structures/aether/blank.tesf: -------------------------------------------------------------------------------- 1 | // No op 2 | return; -------------------------------------------------------------------------------- /structures/aether/boulders/boulder_ores.tesf: -------------------------------------------------------------------------------- 1 | num blockSelection = randomInt(34); 2 | if(blockSelection <= 27) structure(0, 0, 0, "boulder_palette", "NONE"); 3 | else if(blockSelection <= 32) block(0, 0, 0,"minecraft:coal_ore"); 4 | else if(blockSelection <= 33) block(0, 0, 0,"minecraft:iron_ore"); -------------------------------------------------------------------------------- /structures/aether/boulders/boulder_palette.tesf: -------------------------------------------------------------------------------- 1 | num blockSelection = randomInt(1000)/1000; 2 | if (blockSelection <= 0.7) block(0, 0, 0,"minecraft:stone"); 3 | else if (blockSelection <= 0.8) block(0, 0, 0,"minecraft:andesite"); 4 | else if (blockSelection <= 0.9) block(0, 0, 0,"minecraft:mossy_cobblestone"); 5 | else block(0, 0, 0,"minecraft:tuff"); -------------------------------------------------------------------------------- /structures/aether/buildings/mineshaft/place_mineshaft.tesf: -------------------------------------------------------------------------------- 1 | num random = randomInt(4); 2 | 3 | if (random == 0) structure(0,0,0, "mineshaft_procedural_ew", "NONE"); 4 | if (random == 1) structure(0,0,0, "mineshaft_procedural_ew", "CW_180"); 5 | if (random == 2) structure(0,0,0, "mineshaft_procedural_ns", "NONE"); 6 | if (random == 3) structure(0,0,0, "mineshaft_procedural_ns", "CW_180"); 7 | -------------------------------------------------------------------------------- /structures/aether/buildings/ruins/ancient_aether_tower/objects/place_random_object.tesf: -------------------------------------------------------------------------------- 1 | num random = randomInt(6); 2 | 3 | if (getBlock(0,-1,0) == "minecraft:air") fail; 4 | if (random == 3) structure(0,0,0,"spawner_obelisk","NONE"); 5 | if (random == 4) structure(0,0,0,"plant","NONE"); 6 | if (random == 5) structure(0,0,0,"ore_chunk","NONE"); 7 | 8 | -------------------------------------------------------------------------------- /structures/aether/buildings/ruins/ancient_aether_tower/objects/plant.tesf: -------------------------------------------------------------------------------- 1 | num length = 2+randomInt(3); 2 | 3 | block(0, 0, 0, "minecraft:moss_block", false); 4 | block(0, 1, 0, "minecraft:azalea", false); 5 | 6 | for (num y = 2; y < length; y = y + 1) { 7 | if (y < length) { 8 | block(0, y, 0, "minecraft:moss_block", false); 9 | } 10 | } 11 | 12 | structure(1, 0, 0, "ruin_block", "NONE"); 13 | structure(-1, 0, 0, "ruin_block", "NONE"); 14 | structure(1, 0, 1, "ruin_block", "NONE"); 15 | structure(0, 0, -1, "ruin_block", "NONE"); 16 | 17 | structure(1, 0, 1, "ruin_block", "NONE"); 18 | structure(-1, 0, 1, "ruin_block", "NONE"); 19 | structure(1, 0, -1, "ruin_block", "NONE"); 20 | structure(-1, 0, -1, "ruin_block", "NONE"); 21 | 22 | -------------------------------------------------------------------------------- /structures/aether/buildings/ruins/ancient_aether_tower/objects/ruin_ores.tesf: -------------------------------------------------------------------------------- 1 | 2 | num diamondWeight = 5; 3 | num emeraldWeight = 10; 4 | num redstoneWeight = 15; 5 | num goldWeight = 20; 6 | num ironWeight = 30; 7 | num coalWeight = 40; 8 | 9 | num random = randomInt(diamondWeight+emeraldWeight+redstoneWeight+goldWeight+ironWeight+coalWeight); 10 | 11 | if (random < diamondWeight) { 12 | block(0,0,0,"minecraft:diamond_ore"); 13 | } else if (random < emeraldWeight) { 14 | block(0,0,0,"minecraft:emerald_ore"); 15 | } else if (random <= redstoneWeight) { 16 | block(0,0,0,"minecraft:redstone_ore"); 17 | } else if (random <= goldWeight) { 18 | block(0,0,0,"minecraft:gold_ore"); 19 | } else if (random <= ironWeight) { 20 | block(0,0,0,"minecraft:iron_ore"); 21 | } else { 22 | block(0,0,0,"minecraft:coal_ore"); 23 | } -------------------------------------------------------------------------------- /structures/aether/buildings/ruins/ancient_aether_tower/rooms/ancient_aether_tower_room_tall_halls.tesf: -------------------------------------------------------------------------------- 1 | num length = 20; 2 | num width = 8; 3 | num wallWidth = 2; 4 | 5 | str setBlock = "ruin_block"; 6 | 7 | num random = randomInt(4); 8 | for (num y = 0; y < length; y = y + 1) { 9 | for (num x = -width-wallWidth; x <= width+wallWidth; x = x + 1) { 10 | for (num z = -width-wallWidth; z <= width+wallWidth; z = z + 1) { 11 | if (!(x > -5 && x < 5) && 12 | !(z > -5 && z < 5)) structure(x, y, z, setBlock, "NONE"); 13 | 14 | // next floor 15 | if (y == 0) structure(x, length, z, setBlock, "NONE"); 16 | } 17 | } 18 | } 19 | 20 | structure(0, 1, 0, "place_random_object", "NONE"); 21 | -------------------------------------------------------------------------------- /structures/aether/buildings/ruins/fort_ruin/ruin_wall.tesf: -------------------------------------------------------------------------------- 1 | num height = 8+randomInt(5); 2 | num checkHeight = 15; 3 | 4 | num yTranslate = 0; 5 | bool valid = false; 6 | 7 | for(num h = 0; h < checkHeight; h = h + 1) { 8 | if(getBlock(0, -h, 0) != "minecraft:grass" && 9 | getBlock(0, -h, 0) != "minecraft:air" && 10 | getBlock(0, -h, 0) != "minecraft:oak_leaves") { 11 | yTranslate = -h; 12 | valid = true; 13 | break; 14 | } 15 | } 16 | 17 | if (!valid) fail; 18 | 19 | for(num y = 0; y < height; y = y + 1) { 20 | structure(0,y+yTranslate,0,"ruin_block","NONE"); 21 | } -------------------------------------------------------------------------------- /structures/aether/buildings/ruins/fort_ruin/taller_ruin_wall.tesf: -------------------------------------------------------------------------------- 1 | num height = 18+randomInt(5); 2 | num checkHeight = 15; 3 | 4 | num yTranslate = 0; 5 | bool valid = false; 6 | 7 | for(num h = 0; h < checkHeight; h = h + 1) { 8 | if(getBlock(0, -h, 0) != "minecraft:grass" && 9 | getBlock(0, -h, 0) != "minecraft:air" && 10 | getBlock(0, -h, 0) != "minecraft:oak_leaves") { 11 | yTranslate = -h; 12 | valid = true; 13 | break; 14 | } 15 | } 16 | 17 | if (!valid) fail; 18 | 19 | for(num y = 0; y < height; y = y + 1) { 20 | structure(0,y+yTranslate,0,"ruin_block","NONE"); 21 | } -------------------------------------------------------------------------------- /structures/aether/ceiling_icicle.tesf: -------------------------------------------------------------------------------- 1 | num length = 2 + randomInt(4); 2 | str setBlock = "minecraft:packed_ice"; 3 | 4 | if (randomInt(4) == 0) setBlock = "minecraft:blue_ice"; 5 | 6 | for (num y = 0; y < length; y = y + 1) { 7 | 8 | if ( (getBlock(0, -y, 0)) != "minecraft:air") fail; 9 | 10 | block( 0, -y, 0, setBlock); 11 | } -------------------------------------------------------------------------------- /structures/aether/deposits/deposits/abstract_deep_deposit.yml: -------------------------------------------------------------------------------- 1 | id: ABSTRACT_DEEP_DEPOSIT 2 | type: ORE 3 | abstract: true 4 | extends: ABSTRACT_DEPOSIT 5 | 6 | replace: 7 | - minecraft:stone 8 | - minecraft:deepslate 9 | -------------------------------------------------------------------------------- /structures/aether/deposits/deposits/abstract_deposit.yml: -------------------------------------------------------------------------------- 1 | id: ABSTRACT_DEPOSIT 2 | type: ORE 3 | abstract: true 4 | 5 | replace: 6 | - minecraft:stone 7 | - minecraft:cobblestone 8 | - minecraft:mossy_cobblestone 9 | size: 32 -------------------------------------------------------------------------------- /structures/aether/deposits/deposits/andesite_deposit.yml: -------------------------------------------------------------------------------- 1 | id: ANDESITE_DEPOSIT 2 | type: ORE 3 | extends: ABSTRACT_DEPOSIT 4 | 5 | material: minecraft:andesite 6 | 7 | -------------------------------------------------------------------------------- /structures/aether/deposits/deposits/diorite_deposit.yml: -------------------------------------------------------------------------------- 1 | id: DIORITE_DEPOSIT 2 | type: ORE 3 | extends: ABSTRACT_DEPOSIT 4 | 5 | material: minecraft:diorite 6 | -------------------------------------------------------------------------------- /structures/aether/deposits/deposits/dirt_deposit.yml: -------------------------------------------------------------------------------- 1 | id: DIRT_DEPOSIT 2 | type: ORE 3 | extends: ABSTRACT_DEPOSIT 4 | 5 | material: minecraft:dirt 6 | -------------------------------------------------------------------------------- /structures/aether/deposits/deposits/granite_deposit.yml: -------------------------------------------------------------------------------- 1 | id: GRANITE_DEPOSIT 2 | type: ORE 3 | extends: ABSTRACT_DEPOSIT 4 | 5 | material: minecraft:granite 6 | -------------------------------------------------------------------------------- /structures/aether/deposits/deposits/gravel_deposit.yml: -------------------------------------------------------------------------------- 1 | id: GRAVEL_DEPOSIT 2 | type: ORE 3 | extends: ABSTRACT_DEEP_DEPOSIT 4 | 5 | material: minecraft:gravel 6 | -------------------------------------------------------------------------------- /structures/aether/deposits/deposits/tuff_deposit.yml: -------------------------------------------------------------------------------- 1 | id: TUFF_DEPOSIT 2 | type: ORE 3 | extends: ABSTRACT_DEEP_DEPOSIT 4 | 5 | material: minecraft:tuff 6 | -------------------------------------------------------------------------------- /structures/aether/deposits/ores/abstract_ore.yml: -------------------------------------------------------------------------------- 1 | id: ABSTRACT_ORE 2 | type: ORE 3 | abstract: true 4 | 5 | replace: 6 | - minecraft:stone 7 | - minecraft:cobblestone 8 | - minecraft:mossy_cobblestone 9 | 10 | -------------------------------------------------------------------------------- /structures/aether/deposits/ores/coal_ore.yml: -------------------------------------------------------------------------------- 1 | id: COAL_ORE 2 | type: ORE 3 | extends: ABSTRACT_ORE 4 | 5 | material: minecraft:coal_ore 6 | 7 | material-overrides: 8 | minecraft:deepslate: minecraft:deepslate_coal_ore 9 | 10 | size: 17 11 | -------------------------------------------------------------------------------- /structures/aether/deposits/ores/copper_ore.yml: -------------------------------------------------------------------------------- 1 | id: COPPER_ORE 2 | type: ORE 3 | extends: ABSTRACT_ORE 4 | 5 | material: minecraft:copper_ore 6 | 7 | material-overrides: 8 | minecraft:deepslate: minecraft:deepslate_copper_ore 9 | 10 | size: 10 11 | -------------------------------------------------------------------------------- /structures/aether/deposits/ores/copper_ore_large.yml: -------------------------------------------------------------------------------- 1 | id: COPPER_ORE_LARGE 2 | type: ORE 3 | extends: COPPER_ORE 4 | 5 | size: 20 6 | -------------------------------------------------------------------------------- /structures/aether/deposits/ores/diamond_ore.yml: -------------------------------------------------------------------------------- 1 | id: DIAMOND_ORE 2 | type: ORE 3 | extends: ABSTRACT_ORE 4 | 5 | material: minecraft:diamond_ore 6 | 7 | material-overrides: 8 | minecraft:deepslate: minecraft:deepslate_diamond_ore 9 | 10 | size: 8 11 | 12 | exposed: 0.2 -------------------------------------------------------------------------------- /structures/aether/deposits/ores/diamond_ore_large.yml: -------------------------------------------------------------------------------- 1 | id: DIAMOND_ORE_LARGE 2 | type: ORE 3 | extends: DIAMOND_ORE 4 | 5 | size: 12 6 | -------------------------------------------------------------------------------- /structures/aether/deposits/ores/diamond_ore_small.yml: -------------------------------------------------------------------------------- 1 | id: DIAMOND_ORE_SMALL 2 | type: ORE 3 | extends: DIAMOND_ORE 4 | 5 | size: 4 6 | -------------------------------------------------------------------------------- /structures/aether/deposits/ores/emerald_ore.yml: -------------------------------------------------------------------------------- 1 | id: EMERALD_ORE 2 | type: ORE 3 | extends: ABSTRACT_ORE 4 | 5 | material: minecraft:emerald_ore 6 | 7 | material-overrides: 8 | minecraft:deepslate: minecraft:deepslate_emerald_ore 9 | 10 | size: 3 11 | -------------------------------------------------------------------------------- /structures/aether/deposits/ores/gold_ore.yml: -------------------------------------------------------------------------------- 1 | id: GOLD_ORE 2 | type: ORE 3 | extends: ABSTRACT_ORE 4 | 5 | material: minecraft:gold_ore 6 | 7 | material-overrides: 8 | minecraft:deepslate: minecraft:deepslate_gold_ore 9 | 10 | size: 9 11 | -------------------------------------------------------------------------------- /structures/aether/deposits/ores/iron_ore.yml: -------------------------------------------------------------------------------- 1 | id: IRON_ORE 2 | type: ORE 3 | extends: ABSTRACT_ORE 4 | 5 | material: minecraft:iron_ore 6 | 7 | material-overrides: 8 | minecraft:deepslate: minecraft:deepslate_iron_ore 9 | 10 | size: 9 11 | -------------------------------------------------------------------------------- /structures/aether/deposits/ores/lapis_ore.yml: -------------------------------------------------------------------------------- 1 | id: LAPIS_ORE 2 | type: ORE 3 | extends: ABSTRACT_ORE 4 | 5 | material: minecraft:lapis_ore 6 | 7 | material-overrides: 8 | minecraft:deepslate: minecraft:deepslate_lapis_ore 9 | 10 | size: 7 11 | 12 | exposed: 0.2 -------------------------------------------------------------------------------- /structures/aether/deposits/ores/redstone_ore.yml: -------------------------------------------------------------------------------- 1 | id: REDSTONE_ORE 2 | type: ORE 3 | extends: ABSTRACT_ORE 4 | 5 | material: minecraft:redstone_ore 6 | 7 | material-overrides: 8 | minecraft:deepslate: minecraft:deepslate_redstone_ore 9 | 10 | size: 8 11 | -------------------------------------------------------------------------------- /structures/aether/hanging_lantern.tesf: -------------------------------------------------------------------------------- 1 | num length = 2+randomInt(7); 2 | 3 | str blockID = getBlock(0, -length, 0); 4 | if (blockID != "minecraft:air") fail; 5 | 6 | for (num y = 0; y < length; y = y + 1) { 7 | block(0,-y,0,"minecraft:chain"); 8 | } 9 | 10 | block(0,-length,0,"minecraft:lantern[hanging=true]"); 11 | -------------------------------------------------------------------------------- /structures/aether/misc/clouds/cloud.tesf: -------------------------------------------------------------------------------- 1 | num bodyAmount = 40+randomInt(30); 2 | num radius = 4.5; 3 | 4 | num xOffset = 0; 5 | num yOffset = 0; 6 | num zOffset = 0; 7 | 8 | for (num a = 0; a < bodyAmount; a = a + 1) { 9 | xOffset = xOffset+(2-randomInt(5)); 10 | if (randomInt(3) == 0) yOffset = yOffset+2-randomInt(5); 11 | zOffset = zOffset+(2-randomInt(5)); 12 | 13 | for (num x = -radius; x < radius; x = x + 1) { 14 | for (num y = -radius; y < radius; y = y + 1) { 15 | for (num z = -radius; z < radius; z = z + 1) { 16 | 17 | if (pow(x,2)+pow(y,2)+pow(z,2) < pow(radius/1.75,2)) { 18 | block(x+xOffset,y+yOffset,z+zOffset,"minecraft:white_concrete",false); 19 | } 20 | } 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /structures/aether/misc/clouds/translucent_cloud.tesf: -------------------------------------------------------------------------------- 1 | num bodyAmount = 40+randomInt(30); 2 | num radius = 4.5; 3 | 4 | num xOffset = 0; 5 | num yOffset = 0; 6 | num zOffset = 0; 7 | 8 | for (num a = 0; a < bodyAmount; a = a + 1) { 9 | xOffset = xOffset+(2-randomInt(5)); 10 | if (randomInt(3) == 0) yOffset = yOffset+2-randomInt(5); 11 | zOffset = zOffset+(2-randomInt(5)); 12 | 13 | for (num x = -radius; x < radius; x = x + 1) { 14 | for (num y = -radius; y < radius; y = y + 1) { 15 | for (num z = -radius; z < radius; z = z + 1) { 16 | 17 | if (pow(x,2)+pow(y,2)+pow(z,2) < pow(radius/1.75,2)) { 18 | block(x+xOffset,y+yOffset,z+zOffset,"minecraft:white_stained_glass",false); 19 | } 20 | } 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /structures/aether/misc/sky_water_column.tesf: -------------------------------------------------------------------------------- 1 | num height = 40+randomInt(50); 2 | bool allow = true; 3 | 4 | for (num i = height; i >= 0; i = i - 1) { 5 | if (getBlock(0,i,0) != "minecraft:air") allow = false; 6 | } 7 | 8 | if (allow == true) { 9 | 10 | structure(0,height,0,"cloud","NONE"); 11 | 12 | // block(1,height,0,"minecraft:white_stained_glass"); 13 | // block(-1,height,0,"minecraft:white_stained_glass"); 14 | // block(0,height,1,"minecraft:white_stained_glass"); 15 | // block(0,height,-1,"minecraft:white_stained_glass"); 16 | // block(0,height+1,0,"minecraft:white_stained_glass"); 17 | 18 | for (num i = height; i >= 0; i = i - 1) { 19 | block(0, i, 0, "minecraft:water[level=8]"); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /structures/aether/vegetation/bushes/dark_oak_bush.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | num radius = randomInt(randPrecision)/randPrecision*3 + 1; 3 | num radiusCeil = ceil(radius); 4 | num radiusSquared = pow(radius, 2); 5 | 6 | block(0, 0, 0, "minecraft:dark_oak_log"); 7 | 8 | for(num x = -radiusCeil; x <= radiusCeil; x = x + 1) { 9 | for(num y = 0; y <= radiusCeil; y = y + 1) { 10 | for(num z = -radiusCeil; z <= radiusCeil; z = z + 1) { 11 | num distanceSquared = (pow(x,2) + pow(y*3,2) + pow(z,2)); 12 | if (distanceSquared/radiusSquared < randomInt(randPrecision)/randPrecision) { 13 | block(x, y, z, "minecraft:dark_oak_leaves[distance=1,persistent=false]", false); 14 | } 15 | } 16 | } 17 | } 18 | 19 | block(0, 1, 0, "minecraft:dark_oak_leaves[distance=1,persistent=false]", false); -------------------------------------------------------------------------------- /structures/aether/vegetation/bushes/oak_bush.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | num radius = randomInt(randPrecision)/randPrecision*3 + 1; 3 | num radiusCeil = ceil(radius); 4 | num radiusSquared = pow(radius, 2); 5 | 6 | block(0, 0, 0, "minecraft:oak_log"); 7 | 8 | for(num x = -radiusCeil; x <= radiusCeil; x = x + 1) { 9 | for(num y = 0; y <= radiusCeil; y = y + 1) { 10 | for(num z = -radiusCeil; z <= radiusCeil; z = z + 1) { 11 | num distanceSquared = (pow(x,2) + pow(y*3,2) + pow(z,2)); 12 | if (distanceSquared/radiusSquared < randomInt(randPrecision)/randPrecision) { 13 | block(x, y, z, "minecraft:oak_leaves[distance=1,persistent=false]", false); 14 | } 15 | } 16 | } 17 | } 18 | 19 | block(0, 1, 0, "minecraft:oak_leaves[distance=1,persistent=false]", false); -------------------------------------------------------------------------------- /structures/aether/vegetation/bushes/spruce_bush.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | num radius = randomInt(randPrecision)/randPrecision*3 + 1; 3 | num radiusCeil = ceil(radius); 4 | num radiusSquared = pow(radius, 2); 5 | 6 | block(0, 0, 0, "minecraft:spruce_log"); 7 | 8 | for(num x = -radiusCeil; x <= radiusCeil; x = x + 1) { 9 | for(num y = 0; y <= radiusCeil; y = y + 1) { 10 | for(num z = -radiusCeil; z <= radiusCeil; z = z + 1) { 11 | num distanceSquared = (pow(x,2) + pow(y*3,2) + pow(z,2)); 12 | if (distanceSquared/radiusSquared < randomInt(randPrecision)/randPrecision) { 13 | block(x, y, z, "minecraft:spruce_leaves[distance=1,persistent=false]", false); 14 | } 15 | } 16 | } 17 | } 18 | 19 | block(0, 1, 0, "minecraft:spruce_leaves[distance=1,persistent=false]", false); -------------------------------------------------------------------------------- /structures/aether/vegetation/crops/sweet_berry_bush_patch.tesf: -------------------------------------------------------------------------------- 1 | num count = 6 + randomInt(10); // 4-12 2 | 3 | for (num p = 0; p < count; p = p + 1) { 4 | 5 | num theta = randomInt(360) * 3.14159/180; // Pick random angle 6 | num r = 5 - randomInt(randomInt(6) + 1); // Pick random distance 7 | // Accounts for radial distribution favoring the center 8 | num x = cos(theta) * r; 9 | num z = sin(theta) * r; 10 | 11 | // Check from top downwards for valid spawn 12 | num y = 4; 13 | while (!structure(x, y, z, "plantable", "NONE")) { 14 | y = y - 1; 15 | if (y < -4) fail; 16 | } 17 | block(x, y, z, "minecraft:sweet_berry_bush[age=3]"); 18 | } 19 | -------------------------------------------------------------------------------- /structures/aether/vegetation/crops/wheat_patch.tesf: -------------------------------------------------------------------------------- 1 | num count = 6 + randomInt(10); // 4-12 2 | 3 | for (num p = 0; p < count; p = p + 1) { 4 | 5 | num theta = randomInt(360) * 3.14159/180; // Pick random angle 6 | num r = 5 - randomInt(randomInt(6) + 1); // Pick random distance 7 | // Accounts for radial distribution favoring the center 8 | num x = cos(theta) * r; 9 | num z = sin(theta) * r; 10 | 11 | // Check from top downwards for valid spawn 12 | num y = 4; 13 | while (!structure(x, y, z, "plantable", "NONE")) { 14 | y = y - 1; 15 | if (y < -4) fail; 16 | } 17 | block(x, y, z, "minecraft:wheat[age=7]"); 18 | } 19 | -------------------------------------------------------------------------------- /structures/aether/vegetation/flowers/lilac.tesf: -------------------------------------------------------------------------------- 1 | block(0, 1, 0, "minecraft:lilac[half=upper]", false); 2 | block(0, 0, 0, "minecraft:lilac[half=lower]", false); 3 | -------------------------------------------------------------------------------- /structures/aether/vegetation/flowers/peony.tesf: -------------------------------------------------------------------------------- 1 | block(0, 1, 0, "minecraft:peony[half=upper]", false); 2 | block(0, 0, 0, "minecraft:peony[half=lower]", false); 3 | -------------------------------------------------------------------------------- /structures/aether/vegetation/flowers/rose_bush.tesf: -------------------------------------------------------------------------------- 1 | block(0, 1, 0, "minecraft:rose_bush[half=upper]", false); 2 | block(0, 0, 0, "minecraft:rose_bush[half=lower]", false); 3 | -------------------------------------------------------------------------------- /structures/aether/vegetation/flowers/sunflower.tesf: -------------------------------------------------------------------------------- 1 | block(0, 1, 0, "minecraft:sunflower[half=upper]", false); 2 | block(0, 0, 0, "minecraft:sunflower[half=lower]", false); 3 | -------------------------------------------------------------------------------- /structures/aether/vegetation/large_fern.tesf: -------------------------------------------------------------------------------- 1 | block(0, 1, 0, "minecraft:large_fern[half=upper]", false); 2 | block(0, 0, 0, "minecraft:large_fern[half=lower]", false); -------------------------------------------------------------------------------- /structures/aether/vegetation/place_vines.tesf: -------------------------------------------------------------------------------- 1 | setWaterlog(false); 2 | 3 | bool north = structure(0, 0, -1, "is_leaf", "NONE"); 4 | 5 | bool south = structure(0, 0, 1, "is_leaf", "NONE"); 6 | 7 | bool east = structure(1, 0, 0, "is_leaf", "NONE"); 8 | 9 | bool west = structure(-1, 0, 0, "is_leaf", "NONE"); 10 | 11 | if(!(north || south || east || west)) fail; 12 | 13 | str vine = "minecraft:vine[north=" + north + ",south=" + south + ",east=" + east + ",west=" + west + "]"; 14 | 15 | num length = randomInt(6) + 10; 16 | for (num i = 0; i < length; i = i + 1) { 17 | if (getBlock(0, -i, 0) != "minecraft:air") return; 18 | block(0, -i, 0, vine, false); 19 | } 20 | -------------------------------------------------------------------------------- /structures/aether/vegetation/plantable.tesf: -------------------------------------------------------------------------------- 1 | if (getBlock(0, 0, 0) != "minecraft:air") fail; 2 | 3 | str blockBelow = getBlock(0, -1, 0); 4 | if (blockBelow != "minecraft:grass_block" && 5 | blockBelow != "minecraft:podzol" && 6 | blockBelow != "minecraft:dirt" && 7 | blockBelow != "minecraft:coarse_dirt" && 8 | blockBelow != "minecraft:moss_block" && 9 | blockBelow != "minecraft:rooted_dirt") { 10 | fail; 11 | } -------------------------------------------------------------------------------- /structures/aether/vegetation/tall_grass.tesf: -------------------------------------------------------------------------------- 1 | block(0, 1, 0, "minecraft:tall_grass[half=upper]", false); 2 | block(0, 0, 0, "minecraft:tall_grass[half=lower]", false); -------------------------------------------------------------------------------- /structures/aether/vegetation/trees/leaves/dark_oak_leaves_clump.tesf: -------------------------------------------------------------------------------- 1 | block(0, 0, 0, "minecraft:dark_oak_leaves[distance=1,persistent=false]", false); 2 | if (randomInt(4) == 0) { 3 | block(0, 0, 1, "minecraft:dark_oak_leaves[distance=1,persistent=false]", false); 4 | block(0, 1, 0, "minecraft:dark_oak_leaves[distance=1,persistent=false]", false); 5 | block(0, 1, 1, "minecraft:dark_oak_leaves[distance=1,persistent=false]", false); 6 | block(1, 0, 0, "minecraft:dark_oak_leaves[distance=1,persistent=false]", false); 7 | block(1, 0, 1, "minecraft:dark_oak_leaves[distance=1,persistent=false]", false); 8 | block(1, 1, 0, "minecraft:dark_oak_leaves[distance=1,persistent=false]", false); 9 | block(1, 1, 1, "minecraft:dark_oak_leaves[distance=1,persistent=false]", false); 10 | } 11 | -------------------------------------------------------------------------------- /structures/aether/vegetation/trees/leaves/oak_leaves_clump.tesf: -------------------------------------------------------------------------------- 1 | block(0, 0, 0, "minecraft:oak_leaves[distance=1,persistent=false]", false); 2 | if (randomInt(4) == 0) { 3 | block(0, 0, 1, "minecraft:oak_leaves[distance=1,persistent=false]", false); 4 | block(0, 1, 0, "minecraft:oak_leaves[distance=1,persistent=false]", false); 5 | block(0, 1, 1, "minecraft:oak_leaves[distance=1,persistent=false]", false); 6 | block(1, 0, 0, "minecraft:oak_leaves[distance=1,persistent=false]", false); 7 | block(1, 0, 1, "minecraft:oak_leaves[distance=1,persistent=false]", false); 8 | block(1, 1, 0, "minecraft:oak_leaves[distance=1,persistent=false]", false); 9 | block(1, 1, 1, "minecraft:oak_leaves[distance=1,persistent=false]", false); 10 | } 11 | -------------------------------------------------------------------------------- /structures/aether/vegetation/trees/leaves/orchard_leaves_clump.tesf: -------------------------------------------------------------------------------- 1 | block(0, 0, 0, "minecraft:oak_leaves[distance=1,persistent=false]", false); 2 | 3 | if (randomInt(6) == 0) { 4 | for (num x = 0; x < 2; x = x + 1) { 5 | for (num y = 0; y < 2; y = y + 1) { 6 | for (num z = 0; z < 2; z = z + 1) { 7 | block(x, y, z, "minecraft:oak_leaves[distance=1,persistent=false]", false); 8 | } 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /structures/aether/vegetation/trees/orchard/place_apple.tesf: -------------------------------------------------------------------------------- 1 | for (num x = 0; x < 2; x = x + 1) { 2 | for (num y = 0; y < 2; y = y + 1) { 3 | for (num z = 0; z < 2; z = z + 1) { 4 | if (randomInt(50) == 0 && getBlock(x,y-1,z) == "minecraft:oak_leaves") { 5 | block(x, y, z, "minecraft:red_concrete_powder", true); 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /structures/end/buildings/crashed-end-ship/schematics/crashed_endship_sc_east.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/crashed-end-ship/schematics/crashed_endship_sc_east.schem -------------------------------------------------------------------------------- /structures/end/buildings/crashed-end-ship/schematics/crashed_endship_sc_north.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/crashed-end-ship/schematics/crashed_endship_sc_north.schem -------------------------------------------------------------------------------- /structures/end/buildings/crashed-end-ship/schematics/crashed_endship_sc_south.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/crashed-end-ship/schematics/crashed_endship_sc_south.schem -------------------------------------------------------------------------------- /structures/end/buildings/crashed-end-ship/schematics/crashed_endship_sc_west.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/crashed-end-ship/schematics/crashed_endship_sc_west.schem -------------------------------------------------------------------------------- /structures/end/buildings/end_house/schematics/end_house_sc_east.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/end_house/schematics/end_house_sc_east.schem -------------------------------------------------------------------------------- /structures/end/buildings/end_house/schematics/end_house_sc_north.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/end_house/schematics/end_house_sc_north.schem -------------------------------------------------------------------------------- /structures/end/buildings/end_house/schematics/end_house_sc_south.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/end_house/schematics/end_house_sc_south.schem -------------------------------------------------------------------------------- /structures/end/buildings/end_house/schematics/end_house_sc_west.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/end_house/schematics/end_house_sc_west.schem -------------------------------------------------------------------------------- /structures/end/buildings/end_tower/schematics/end_tower_sc_east.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/end_tower/schematics/end_tower_sc_east.schem -------------------------------------------------------------------------------- /structures/end/buildings/end_tower/schematics/end_tower_sc_north.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/end_tower/schematics/end_tower_sc_north.schem -------------------------------------------------------------------------------- /structures/end/buildings/end_tower/schematics/end_tower_sc_south.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/end_tower/schematics/end_tower_sc_south.schem -------------------------------------------------------------------------------- /structures/end/buildings/end_tower/schematics/end_tower_sc_west.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/end_tower/schematics/end_tower_sc_west.schem -------------------------------------------------------------------------------- /structures/end/buildings/endship/schematics/endship_sc_east.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/endship/schematics/endship_sc_east.schem -------------------------------------------------------------------------------- /structures/end/buildings/endship/schematics/endship_sc_north.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/endship/schematics/endship_sc_north.schem -------------------------------------------------------------------------------- /structures/end/buildings/endship/schematics/endship_sc_south.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/endship/schematics/endship_sc_south.schem -------------------------------------------------------------------------------- /structures/end/buildings/endship/schematics/endship_sc_west.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/buildings/endship/schematics/endship_sc_west.schem -------------------------------------------------------------------------------- /structures/end/buildings/shulker-ruin/parts/end_ruin_block.tesf: -------------------------------------------------------------------------------- 1 | num random = randomInt(3); 2 | 3 | str setBlock = ""; 4 | if (random == 0) { 5 | setBlock = "minecraft:end_stone_bricks"; 6 | } else if (random == 1) { 7 | setBlock = "minecraft:purpur_block"; 8 | } else if (random == 2) { 9 | setBlock = "minecraft:end_stone_brick_slab"; 10 | } else if (random == 3) { 11 | setBlock = "minecraft:purpur_slab"; 12 | } 13 | 14 | block(0,0,0,setBlock); 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /structures/end/buildings/shulker-ruin/parts/end_ruin_wall.tesf: -------------------------------------------------------------------------------- 1 | num length = 3+randomInt(5); 2 | num random = randomInt(4); 3 | str face = ""; 4 | 5 | if (getBlock(0,0,0) == "minecraft:air") fail; 6 | 7 | for (num y = 0; y < length; y = y + 1) { 8 | block(0,y,0,"minecraft:end_stone_bricks"); 9 | } 10 | 11 | random = randomInt(5); 12 | num randomFace = randomInt(4); 13 | if (randomFace == 0) { 14 | face = "north"; 15 | } else if (randomFace == 1) { 16 | face = "east"; 17 | } else if (randomFace == 2) { 18 | face = "south"; 19 | } else if (randomFace == 3) { 20 | face = "west"; 21 | } 22 | 23 | random = randomInt(4); 24 | if (random == 0) { 25 | block(0,length,0,"minecraft:end_stone_brick_stairs[facing="+face+"]"); 26 | } else if (random == 1) { 27 | block(0,length,0,"minecraft:purpur_stairs[facing="+face+"]"); 28 | } else if (random == 2) { 29 | block(0,length,0,"minecraft:purpur_slab"); 30 | } else if (random == 3) { 31 | block(0,length,0,"minecraft:end_stone_brick_slab"); 32 | } 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /structures/end/dragon-island/fountain/fountain_hill.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | 3 | num height = 25; 4 | num yTranslate = -6; 5 | num radius = 10; 6 | 7 | num dir = 0; 8 | str setBlock = ""; 9 | for(num h = 0; h <= height; h = h + 1) { 10 | for(num x = -radius; x <= radius; x = x + 1) { 11 | for(num z = -radius; z <= radius; z = z + 1) { 12 | 13 | if (pow(x,2)+pow(z,2) < pow(radius,2) && h < 13) { 14 | setBlock = "minecraft:end_stone"; 15 | block(x, h+yTranslate, z, setBlock, false); 16 | } 17 | } 18 | } 19 | if ((h % h/2 == 0) && h > 3) radius = radius/1.05; 20 | } -------------------------------------------------------------------------------- /structures/end/dragon-island/fountain/upgraded_fountain.tesf: -------------------------------------------------------------------------------- 1 | structure(0, 1, 0, "upgraded_fountain_sc", "NONE"); -------------------------------------------------------------------------------- /structures/end/dragon-island/fountain/upgraded_fountain_sc.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/dragon-island/fountain/upgraded_fountain_sc.schem -------------------------------------------------------------------------------- /structures/end/dragon-island/vex_spawner/fountain_vex_spawner.tesf: -------------------------------------------------------------------------------- 1 | num radius = 4; 2 | num yTranslate = -8; 3 | 4 | structure(0,yTranslate,0, "vex_spawner_sc", "NONE"); 5 | 6 | for (num x = -radius; x < radius; x = x + 1) { 7 | for (num y = -radius; y < radius; y = y + 1) { 8 | for (num z = -radius; z < radius; z = z + 1) { 9 | if (getBlock(x,y+yTranslate,z) == "minecraft:spawner") state(x, y+yTranslate, z,"type=VEX"); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /structures/end/dragon-island/vex_spawner/pillar_vex_spawner.tesf: -------------------------------------------------------------------------------- 1 | num radius = 4; 2 | num yTranslate = -12; 3 | 4 | structure(0,yTranslate,0, "vex_spawner_sc", "NONE"); 5 | 6 | for (num x = -radius; x < radius; x = x + 1) { 7 | for (num y = -radius; y < radius; y = y + 1) { 8 | for (num z = -radius; z < radius; z = z + 1) { 9 | if (getBlock(x,y+yTranslate,z) == "minecraft:spawner") state(x, y+yTranslate, z,"type=VEX"); 10 | 11 | if (getBlock(x,y+yTranslate,z) == "minecraft:crying_obsidian") block(x, y+yTranslate, z, "minecraft:obsidian", true); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /structures/end/dragon-island/vex_spawner/schematic/vex_spawner_sc.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/dragon-island/vex_spawner/schematic/vex_spawner_sc.schem -------------------------------------------------------------------------------- /structures/end/misc/amethyst/giant_amethyst_crystal.tesf: -------------------------------------------------------------------------------- 1 | num radius = 4+randomInt(3); 2 | num random = randomInt(3); 3 | str setBlock = "minecraft:amethyst_block"; 4 | 5 | for (num y = -30; y < 30; y = y + 1) { 6 | for (num x = -radius; x < radius; x = x + 1) { 7 | for (num z = -radius; z < radius; z = z + 1) { 8 | if ((pow(x,2)*(3+random))+(pow(y,2)/(3+random))+(pow(z,2)*(3+random)) < pow(radius,2)) { 9 | if (getBlock(x,y,z) == "minecraft:air") block(x, y, z, setBlock); 10 | } 11 | } 12 | } 13 | } 14 | 15 | for (num x = -radius; x < radius; x = x + 1) { 16 | for (num y = -radius*3; y < radius*3; y = y + 1) { 17 | for (num z = -radius; z < radius; z = z + 1) { 18 | structure(x,y,z,"amethyst_buds", "NONE"); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /structures/end/misc/apribloon/apribloon_procedural.tesf: -------------------------------------------------------------------------------- 1 | num length = 10 + randomInt(40); 2 | 3 | for (num y = 0; y < length; y = y + 1) { 4 | block(0, y, 0, "minecraft:acacia_fence", false); 5 | } 6 | structure(0, length+8, 0, "apribloon_body", "NONE"); 7 | -------------------------------------------------------------------------------- /structures/end/misc/crying_drip.tesf: -------------------------------------------------------------------------------- 1 | num length = 2 + randomInt(4); 2 | str setBlock = "minecraft:purple_concrete"; 3 | 4 | for (num y = 0; y < length; y = y + 1) { 5 | 6 | if ( (getBlock(0, -y, 0)) != "minecraft:air") fail; 7 | 8 | block( 0, -y, 0, setBlock); 9 | } -------------------------------------------------------------------------------- /structures/end/misc/end-gateways/end_gateway.schem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PolyhedralDev/ReimagEND/c6b0f3552769d60ee57efc0a8fb10351ae7da532/structures/end/misc/end-gateways/end_gateway.schem -------------------------------------------------------------------------------- /structures/end/misc/water_column.tesf: -------------------------------------------------------------------------------- 1 | num i = 0; 2 | bool foundTop = false; 3 | for (num unused = 0; i < 319; i = i + 1) { 4 | if (getBlock(0, i+1, 0) != "minecraft:air") { 5 | if (structure(0, i+1, 0, "is_rock", "NONE") && 6 | structure(0, i+1, -1, "is_rock", "NONE") && 7 | structure(1, i+1, 0, "is_rock", "NONE") && 8 | structure(-1, i+1, 0, "is_rock", "NONE") && 9 | structure(0, i+1, 1, "is_rock", "NONE") && 10 | (structure(0, i+2, 0, "is_rock", "NONE") || getBlock(0, i+2, 0) == "minecraft:air")) { 11 | block(0, i+1, 0, "minecraft:water"); 12 | foundTop = true; 13 | break; 14 | } else fail; 15 | } 16 | } 17 | if (!foundTop) fail; 18 | for (num unused = 0; i >= 0; i = i - 1) { 19 | block(0, i, 0, "minecraft:water[level=8]"); 20 | } -------------------------------------------------------------------------------- /structures/end/pillars/giant_obsidian_pillar.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | 3 | num height = 40 + randomInt(30); 4 | num yTranslate = -20; 5 | num radius = 4+randomInt(2); 6 | 7 | for(num y = yTranslate; y <= height+yTranslate; y = y + 1) { 8 | for(num x = -radius; x <= radius; x = x + 1) { 9 | for(num z = -radius; z <= radius; z = z + 1) { 10 | if (pow(x,2)+pow(z,2) < pow(radius,2)) { 11 | block(x, y, z, "minecraft:obsidian", false); 12 | } 13 | } 14 | } 15 | } 16 | 17 | if (randomInt(3) == 0) entity(0, height+yTranslate+2, 0, "minecraft:end_crystal"); -------------------------------------------------------------------------------- /structures/end/pillars/shattered_pillar_procedural.tesf: -------------------------------------------------------------------------------- 1 | num height = 7+randomInt(5); 2 | num random = randomInt(21); 3 | num r = 0.5; 4 | 5 | if (random >= 20) { 6 | r = 1.2; 7 | height = 12+randomInt(9); 8 | } else if (random >= 16) { 9 | r = 0.5; 10 | height = 7+randomInt(5); 11 | } else if (random >= 0) { 12 | r = 0.1; 13 | height = 7+randomInt(7); 14 | } 15 | 16 | for (num y = -5+randomInt(3); y <= height ; y = y + 1) { 17 | for (num x = -r; x <= r; x = x + 1) { 18 | for (num z = -r; z <= r; z = z + 1) { 19 | block(x, y, z, "minecraft:obsidian"); 20 | } 21 | } 22 | 23 | } 24 | 25 | if (randomInt(10) == 0 && r != 0.5) entity(0, height+2, 0, "minecraft:end_crystal"); 26 | 27 | -------------------------------------------------------------------------------- /structures/end/spikes/crystal-spikes/crystal_spike_cluster.tesf: -------------------------------------------------------------------------------- 1 | // obsidian spike cluster for jagged_end 2 | 3 | num spikes = 2+randomInt(3); 4 | for (num i = 0; i < spikes; i = i + 1) { 5 | structure(0,0,0,"crystal_spike","NONE"); 6 | } -------------------------------------------------------------------------------- /structures/end/spikes/crystal-spikes/crystal_spike_cluster_down.tesf: -------------------------------------------------------------------------------- 1 | // obsidian spike cluster for jagged_end 2 | 3 | num spikes = 2+randomInt(3); 4 | for (num i = 0; i < spikes; i = i + 1) { 5 | structure(0,0,0,"crystal_spike_down","NONE"); 6 | } -------------------------------------------------------------------------------- /structures/end/spikes/tipped_obsidian_spike_cluster.tesf: -------------------------------------------------------------------------------- 1 | // obsidian spike cluster for jagged_end 2 | 3 | num spikes = 3+randomInt(10); 4 | for (num i = 0; i < spikes; i = i + 1) { 5 | structure(0,0,0,"tipped_obsidian_spike","NONE"); 6 | } -------------------------------------------------------------------------------- /structures/end/tendrils/purple_tendril_up.tesf: -------------------------------------------------------------------------------- 1 | num radius = 2+randomInt(6); 2 | num length = 30+randomInt(20); 3 | num xTranslate = 0; 4 | num zTranslate = 0; 5 | str setBlock = "minecraft:purple_concrete"; 6 | for(num l = 0; l <= length; l = l + 1) { 7 | 8 | // Reduce radius inversely to length 9 | num r = (radius/length * -l) + radius; 10 | 11 | // Generate sphere at each point 12 | for(num x = -r; x <= r; x = x + 1) { 13 | for(num y = -r; y <= r; y = y + 1) { 14 | for(num z = -r; z <= r; z = z + 1) { 15 | if (pow(x,2)+pow(y,2)+pow(z,2) < pow(r,2)) { 16 | setBlock = "minecraft:purple_concrete"; 17 | if (randomInt(4) == 0) setBlock = "minecraft:purple_concrete_powder"; 18 | block(x + xTranslate, l + y - radius, z + zTranslate, setBlock, false); 19 | } 20 | } 21 | } 22 | } 23 | xTranslate = xTranslate+(1-randomInt(3)); 24 | zTranslate = zTranslate+(1-randomInt(3)); 25 | } -------------------------------------------------------------------------------- /structures/end/vegetation/bushes/pearlescent_bush.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | num radius = randomInt(randPrecision)/randPrecision*3 + 1; 3 | num radiusCeil = ceil(radius); 4 | num radiusSquared = pow(radius, 2); 5 | 6 | block(0, 0, 0, "minecraft:pearlescent_froglight"); 7 | 8 | str setBlock = ""; 9 | for(num x = -radiusCeil; x <= radiusCeil; x = x + 1) { 10 | for(num y = 0; y <= radiusCeil; y = y + 1) { 11 | for(num z = -radiusCeil; z <= radiusCeil; z = z + 1) { 12 | num distanceSquared = (pow(x,2) + pow(y*3,2) + pow(z,2)); 13 | if (distanceSquared/radiusSquared < randomInt(randPrecision)/randPrecision) { 14 | setBlock = "minecraft:white_stained_glass"; 15 | if (randomInt(4) == 0) setBlock = "minecraft:light_gray_stained_glass"; 16 | block(x, y, z, setBlock, false); 17 | } 18 | } 19 | } 20 | } 21 | 22 | block(0, 1, 0, "minecraft:white_stained_glass", false); -------------------------------------------------------------------------------- /structures/end/vegetation/bushes/stripped_acacia_bush.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | num radius = randomInt(randPrecision)/randPrecision*3 + 1; 3 | num radiusCeil = ceil(radius); 4 | num radiusSquared = pow(radius, 2); 5 | 6 | block(0, 0, 0, "minecraft:stripped_acacia_log"); 7 | 8 | for(num x = -radiusCeil; x <= radiusCeil; x = x + 1) { 9 | for(num y = 0; y <= radiusCeil; y = y + 1) { 10 | for(num z = -radiusCeil; z <= radiusCeil; z = z + 1) { 11 | num distanceSquared = (pow(x,2) + pow(y*3,2) + pow(z,2)); 12 | if (distanceSquared/radiusSquared < randomInt(randPrecision)/randPrecision) { 13 | block(x, y, z, "minecraft:acacia_leaves[distance=1,persistent=false]", false); 14 | } 15 | } 16 | } 17 | } 18 | 19 | block(0, 1, 0, "minecraft:acacia_leaves[distance=1,persistent=false]", false); -------------------------------------------------------------------------------- /structures/end/vegetation/bushes/stripped_mangrove_bush.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | num radius = randomInt(randPrecision)/randPrecision*3 + 1; 3 | num radiusCeil = ceil(radius); 4 | num radiusSquared = pow(radius, 2); 5 | 6 | block(0, 0, 0, "minecraft:stripped_mangrove_log"); 7 | 8 | for(num x = -radiusCeil; x <= radiusCeil; x = x + 1) { 9 | for(num y = 0; y <= radiusCeil; y = y + 1) { 10 | for(num z = -radiusCeil; z <= radiusCeil; z = z + 1) { 11 | num distanceSquared = (pow(x,2) + pow(y*3,2) + pow(z,2)); 12 | if (distanceSquared/radiusSquared < randomInt(randPrecision)/randPrecision) { 13 | block(x, y, z, "minecraft:mangrove_leaves[distance=1,persistent=false]", false); 14 | } 15 | } 16 | } 17 | } 18 | 19 | block(0, 1, 0, "minecraft:mangrove_leaves[distance=1,persistent=false]", false); -------------------------------------------------------------------------------- /structures/end/vegetation/bushes/warped_stem_bush.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | num radius = randomInt(randPrecision)/randPrecision*3 + 1; 3 | num radiusCeil = ceil(radius); 4 | num radiusSquared = pow(radius, 2); 5 | 6 | block(0, 0, 0, "minecraft:stripped_warped_stem"); 7 | 8 | for(num x = -radiusCeil; x <= radiusCeil; x = x + 1) { 9 | for(num y = 0; y <= radiusCeil; y = y + 1) { 10 | for(num z = -radiusCeil; z <= radiusCeil; z = z + 1) { 11 | num distanceSquared = (pow(x,2) + pow(y*3,2) + pow(z,2)); 12 | if (distanceSquared/radiusSquared < randomInt(randPrecision)/randPrecision) { 13 | block(x, y, z, "minecraft:oak_leaves[distance=1,persistent=false]", false); 14 | } 15 | } 16 | } 17 | } 18 | 19 | block(0, 1, 0, "minecraft:oak_leaves[distance=1,persistent=false]", false); -------------------------------------------------------------------------------- /structures/end/vegetation/crimson_stem_bush.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | num radius = randomInt(randPrecision)/randPrecision*3 + 1; 3 | num radiusCeil = ceil(radius); 4 | num radiusSquared = pow(radius, 2); 5 | 6 | block(0, 0, 0, "minecraft:stripped_crimson_stem"); 7 | 8 | for(num x = -radiusCeil; x <= radiusCeil; x = x + 1) { 9 | for(num y = 0; y <= radiusCeil; y = y + 1) { 10 | for(num z = -radiusCeil; z <= radiusCeil; z = z + 1) { 11 | num distanceSquared = (pow(x,2) + pow(y*3,2) + pow(z,2)); 12 | if (distanceSquared/radiusSquared < randomInt(randPrecision)/randPrecision) { 13 | block(x, y, z, "minecraft:oak_leaves[distance=1,persistent=false]", false); 14 | } 15 | } 16 | } 17 | } 18 | 19 | block(0, 1, 0, "minecraft:oak_leaves[distance=1,persistent=false]", false); -------------------------------------------------------------------------------- /structures/end/vegetation/mushrooms/blue_mushrooms/blue_mushroom_cluster.tesf: -------------------------------------------------------------------------------- 1 | num amount = 2+randomInt(3); 2 | for (num i = 0; i < amount; i = i + 1) { 3 | structure(0,0,0,"blue_mushroom","NONE"); 4 | } -------------------------------------------------------------------------------- /structures/end/vegetation/trees/burble_trees/burble_stems.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | 3 | num dx = 1; 4 | num dz = 1; 5 | 6 | num length = 4; 7 | 8 | num droop = 0.3; 9 | 10 | str setBlock = "minecraft:black_concrete"; 11 | 12 | num y = 0; 13 | for (num l = 0; l <= length; l = l + 0.5) { 14 | block(l*dx, y, dz*l, setBlock, true); 15 | 16 | block(-l*dx, y, dz*l, setBlock, true); 17 | 18 | block(l*dx, y, -dz*l, setBlock, true); 19 | 20 | block(-l*dx, y, -dz*l, setBlock, true); 21 | 22 | y = y+(l*droop); 23 | } -------------------------------------------------------------------------------- /structures/end/vegetation/trees/chorus_tree/chorus_branches/chorus_branch_east.tesf: -------------------------------------------------------------------------------- 1 | num length = 3+randomInt(6); 2 | bool allow = true; 3 | 4 | for (num y = 1; y < length; y = y + 1) { 5 | if (getBlock(0,y,0) != "minecraft:air") { 6 | allow = false; 7 | fail; 8 | } 9 | } 10 | 11 | if (allow == true) { 12 | block(0,0,0,"minecraft:chorus_plant[up=true,west=true]"); 13 | for (num y = 1; y < length; y = y + 1) { 14 | block(0,y,0,"minecraft:chorus_plant[up=true,down=true]"); 15 | } 16 | } 17 | 18 | block(0,length,0,"minecraft:chorus_flower[age=5]"); 19 | 20 | -------------------------------------------------------------------------------- /structures/end/vegetation/trees/chorus_tree/chorus_branches/chorus_branch_north.tesf: -------------------------------------------------------------------------------- 1 | num length = 3+randomInt(6); 2 | bool allow = true; 3 | 4 | for (num y = 1; y < length; y = y + 1) { 5 | if (getBlock(0,y,0) != "minecraft:air") { 6 | allow = false; 7 | fail; 8 | } 9 | } 10 | 11 | if (allow == true) { 12 | block(0,0,0,"minecraft:chorus_plant[up=true,south=true]"); 13 | for (num y = 1; y < length; y = y + 1) { 14 | block(0,y,0,"minecraft:chorus_plant[up=true,down=true]"); 15 | } 16 | } 17 | 18 | block(0,length,0,"minecraft:chorus_flower[age=5]"); 19 | 20 | -------------------------------------------------------------------------------- /structures/end/vegetation/trees/chorus_tree/chorus_branches/chorus_branch_south.tesf: -------------------------------------------------------------------------------- 1 | num length = 3+randomInt(6); 2 | bool allow = true; 3 | 4 | for (num y = 1; y < length; y = y + 1) { 5 | if (getBlock(0,y,0) != "minecraft:air") { 6 | allow = false; 7 | fail; 8 | } 9 | } 10 | 11 | if (allow == true) { 12 | block(0,0,0,"minecraft:chorus_plant[up=true,north=true]"); 13 | for (num y = 1; y < length; y = y + 1) { 14 | block(0,y,0,"minecraft:chorus_plant[up=true,down=true]"); 15 | } 16 | } 17 | 18 | block(0,length,0,"minecraft:chorus_flower[age=5]"); 19 | 20 | 21 | -------------------------------------------------------------------------------- /structures/end/vegetation/trees/chorus_tree/chorus_branches/chorus_branch_west.tesf: -------------------------------------------------------------------------------- 1 | num length = 3+randomInt(6); 2 | bool allow = true; 3 | 4 | for (num y = 1; y < length; y = y + 1) { 5 | if (getBlock(0,y,0) != "minecraft:air") { 6 | allow = false; 7 | fail; 8 | } 9 | } 10 | 11 | if (allow == true) { 12 | block(0,0,0,"minecraft:chorus_plant[up=true,east=true]"); 13 | for (num y = 1; y < length; y = y + 1) { 14 | block(0,y,0,"minecraft:chorus_plant[up=true,down=true]"); 15 | } 16 | } 17 | 18 | block(0,length,0,"minecraft:chorus_flower[age=5]"); 19 | 20 | -------------------------------------------------------------------------------- /structures/end/vegetation/trees/ivory_trees/ivory_clump.tesf: -------------------------------------------------------------------------------- 1 | str setBlock = "minecraft:white_stained_glass"; 2 | 3 | for (num x = 0; x < 1; x = x + 1) { 4 | for (num y = 0; y < 1; y = y + 1) { 5 | for (num z = 0; z < 1; z = z + 1) { 6 | 7 | setBlock = "minecraft:white_stained_glass"; 8 | if (randomInt(4) == 0) setBlock = "minecraft:pearlescent_froglight"; 9 | block(x, y, z, setBlock, false); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /structures/end/vegetation/trees/ivory_trees/ivory_vine.tesf: -------------------------------------------------------------------------------- 1 | num length = randomInt(6) + 10; 2 | 3 | if (getBlock(0,1,0) == "minecraft:air") fail; 4 | 5 | str setBlock = ""; 6 | for (num i = 0; i < length; i = i + 1) { 7 | if (getBlock(0, -i, 0) != "minecraft:air") return; 8 | setBlock = "minecraft:white_stained_glass_pane"; 9 | 10 | block(0, -i, 0, setBlock, false); 11 | 12 | if (i == (length-1)) block(0, -i, 0, "minecraft:pearlescent_froglight", true); 13 | } 14 | 15 | 16 | -------------------------------------------------------------------------------- /structures/end/vegetation/trees/magenta-coral/magenta_strand_cluster.tesf: -------------------------------------------------------------------------------- 1 | // obsidian spike cluster for jagged_end 2 | 3 | num spikes = 8+randomInt(4); 4 | for (num i = 0; i < spikes; i = i + 1) { 5 | structure(0,0,0,"magenta_strand","NONE"); 6 | } -------------------------------------------------------------------------------- /structures/end/vegetation/trees/shattered_trees/shattered_leaves_clump.tesf: -------------------------------------------------------------------------------- 1 | str leafBlock = "minecraft:purple_stained_glass"; 2 | str altLeafBlock = "minecraft:magenta_stained_glass"; 3 | str placeBlock = leafBlock; 4 | for (num x = 0; x < 1; x = x + 1) { 5 | for (num y = 0; y < 1; y = y + 1) { 6 | for (num z = 0; z < 1; z = z + 1) { 7 | placeBlock = leafBlock; 8 | if (randomInt(2) == 0) placeBlock = altLeafBlock; 9 | if (randomInt(10) == 0) placeBlock = "minecraft:light[level=15]"; 10 | block(x, y, z, placeBlock, false); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /structures/end/vegetation/trees/warped/twisting_vines.tesf: -------------------------------------------------------------------------------- 1 | num length = 2+randomInt(5); 2 | 3 | for (num y = 0; y < length; y = y + 1) { 4 | block(0, y, 0, "minecraft:twisting_vines_plant"); 5 | } 6 | 7 | block(0, length, 0, "minecraft:twisting_vines"); -------------------------------------------------------------------------------- /structures/end/vegetation/trees/warped/warped_mangrove/warped_buds.tesf: -------------------------------------------------------------------------------- 1 | if(getBlock(0, 0, 0) != "minecraft:warped_wart_block") { 2 | fail; 3 | } 4 | 5 | str setBlock = "minecraft:warped_roots"; 6 | 7 | if(getBlock(0, 1, 0) == "minecraft:air") block(0,1,0, setBlock, false); -------------------------------------------------------------------------------- /structures/end/vegetation/trees/warped/warped_mangrove/warped_wart_clump.tesf: -------------------------------------------------------------------------------- 1 | block(0, 0, 0, "minecraft:warped_wart_block", false); 2 | 3 | if (randomInt(4) == 0) { 4 | block(0, 0, 1, "minecraft:warped_wart_block", false); 5 | block(0, 1, 0, "minecraft:warped_wart_block", false); 6 | block(0, 1, 1, "minecraft:warped_wart_block", false); 7 | block(1, 0, 0, "minecraft:warped_wart_block", false); 8 | block(1, 0, 1, "minecraft:warped_wart_block", false); 9 | block(1, 1, 0, "minecraft:warped_wart_block", false); 10 | block(1, 1, 1, "minecraft:warped_wart_block", false); 11 | } 12 | 13 | -------------------------------------------------------------------------------- /structures/is_leaf.tesf: -------------------------------------------------------------------------------- 1 | str blockID = getBlock(0, 0, 0); 2 | if (blockID != "minecraft:oak_leaves" && 3 | blockID != "minecraft:birch_leaves" && 4 | blockID != "minecraft:spruce_leaves" && 5 | blockID != "minecraft:jungle_leaves" && 6 | blockID != "minecraft:acacia_leaves" && 7 | blockID != "minecraft:dark_oak_leaves" && 8 | blockID != "minecraft:mangrove_leaves") { 9 | fail; 10 | } -------------------------------------------------------------------------------- /structures/void/asteroids/asteroid_ores.tesf: -------------------------------------------------------------------------------- 1 | num blockSelection = randomInt(34); 2 | if(blockSelection <= 27) structure(0, 0, 0, "asteroid_palette", "NONE"); 3 | else if(blockSelection <= 32) block(0, 0, 0,"minecraft:deepslate_coal_ore"); 4 | else if(blockSelection <= 33) block(0, 0, 0,"minecraft:deepslate_iron_ore"); -------------------------------------------------------------------------------- /structures/void/asteroids/asteroid_palette.tesf: -------------------------------------------------------------------------------- 1 | num blockSelection = randomInt(1000)/1000; 2 | if (blockSelection <= 0.5) block(0, 0, 0,"minecraft:deepslate"); 3 | else if (blockSelection <= 0.6) block(0, 0, 0,"minecraft:basalt"); 4 | else if (blockSelection <= 0.9) block(0, 0, 0,"minecraft:smooth_basalt"); 5 | else block(0, 0, 0,"minecraft:mud"); -------------------------------------------------------------------------------- /structures/void/asteroids/icy-asteroid/icy_asteroid_palette.tesf: -------------------------------------------------------------------------------- 1 | num blockSelection = randomInt(1000)/1000; 2 | if (blockSelection <= 0.1) block(0, 0, 0,"minecraft:basalt"); 3 | else if (blockSelection <= 0.2) block(0, 0, 0,"minecraft:smooth_basalt"); 4 | else if (blockSelection <= 0.3) block(0, 0, 0,"minecraft:mud"); 5 | else if (blockSelection <= 0.4) block(0, 0, 0,"minecraft:deepslate"); 6 | else if (blockSelection <= 0.6) block(0, 0, 0,"minecraft:blue_ice"); 7 | else if (blockSelection <= 0.8) block(0, 0, 0,"minecraft:packed_ice"); 8 | else block(0, 0, 0,"minecraft:ice"); -------------------------------------------------------------------------------- /structures/void/aurora/blue_aurora_segment.tesf: -------------------------------------------------------------------------------- 1 | num length = 10+randomInt(6); 2 | num radius = 2; 3 | 4 | str setBlock = "minecraft:blue_stained_glass"; 5 | if (getBlock(0,0,0) == "minecraft:air") block(0, 0, 0, "minecraft:light[level=15]", false); 6 | if (getBlock(1, 1, 0) == "minecraft:air") block(1, 1, 0, "minecraft:light[level=15]", false); 7 | if (getBlock(0, 1, 1) == "minecraft:air") block(0, 1, 1, "minecraft:light[level=15]", false); 8 | if (getBlock(-1, 1, 0) == "minecraft:air") block(-1, 1, 0, "minecraft:light[level=15]", false); 9 | if (getBlock(0, 1, -1) == "minecraft:air") block(0, 1, -1, "minecraft:light[level=15]", false); 10 | 11 | for(num l = 0; l < length; l = l + 1) { 12 | 13 | num r = radius; 14 | 15 | block(0, l, 0, setBlock, false); 16 | } -------------------------------------------------------------------------------- /structures/void/aurora/cyan_aurora_segment.tesf: -------------------------------------------------------------------------------- 1 | num length = 10+randomInt(6); 2 | num radius = 2; 3 | 4 | str setBlock = "minecraft:cyan_stained_glass"; 5 | if (getBlock(0,0,0) == "minecraft:air") block(0, 0, 0, "minecraft:light[level=15]", false); 6 | if (getBlock(1, 1, 0) == "minecraft:air") block(1, 1, 0, "minecraft:light[level=15]", false); 7 | if (getBlock(0, 1, 1) == "minecraft:air") block(0, 1, 1, "minecraft:light[level=15]", false); 8 | if (getBlock(-1, 1, 0) == "minecraft:air") block(-1, 1, 0, "minecraft:light[level=15]", false); 9 | if (getBlock(0, 1, -1) == "minecraft:air") block(0, 1, -1, "minecraft:light[level=15]", false); 10 | 11 | for(num l = 0; l < length; l = l + 1) { 12 | 13 | num r = radius; 14 | 15 | block(0, l, 0, setBlock, false); 16 | } -------------------------------------------------------------------------------- /structures/void/aurora/green_aurora_segment.tesf: -------------------------------------------------------------------------------- 1 | num length = 10+randomInt(6); 2 | num radius = 2; 3 | 4 | str setBlock = "minecraft:green_stained_glass"; 5 | if (getBlock(0,0,0) == "minecraft:air") block(0, 0, 0, "minecraft:light[level=15]", false); 6 | if (getBlock(1, 1, 0) == "minecraft:air") block(1, 1, 0, "minecraft:light[level=15]", false); 7 | if (getBlock(0, 1, 1) == "minecraft:air") block(0, 1, 1, "minecraft:light[level=15]", false); 8 | if (getBlock(-1, 1, 0) == "minecraft:air") block(-1, 1, 0, "minecraft:light[level=15]", false); 9 | if (getBlock(0, 1, -1) == "minecraft:air") block(0, 1, -1, "minecraft:light[level=15]", false); 10 | 11 | for(num l = 0; l < length; l = l + 1) { 12 | 13 | num r = radius; 14 | 15 | block(0, l, 0, setBlock, false); 16 | } -------------------------------------------------------------------------------- /structures/void/aurora/light_blue_aurora_segment.tesf: -------------------------------------------------------------------------------- 1 | num length = 10+randomInt(6); 2 | num radius = 2; 3 | 4 | str setBlock = "minecraft:light_blue_stained_glass"; 5 | if (getBlock(0,0,0) == "minecraft:air") block(0, 0, 0, "minecraft:light[level=15]", false); 6 | if (getBlock(1, 1, 0) == "minecraft:air") block(1, 1, 0, "minecraft:light[level=15]", false); 7 | if (getBlock(0, 1, 1) == "minecraft:air") block(0, 1, 1, "minecraft:light[level=15]", false); 8 | if (getBlock(-1, 1, 0) == "minecraft:air") block(-1, 1, 0, "minecraft:light[level=15]", false); 9 | if (getBlock(0, 1, -1) == "minecraft:air") block(0, 1, -1, "minecraft:light[level=15]", false); 10 | 11 | for(num l = 0; l < length; l = l + 1) { 12 | 13 | num r = radius; 14 | 15 | block(0, l, 0, setBlock, false); 16 | } -------------------------------------------------------------------------------- /structures/void/aurora/lime_aurora_segment.tesf: -------------------------------------------------------------------------------- 1 | num length = 10+randomInt(6); 2 | num radius = 2; 3 | 4 | str setBlock = "minecraft:lime_stained_glass"; 5 | if (getBlock(0,0,0) == "minecraft:air") block(0, 0, 0, "minecraft:light[level=15]", false); 6 | if (getBlock(1, 1, 0) == "minecraft:air") block(1, 1, 0, "minecraft:light[level=15]", false); 7 | if (getBlock(0, 1, 1) == "minecraft:air") block(0, 1, 1, "minecraft:light[level=15]", false); 8 | if (getBlock(-1, 1, 0) == "minecraft:air") block(-1, 1, 0, "minecraft:light[level=15]", false); 9 | if (getBlock(0, 1, -1) == "minecraft:air") block(0, 1, -1, "minecraft:light[level=15]", false); 10 | 11 | for(num l = 0; l < length; l = l + 1) { 12 | 13 | num r = radius; 14 | 15 | block(0, l, 0, setBlock, false); 16 | } -------------------------------------------------------------------------------- /structures/void/aurora/magenta_aurora_segment.tesf: -------------------------------------------------------------------------------- 1 | num length = 10+randomInt(6); 2 | num radius = 2; 3 | 4 | str setBlock = "minecraft:magenta_stained_glass"; 5 | if (getBlock(0,0,0) == "minecraft:air") block(0, 0, 0, "minecraft:light[level=15]", false); 6 | if (getBlock(1, 1, 0) == "minecraft:air") block(1, 1, 0, "minecraft:light[level=15]", false); 7 | if (getBlock(0, 1, 1) == "minecraft:air") block(0, 1, 1, "minecraft:light[level=15]", false); 8 | if (getBlock(-1, 1, 0) == "minecraft:air") block(-1, 1, 0, "minecraft:light[level=15]", false); 9 | if (getBlock(0, 1, -1) == "minecraft:air") block(0, 1, -1, "minecraft:light[level=15]", false); 10 | 11 | for(num l = 0; l < length; l = l + 1) { 12 | 13 | num r = radius; 14 | 15 | block(0, l, 0, setBlock, false); 16 | } -------------------------------------------------------------------------------- /structures/void/aurora/pink_aurora_segment.tesf: -------------------------------------------------------------------------------- 1 | num length = 10+randomInt(6); 2 | num radius = 2; 3 | 4 | str setBlock = "minecraft:pink_stained_glass"; 5 | if (getBlock(0,0,0) == "minecraft:air") block(0, 0, 0, "minecraft:light[level=15]", false); 6 | if (getBlock(1, 1, 0) == "minecraft:air") block(1, 1, 0, "minecraft:light[level=15]", false); 7 | if (getBlock(0, 1, 1) == "minecraft:air") block(0, 1, 1, "minecraft:light[level=15]", false); 8 | if (getBlock(-1, 1, 0) == "minecraft:air") block(-1, 1, 0, "minecraft:light[level=15]", false); 9 | if (getBlock(0, 1, -1) == "minecraft:air") block(0, 1, -1, "minecraft:light[level=15]", false); 10 | 11 | for(num l = 0; l < length; l = l + 1) { 12 | 13 | num r = radius; 14 | 15 | block(0, l, 0, setBlock, false); 16 | } -------------------------------------------------------------------------------- /structures/void/aurora/purple_aurora_segment.tesf: -------------------------------------------------------------------------------- 1 | num length = 10+randomInt(6); 2 | num radius = 2; 3 | 4 | str setBlock = "minecraft:purple_stained_glass"; 5 | if (getBlock(0,0,0) == "minecraft:air") block(0, 0, 0, "minecraft:light[level=15]", false); 6 | if (getBlock(1, 1, 0) == "minecraft:air") block(1, 1, 0, "minecraft:light[level=15]", false); 7 | if (getBlock(0, 1, 1) == "minecraft:air") block(0, 1, 1, "minecraft:light[level=15]", false); 8 | if (getBlock(-1, 1, 0) == "minecraft:air") block(-1, 1, 0, "minecraft:light[level=15]", false); 9 | if (getBlock(0, 1, -1) == "minecraft:air") block(0, 1, -1, "minecraft:light[level=15]", false); 10 | 11 | for(num l = 0; l < length; l = l + 1) { 12 | 13 | num r = radius; 14 | 15 | block(0, l, 0, setBlock, false); 16 | } -------------------------------------------------------------------------------- /structures/void/aurora/red_aurora_segment.tesf: -------------------------------------------------------------------------------- 1 | num length = 10+randomInt(6); 2 | num radius = 2; 3 | 4 | str setBlock = "minecraft:red_stained_glass"; 5 | if (getBlock(0,0,0) == "minecraft:air") block(0, 0, 0, "minecraft:light[level=15]", false); 6 | if (getBlock(1, 1, 0) == "minecraft:air") block(1, 1, 0, "minecraft:light[level=15]", false); 7 | if (getBlock(0, 1, 1) == "minecraft:air") block(0, 1, 1, "minecraft:light[level=15]", false); 8 | if (getBlock(-1, 1, 0) == "minecraft:air") block(-1, 1, 0, "minecraft:light[level=15]", false); 9 | if (getBlock(0, 1, -1) == "minecraft:air") block(0, 1, -1, "minecraft:light[level=15]", false); 10 | 11 | for(num l = 0; l < length; l = l + 1) { 12 | 13 | num r = radius; 14 | 15 | block(0, l, 0, setBlock, false); 16 | } -------------------------------------------------------------------------------- /structures/void/aurora/yellow_aurora_segment.tesf: -------------------------------------------------------------------------------- 1 | num length = 10+randomInt(6); 2 | num radius = 2; 3 | 4 | str setBlock = "minecraft:yellow_stained_glass"; 5 | if (getBlock(0,0,0) == "minecraft:air") block(0, 0, 0, "minecraft:light[level=15]", false); 6 | if (getBlock(1, 1, 0) == "minecraft:air") block(1, 1, 0, "minecraft:light[level=15]", false); 7 | if (getBlock(0, 1, 1) == "minecraft:air") block(0, 1, 1, "minecraft:light[level=15]", false); 8 | if (getBlock(-1, 1, 0) == "minecraft:air") block(-1, 1, 0, "minecraft:light[level=15]", false); 9 | if (getBlock(0, 1, -1) == "minecraft:air") block(0, 1, -1, "minecraft:light[level=15]", false); 10 | 11 | for(num l = 0; l < length; l = l + 1) { 12 | 13 | num r = radius; 14 | 15 | block(0, l, 0, setBlock, false); 16 | } -------------------------------------------------------------------------------- /structures/void/galaxies/horizontal_galaxy.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | 3 | num length = 10+randomInt(10); 4 | num direction = randomInt(randPrecision)/randPrecision; 5 | str setBlock = "minecraft:white_concrete"; 6 | num random = 0; 7 | num dir = 1-randomInt(3); 8 | 9 | for (num i = 0; i < length; i = i + 0.01) { 10 | if (direction > 100) direction = 0; 11 | 12 | random = randomInt(3); 13 | if (random == 0) { 14 | setBlock = "minecraft:purple_concrete"; 15 | } else if (random == 1) { 16 | setBlock = "minecraft:magenta_concrete"; 17 | } else setBlock = "minecraft:gray_concrete"; 18 | 19 | if ((randomInt(2) == 0) && (i < 5)) { 20 | setBlock = "minecraft:pearlescent_froglight"; 21 | } 22 | 23 | if (round(direction) % (2+randomInt(2)) == 0) { 24 | block(i*cos(direction),dir*i/4,i*sin(direction),setBlock); 25 | } 26 | 27 | direction = direction + 0.1; 28 | } -------------------------------------------------------------------------------- /structures/void/galaxies/vertical_galaxy.tesf: -------------------------------------------------------------------------------- 1 | num randPrecision = 100; 2 | 3 | num length = 10+randomInt(10); 4 | num direction = randomInt(randPrecision)/randPrecision; 5 | str setBlock = "minecraft:white_concrete"; 6 | num random = 0; 7 | num dir = 1-randomInt(3); 8 | 9 | for (num i = 0; i < length; i = i + 0.01) { 10 | if (direction > 100) direction = 0; 11 | 12 | random = randomInt(3); 13 | if (random == 0) { 14 | setBlock = "minecraft:purple_concrete"; 15 | } else if (random == 1) { 16 | setBlock = "minecraft:magenta_concrete"; 17 | } else setBlock = "minecraft:gray_concrete"; 18 | 19 | if ((randomInt(2) == 0) && (i < 5)) { 20 | setBlock = "minecraft:pearlescent_froglight"; 21 | } 22 | 23 | if (round(direction) % (2+randomInt(2)) == 0) { 24 | block(dir*i/4,i*cos(direction),i*sin(direction),setBlock); 25 | } 26 | 27 | direction = direction + 0.1; 28 | } --------------------------------------------------------------------------------