Technical Changelog - Apollounknowndev/lithostitched GitHub Wiki
1.5.0 (Beta 5)
Last big new batch of features for 1.5!
New Features
- Added a folder for surface rules. They can be placed in
lithostitched/surface_rule. - Added a
referencesurface rule type. It accepts a surface rule set, meaning tags are supported. - Added four new surface rule conditions.
- Added
all_ofandany_ofconditions for easy checking of multiple conditions at once. - Added
biomecondition, a more configurable version of vanilla'sbiomecondition that accepts a single biome or biome tag on top of a list. - Added
slopecondition, a more configurable version of vanilla'ssteepcondition.
- Added
Changes
- The
dungeon_invalid_blocksfield indungeonfeatures now accepts a single block or list of blocks instead of exclusively tags. - In all places that accept an inclusive range of ints (e.g.
64,[64,96],{"min_inclusive":64,"max_inclusive":96}), the object version can omitmin_inclusiveormax_inclusiveto have an unbound min/max value. This impacts the following:allowed_countinmultiple_ofblock predicateallowed_countingridplacement conditionallowed_countinmultiple_ofplacement conditionpermitted_rangeinheight_filterplacement conditionallowed_depthindelegatingpool elementheight_differencein newslopesurface condition
Fixes
- Fixed a small parity discrepancy between vanilla and modded bandlands in the
wrappedband type
1.5.0 (Beta 4)
New Features
- Added processor lists for end cities, igloos, nether fossils, ruined portals, and woodland mansions.
Changes
- Finished the structure template injection system. It is now possible to inject new pieces into shipwrecks, nether fossils, and woodland mansions.
Fixes
add_surface_rulemodifiers now respect thepriorityfield.
1.5.0 (Beta 2)
New Features
- Added a system for creating custom bandlands like the vanilla Badlands biomes. A wiki page on these is coming soon™️.
- Added an experimental system for injecting new structure templates into structures that use hardcoded structure template lists. Currently this only applies for Ruined Portals. A wiki page on these is coming soon™️.
- Added
in_structureblock predicate, checking for if there's structure(s) within a given radius of the current position.
Changes
- A handful of changes to Lithostitched jigsaw structures.
- Added optional boolean field
fixed_rotation. If set totrue, the structure will not randomly rotate when placed. - Increased the max
sizevalue to 128. - Backported the 1.21.9 changes to
max_distance_from_center. The field can now be an object with separatehorizontalandverticalvalues.
- Added optional boolean field
- Several additions to the
delegatingpool element type.name: An optional resource location. When calculating the number of a pool element placed in a structure, elements with thenamefield will count as the same element.allow_bounding_box_collisions: An optional boolean. When true, the element can place even if it would collide with other elements in the structure. Handle with care!other_pieces_can_intersect: An optional boolean. When true, other elements can place even if they would collide with this element.
- Added a
priorityfield to all modifier types. Modifiers are now applied in ascending order of priority instead of by the internal modifier phase system. - Added a
placement_typefield to thestack_featuremodifier, allowing you to set the placement type for the feature stack. - Improved the generation speed of Lithostitched's jigsaw structure using optimizations from Structure Layout Optimizer.
1.4.9
New Features
- Added the
sample_noise_routerplacement condition, identical tosample_densityexcept thedensity_functiondensity function field is replaced with atargetnoise router target field.
1.4.8
Changes
- Moved the
Template pool fallback chain found:warning behind alog_debug_messagesconfig option.
1.4.7
Changes
- Added an optional
conditionfield to thedelegatingpool element type, allowing placement conditions to be used on individual pool elements.
1.4.5
Fixes
- Fixed a crash when using the
set_structure_spawn_conditionmodifier on Trial Chambers.
1.4.4
Fixes
- Fixed several issues with the
replace_effectsworldgen modifier.
1.4.2
New Features
- Added the
delegatingpool element type. It holds all functionality of theguaranteedandlimitedpool element types with some additional functionality such as piece-based terrain adaption. This does not replace the other pool element types!
Fixes
- Fixed the
limitedpool element being prioritized in placement similar to theguaranteedpool element. - Fixed tags in the
apply_randomprocessor type not validating.
1.4
New Features
- Added
gridplacement/structure condition for applying multiple structure conditions over an area in a grid pattern. See the placement condition page for details. - Added
conditionplacement modifier which allows placement modifiers to be conditionally placed based on structure condition(s). - Added
noise_slopeplacement modifier as a more configurable version of the vanillanoise_based_countplacement modifier.
Changes
- Removed the old format of using singular target names (e.g.
structure,template_poolfrom most worldgen modifiers. This was deprecated in 1.3.9 last month for removal in 1.4. - Added optional
anchorfield topositionprocessor condition. Possible fields arestructure_startfor current/vanilla behavior andpiecefor piece-relative position checks. - Renamed structure conditions to placement conditions internally.
Fixes
- Fixed non-Lithostitched template pool injection not being applied correctly.
- Fix processor lists functioning incorrectly with the
apply_randomprocessor.
1.3.10
Fixes
- Fixed the
conditionprocessor not matching input blocks correctly when the block has already been processed.
1.3.9
First version on 1.21.4! 1.21.2 support has been dropped.
New Features
- Added
block_stateblock predicate type. It takes apropertiesfield, which is a block state predicate. - Added
offsetplacement modifier type as a more configurable version of vanilla'srandom_offset. It takes anx_offset,y_offsetandz_offsetinteger provider field. These fields can be omitted for an offset of 0 on that axis. Offsets on the x/z axis are clamped from -16 to 16, y axis is unclamped.
Changes
- Renamed the
remove_structures_from_structure_setworldgen modifier toremove_structure_set_entriesfor consistency. - Changed the syntax of most worldgen modifiers slightly.
Fields for the target element to be modified (e.g. the template_pool field in the add_template_pool_elements modifier) are now plural and are sets, meaning they can also take lists of elements or a #-prefixed element tag.
Old syntax:
{
"type": "lithostitched:add_template_pool_elements",
"template_pool": "minecraft:trial_chambers/decor",
"elements": []
}
New syntax:
{
"type": "lithostitched:add_template_pool_elements",
"template_pools": [ // This can still be a single element, the list is an example
"minecraft:trial_chambers/decor"
"example:some_other_pool"
],
"elements": []
}
This applies to:
base_featureinstack_featurestructure_setinadd_structure_set_entriesandremove_structure_set_entriesstructureinset_pool_aliasesandset_structure_spawn_conditiontemplate_poolinadd_template_pool_elementsandset_pool_element_processorsprocessor_listinadd_processor_list_processors
The old format is currently still supported! Support for the old format will be removed upon the release of Lithostitched v1.4 in January 2025.
1.3.8
New Features
- Added
schedule_tickprocessor, which will schedule block and fluid ticking.
Changes
- Made the
random_modefield in theconditionprocessor optional.
Fixes
- Fixed the
referenceprocessor not working. - Fixed a rare chunk saving error/crash that could occur with jigsaw structures which was amplified when using C2ME.
1.3.7
Changes
- Added the
min_depthfield to thelimitedpool element type. - Made the
match_typefield in thematching_blocksprocessor condition default toinput. - Structures using the
lithostitched:jigsawstructure type use the chained template pool fallback system even ifbreaks_seed_parityis disabled.
Fixes
- Fixed the
min_depthfield inguaranteedpool elements not working. - Fixed the
block_entity_modifierinset_blockprocessor not working correctly in some cases. - Fixed 1.20 modifier predicates not working.
1.3.5
Lots of new features and changes this release!
New Features
Because there is so many new features, the changelog won't include format details. Please see the respective wiki pages for details.
-
Configured Feature Types
- Added
compositefor stacking multiple placed features in the same place. - Added
selectfor selecting a placed feature to place based on a block predicate. - Added
weighted_selectoras a more convenient version of vanilla'srandom_selector. - Added
large_dripstoneas a more configurable version of vanilla'slarge_dripstone. - Added
oreas a more configurable version of vanilla'sore. - Added
vinesas a more configurable version of vanilla'svines.
- Added
-
Block Predicate Types
- Added
multiple_offor checking if a certain number or range of numbers of block predicates pass. - Added
random_chanceto pass a certain percentage of the time
- Added
-
Block State Provider Types
- Added
random_blockfor placing a random block from a block set (block, list of blocks,#-prefixed tag of blocks) - Added
weightedas a version of vanilla'sweighted_state_providerwith entries being state providers rather than block states.
- Added
-
Structure Condition Types
- Added
multiple_offor checking if a certain number or range of numbers of structure conditions pass.
- Added
-
Structure Processor Types
- Added
conditionas a more powerful, configurable and readable version of several vanilla processors.- The
conditionprocessors checks processor conditions and if they pass, a processor will run. See the [processor condition] page for details.
- The
- Added
discard_input, which discards the structure template's block and uses the one in the world already. Built for use with theconditionprocessor. - Added
set_block, which sets the block to a new block. Built for use with theconditionprocessor.
- Added
-
Worldgen Modifier Types
- Replaced
redirect_featurewithstack_feature, which lets you stack multiple features onto an existing configured feature. - Added
set_pool_element_processorsfor setting structure processors onto template pool entries directly. - Added
set_structure_spawn_conditionfor setting/adding a spawn condition onto an existing structure.
- Replaced
Changes
-
The vanilla jigsaw structure type now uses Lithostitched's jigsaw structure system.
- This means all vanilla jigsaw structures and the vast majority of modded ones will support guaranteed/limited pool elements and generate faster.
- The optimizations come at the loss of some seed parity, jigsaw structure layouts without Lithostitched will be different from with it. (The location of structures is unaffected.)
- Disable
breaks_seed_parityin the config to maintain seed parity.
- Disable
-
Modified the
height_filterstructure condition.- Added a
range_typefield which can beabsolute(old behavior) orheightmap_relative. - Replaced
min_inclusiveandmax_inclusivewithpermitted_range, which is an int range (64,[64,96],{"min_inclusive":64,"max_inclusive":96}).
- Added a
-
Removed the
matching_blocksrule test. Use theconditionprocessor as a replacement.
Fixes
- Fixed an issue with density function wrapping that would cause some world's worldgen to break down if closed and reopened multiple times.
- Fixed
lithostitched:jigsawstructure generation being fully random rather than seed-based random. - Fixed the
referenceprocessor not being able to modify blocks multiple times. - Fixed
set_pool_aliasesmodifiers not working consistently on Trial Chambers.
Non-Mod Changes
- Updated the generator site for all the new changes.
- Added a placed feature generator to the site.
1.3.4
Additions
- Added the ability to customize shipwreck wood types using a processor list tag.
Non-Mod Changes
- Updated the wiki with a new Guides section for guides on features like custom shipwreck palettes and custom trial chambers mobs.
1.3.3 (1.20.1 only)
Changes
- Fixed modifier predicates. If a modifier predicate doesn't pass, the entire modifier won't be registered.
- Massive internal refactoring to
Modifierto align it with the 1.21 version.
1.3.1b (1.20.1 only)
Fixes
- Fixed the
delegatingstructure type not working.
Non-Mod Changes
- Updated the Lithostitched generator site to enforce inlining a delegate structure in the
delegatingstructure type, as references weren't allowed.
1.3.1a
Changes
- Added a
dimensionfield to thewrap_noise_routermodifier type, being an id for a dimension. The dimension referenced doesn't have to exist.
1.3.1
Additions
- Added the
wrap_density_functionandwrap_noise_routerworldgen modifier types, allowing for density function injection.- Both have a
priorityfield, being an int representing the priority the modifier takes in wrapping around density functions/noise router entries. These modifiers are applied in ascending priority order (low -> high values). Defaults to 1000. - Both have a
wrapper_functionfield, being a density function to wrap around the target. wrap_density_functionhas atarget_functionfield, being a density function reference to wrap.wrap_noise_routerhas atargetfield, being a noise router field to wrap.
- Both have a
- Added two density function types for use in the previously mentioned modifier types:
wrapped_markerandoriginal_marker. Both can only be used in density functions referenced by the density function injection modifiers and will crash the game if attempted to be computed regularly.wrapped_markeris a marker for the current wrapped density function. For example, the following worldgen modifier will multiply temperature by 2:
{
"type": "lithostitched:wrap_noise_router",
"target": "temperature",
"wrapper_function": {
"type": "minecraft:mul",
"argument1": 2,
"argument2": {
"type": "lithostitched:wrapped_marker"
}
}
}
original_markeris a marker to get the original density function without other mod/datapack's wrappings around it.
Non-Mod Changes
- Updated the Lithostitched generator site with new worldgen modifier and density function types, adding a density function generator as well.
1.3.0
Additions
- Brought the 1.20.1 version up to speed with the 1.21 version. They will be the two main supported versions for the foreseeable future.
- Added processor list injection with the
add_processor_list_processorsworldgen modifier type. - Added the ability to place structure nbt files as features with the
structure_templatefeature type. - Added the
matching_blocksrule test type, making functionality such as random tag matches possible. - Added an optional
heightmapfield to theheight_filterstructure condition. - Removed the
apply_with_chancepool alias type.
Non-Mod Changes
- Fully restructured the wiki to be easier to navigate.
- Added a technical changelog (that's where you are right now!).
- Created a modified version of misode.github.io with full Lithostitched support. View it here!