Attempts to optimize the generation of Jigsaw Structures and NBT pieces
Optimizes general Jigsaw structure generation as best I can. Essentially this mod aims to not change how structures look at all. It only works to try and make structures generate faster and more efficiently. That's it.
Here are the more technical details of the optimizations done. Please report any conflicts or issues that is discovered when running this mod in your modpacks!
Replaces VertexShape unoptimized calls with a BoxOctree to make pieces only check nearby pieces for intersections instead of entire structure.
By default, vanilla uses a VoxelShape to store the bounds of pieces it is assembling for the structure layout. When it goes to add a new piece, it needs to see if it will fit into the layout without intersection any other pieces.
The issue is VoxelShape is not good for this purpose as when checking if a VoxelShape intersects another VoxelShape, ALL the vertices are compared. In Jigsaw structures with lots and lots of pieces, this intersection check slows down greatly the more valid pieces are added to the layout. Can cause a lag spike when generating high number of pieces for recursive Jigsaw structures.
The optimization here replaces the normal VoxelShape with a dummy VoxelShape that holds a BoxOctree implementation inside in order to pass around the BoxOctree to where it needs to be. This BoxOctree, when checking for intersections, will check only the nearby pieces to the incoming bounding box. Thus preventing the runaway growth in intersection checking time as it'll ignore the majority of pieces as they are too far away to matter for the check.
Check if a Jigsaw Block is blocked off entirely to know when to skip checking child rigid pieces.
In vanilla, every single Jigsaw Block in the parent piece will check every single Jigsaw Block in a child piece to know when to attempt to connect the two pieces. The issue is if the parent piece's Jigsaw Block is facing the edge of the structure boundary OR is facing another separate piece, then that Jigsaw Block has no room to ever spawn a rigid structure piece. Therefore, we can tell the game to skip checking this rigid child piece and check the next piece instead. This saves us from doing lots of expensive Jigsaw Block match up checks. Especially in structures that have a huge number of Jigsaw Blocks.
Replaces Jigsaw target/facing match up with a slightly more optimized version.
Reduces the number of block properties grabbing by half. Vanilla calls getValue twice for each JigsawBlock to get top and front values from the same property when it could just grab it once and get all values it needs. Slightly improved the speed of getting the joints, targets, and name string values from the Jigsaw Blocks's NBT as well.
Also simplify joint data checking to not need to be converted to an Enum with byName (not performant) and reordering checks to reduce amount of logic that needs to run often.
This will help with Jigsaw structures that have a very high amount of Jigsaw Blocks in them as each Jigsaw Block runs through this matching code for all Jigsaw Blocks in the other structure pieces.
Made any giant structure NBT that has no finalizeProcessing StructureProcessor now load much faster.
When a NBT structure piece goes to generate in a chunk, the ENTIRE NBT piece is loaded into memory, and then iterated over all the positions multiple times for StructureProcessors to apply and then later ignores all the positions outside the currently generating chunk. This is not very efficient (really wasteful) and causes large load times for giant NBT files.
This mod's optimization works by doing the bounds check early to strip out all positions that we don't need before passing it to the StructureProcessors. However, any StructureProcessor that overrides finalizeProcessing method could require all the NBT positions to function correctly so this optimization is disabled for any pieces with these kinds of StructureProcessors which will be very few structures. In vanilla, only Trail Ruins will not get this optimization due to its use of the Capped StructureProcessor that overrides finalizeProcessing method.
(1.21.1+) Replaced the Jigsaw Block list shuffling and prioritization logic in SinglePoolElement with a slightly faster version.
Main benefit is slightly faster selection_priority data grabbing from NBT by using a new method that grabs the entry once instead of twice. Vanilla does it twice to check the data type first before returning the value. A bit odd and wasteful.
Also tried a new sorting system for the prioritization, but only helps the few structures that actually makes use of selection_priority like Trials Chamber. Overall, this is probably the weakest optimization but it does quite a bit of help for Jigsaw structures that has an absolutely ridiculous amount of Jigsaw Blocks. So it is worth keeping this optimization.
Might break parity with vanilla seeds in regard to what order the Jigsaw Block are ran in, but I could not find evidence of this yet.
Skip running logic for SinglePoolElements we already checked and could not spawn at the current spot.
So this optimization comes from the fact that vanilla StructureTemplatePool holds a list of all the SinglePoolElements with duplicates of the elements based on their weight value. So if in a Template Pool, you specify weight 100 for a house, that house will be put into this list 100 times! And when generating the layout, the game will make a copy of this list, shuffle it, and iterate over the list to try and spawn the first piece it finds that fits. This means it will rerun the checking logic for duplicate entries in this list even if it was found to not fit before at the spot. The optimization I do is skip the logic for pieces we already checked before and continue to the next piece in the list. This gives a nice performance boost for structures that uses a lot of high weight values in their Template Pools.
Furthermore, you can turn on the deduplicateShuffledTemplatePoolElementList config option to get even more performance out of high weight elements in Template Pools. The issue is this config comes at a cost of changing the layout of the structure. The layout is still valid and good. It would just be different than if the config option is kept off. Basically it breaks seed parity for structure layouts specifically to get that extra performance boost.
*To be clear, seed parity is every time you use the seed 777 and there is a village at a spot with 2 blacksmith houses, every time you use that same seed, that village will remain at that spot with the two blacksmith houses. With this optimization config turned on and same seed, that village will still be at same spot. But it may have 1 blacksmith house this time. And every time you use the same seed with this config on, the village will continue to generate with the 1 blacksmith house. The layout is seed stable. But just no longer is the same as if the config is turned off.
(1.21.4 with v1.1.0+): Swap StructureTemplate$Palette's list of StructureBlockInfo objects to be a palette of StructureBlockInfo objects instead for reduced memory usage when not generating that cached StructureTemplate.
This optimization is a modified form from contaria's Glacier mod for 1.16.1. Special thanks to them for allowing me to use their code as a basis for this optimization!
Essentially in vanilla, every time a structure nbt file is loaded, it is converted to a StructureTemplate object and cached. Buried in that object is a list of ALL the positions from that nbt file paired with the blocks and nbt tag at each position. This is the biggest memory hog for StructureTemplate objects. What this mod will do is swap this list with a special palette data structure object under the hood that pretends to be a list. The memory size of the palette is significantly smaller than the list! Then when queried for worldgen, it will construct the list again as a WeakReference so worldgen remains fast and works properly. And when worldgen is done, this list will get garbage collected to free up memory again, allowing each StructureTemplate to only use the full amount of memory they need when doing worldgen but stay cached in a smaller form long term. The downside is this list cannot and should not be modified with add, remove, clear calls and will throw and exception if done. Luckily, I do not think any mod is modifying this list itself on StructureTemplate directly but if they do, please let me know.
ModernFix does have a mixin that will make the StructureTemplate objects themselves be a SoftReference and be removed completely from memory when the game gets full on memory. This is a valid solution and aims to stop the memory leak of loading structure nbts into a cache that never clears in long term gameplay. The downside of this is that the piece has to be loaded directly from the file again if it was cleared from memory. This mixin will work just fine alongside my mod's optimization. What will probably happen is my mod make StructureTemplate smaller in memory which allows ModernFix to keep more StructureTemplates in memory without them getting fully removed from memory. Which should allow more cache hits over long term. In theory.
Unsupported
Required
Умови використання, зміни та поширення цього товару.
17.06.2026 · Modrinth
Fixed crash at world load
Скриншоти та зображення з оригінальної сторінки Modrinth.
Автор проєкту не додав галерею на Modrinth.
Опубліковані версії та оригінальні файли Modrinth.
17.06.2026 · 368 завантаження
Fixed crash at world load
25.03.2026 · 4 901 завантаження
Updated to 26.1
25.03.2026 · 330 530 завантаження
Updated to 26.1
09.01.2026 · 2 450 завантаження
Fixed rare mixin crash due to using wrong list import
09.01.2026 · 149 568 завантаження
Fixed rare mixin crash due to using wrong list import
09.01.2026 · 231 завантаження
Fixed rare mixin crash due to using wrong list import
09.01.2026 · 8 237 завантаження
Fixed rare mixin crash due to using wrong list import
09.01.2026 · 403 завантаження
Fixed rare mixin crash due to using wrong list import
09.01.2026 · 3 799 завантаження
Fixed rare mixin crash due to using wrong list import
09.01.2026 · 129 завантаження
Fixed rare mixin crash due to using wrong list import
09.01.2026 · 1 296 завантаження
Fixed rare mixin crash due to using wrong list import
09.01.2026 · 327 завантаження
Fixed rare mixin crash due to using wrong list import
09.01.2026 · 3 363 завантаження
Fixed rare mixin crash due to using wrong list import
09.01.2026 · 617 313 завантаження
Fixed rare mixin crash due to using wrong list import
09.01.2026 · 49 887 завантаження
Fixed rare mixin crash due to using wrong list import
10.12.2025 · 1 230 завантаження
Updated to 1.21.11
10.12.2025 · 12 865 завантаження
Updated to 1.21.11
22.10.2025 · 431 завантаження
Fixed classload crash when using Compact Machine's room preview
22.10.2025 · 23 894 завантаження
Fixed classload crash when using Compact Machine's room preview
22.10.2025 · 169 завантаження
Fixed classload crash when using Compact Machine's room preview
22.10.2025 · 2 807 завантаження
Fixed classload crash when using Compact Machine's room preview
22.10.2025 · 91 завантаження
Fixed classload crash when using Compact Machine's room preview
22.10.2025 · 2 515 завантаження
Fixed classload crash when using Compact Machine's room preview
22.10.2025 · 125 завантаження
Fixed classload crash when using Compact Machine's room preview
22.10.2025 · 905 завантаження
Fixed classload crash when using Compact Machine's room preview
22.10.2025 · 21 091 завантаження
Fixed classload crash when using Compact Machine's room preview
22.10.2025 · 30 303 завантаження
Fixed classload crash when using Compact Machine's room preview
22.10.2025 · 809 108 завантаження
Fixed classload crash when using Compact Machine's room preview
22.10.2025 · 429 837 завантаження
Fixed classload crash when using Compact Machine's room preview
04.10.2025 · 2 490 завантаження
Fixed crash in 1.21.9 Fabric
17.06.2025 · 767 завантаження
Ported to 1.21.6
17.06.2025 · 54 317 завантаження
Ported to 1.21.6
27.03.2025 · 731 завантаження
Ported to 1.21.5
27.03.2025 · 24 162 завантаження
Ported to 1.21.5
28.01.2025 · 1 513 завантаження
Fixed bug in last memory optimization where I made a field static that reeeeeeally should not be static.
Added in a paletted version of the StructureBlockInfo list to reduce memory usage in vanilla's StructureTemplate. Care was given to try and make this compatible with other mods but more testing is needed. Marking as beta for now. Special thanks to contaria's Glacier mod for the original form of this optimization. See mod description for more info.
28.01.2025 · 13 773 завантаження
Fixed bug in last memory optimization where I made a field static that reeeeeeally should not be static.
Added in a paletted version of the StructureBlockInfo list to reduce memory usage in vanilla's StructureTemplate. Care was given to try and make this compatible with other mods but more testing is needed. Marking as beta for now. Special thanks to contaria's Glacier mod for the original form of this optimization. See mod description for more info.
26.01.2025 · 116 завантаження
Fixed bug where structure layout can be different than in vanilla. Was accidentally calling an random number generator a second time.
26.01.2025 · 801 завантаження
Fixed bug where structure layout can be different than in vanilla. Was accidentally calling an random number generator a second time.
26.01.2025 · 257 797 завантаження
Fixed bug where structure layout can be different than in vanilla. Was accidentally calling an random number generator a second time.
26.01.2025 · 263 040 завантаження
Fixed bug where structure layout can be different than in vanilla. Was accidentally calling an random number generator a second time.
26.01.2025 · 537 348 завантаження
Fixed bug where structure layout can be different than in vanilla. Was accidentally calling an random number generator a second time.
26.01.2025 · 1 308 613 завантаження
Fixed bug where structure layout can be different than in vanilla. Was accidentally calling an random number generator a second time.
26.01.2025 · 795 завантаження
Fixed bug where structure layout can be different than in vanilla. Was accidentally calling an random number generator a second time.
26.01.2025 · 304 113 завантаження
Fixed bug where structure layout can be different than in vanilla. Was accidentally calling an random number generator a second time.
26.01.2025 · 573 завантаження
Fixed bug where structure layout can be different than in vanilla. Was accidentally calling an random number generator a second time.
26.01.2025 · 10 117 завантаження
Fixed bug where structure layout can be different than in vanilla. Was accidentally calling an random number generator a second time.
26.01.2025 · 2 230 завантаження
Fixed bug where structure layout can be different than in vanilla. Was accidentally calling an random number generator a second time.
26.01.2025 · 3 594 завантаження
Fixed bug where structure layout can be different than in vanilla. Was accidentally calling an random number generator a second time.
26.01.2025 · 408 завантаження
Backported to 1.16.1 for speedrunners
26.01.2025 · 161 завантаження
Backported to 1.16.1 for speedrunners
01.01.2025 · 181 завантаження
FORGE: Fixed jar file's mixin's not being remapped properly
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
01.01.2025 · 80 завантаження
FORGE: Fixed jar file's mixin remap not being built correctly.
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
01.01.2025 · 305 завантаження
FORGE: Fixed jar file's mixin remap not being built correctly.
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
31.12.2024 · 108 669 завантаження
FORGE: Put back the requirement for 47.3.12 or newer Forge because I am using a feature from 47.3.12 Forge. This will now provide the better and more clear error message when using outdated Forge
FORGE: Upload the remapped jar. My bad in the conversion to Legacy ModDevGradle
FORGE: Fixed Forge jar not working due to ForgeGradle being broken junk. Switched to Legacy ModDevGradle and now the Forge jar is created properly.
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
30.12.2024 · 205 завантаження
FORGE: Upload the remapped jar. My bad in the conversion to Legacy ModDevGradle
FORGE: Fixed Forge jar not working due to ForgeGradle being broken junk. Switched to Legacy ModDevGradle and now the Forge jar is created properly.
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
30.12.2024 · 88 завантаження
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
30.12.2024 · 655 завантаження
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
30.12.2024 · 1 244 завантаження
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
30.12.2024 · 1 209 завантаження
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
30.12.2024 · 1 703 завантаження
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
30.12.2024 · 50 завантаження
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
30.12.2024 · 64 завантаження
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
30.12.2024 · 39 завантаження
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
30.12.2024 · 64 завантаження
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
30.12.2024 · 40 завантаження
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
30.12.2024 · 79 завантаження
Added a new optimization to skip checking child rigid pieces if the parent Jigsaw Block is entirely blocked off. This is because there is no room to spawn any piece so all rigid children will fail the check. Thus making it safe for us to do this optimization and save us from doing expensive Jigsaw Block match up checks in structures that have excessive amounts of Jigsaw Blocks.
Fixed a rare and obscure bug with this mod where a structure piece might not place blocks in all chunks it intersects because the piece had no blocks to place in one of those chunks. Now it should always place all of its blocks correctly.
27.12.2024 · 44 завантаження
Added thread safety to the processor optimizations, so it works better with C2ME. (PR'ed by ishland)
Fixed crash when a mod's structure piece has all of their jigsaws with a selection priorities greater than 1.
27.12.2024 · 143 завантаження
Added thread safety to the processor optimizations, so it works better with C2ME. (PR'ed by ishland)
Fixed crash when a mod's structure piece has all of their jigsaws with a selection priorities greater than 1.
27.12.2024 · 91 завантаження
Added thread safety to the processor optimizations, so it works better with C2ME. (PR'ed by ishland)
Fixed crash when a mod's structure piece has all of their jigsaws with a selection priorities greater than 1.
27.12.2024 · 125 завантаження
Added thread safety to the processor optimizations, so it works better with C2ME. (PR'ed by ishland)
Fixed crash when a mod's structure piece has all of their jigsaws with a selection priorities greater than 1.
27.12.2024 · 373 завантаження
Added thread safety to the processor optimizations, so it works better with C2ME. (PR'ed by ishland)
27.12.2024 · 128 завантаження
Added thread safety to the processor optimizations, so it works better with C2ME. (PR'ed by ishland)
27.12.2024 · 52 завантаження
10.12.2024 · 2 351 завантаження
Fixed fabric crash
09.12.2024 · 71 завантаження
Added optimization for high weight template pools. Also comes with a deduplicateShuffledTemplatePoolElementList option you can set to true for a bit more performance at the cost of losing vanilla seed parity with structure layouts.
15.11.2024 · 3 999 завантаження
Special thanks to UpcraftLP for backporting this mod!
15.11.2024 · 105 769 завантаження
Special thanks to UpcraftLP for backporting this mod!
15.11.2024 · 1 413 298 завантаження
Special thanks to UpcraftLP for backporting this mod!
15.11.2024 · 65 завантаження
Special thanks to UpcraftLP for backporting this mod!
15.11.2024 · 72 013 завантаження
Special thanks to UpcraftLP for backporting this mod!
15.11.2024 · 79 завантаження
Special thanks to UpcraftLP for backporting this mod!
15.11.2024 · 60 завантаження
Special thanks to UpcraftLP for backporting this mod!
15.11.2024 · 99 завантаження
Special thanks to UpcraftLP for backporting this mod!
15.11.2024 · 170 завантаження
Special thanks to UpcraftLP for backporting this mod!
13.09.2024 · 4 046 завантаження
Added optimization for high weight template pools. Also comes with a deduplicateShuffledTemplatePoolElementList option you can set to true for a bit more performance at the cost of losing vanilla seed parity with structure layouts.
21.08.2024 · 843 завантаження
Fixed a big dumb dumb I did where I forgot to add the structure's starting piece into the BoxOctree which caused weird intersecting pieces with the starting piece and different layouts for structures. Now layout should be back to normal.
20.08.2024 · 102 завантаження
initial release