nineMinecraft is a joke site.
nineMinecraft is in no way affiliated with Modrinth or 9minecraft.
Litematica

Litematica

Mod

A client-side schematic mod with extra features for creative mode work

Client Utility

16.48M downloads
6,990 followers
Created3 years ago
Updateda day ago

Filter loader...
Filter versions...
Filter channels...
  • set MAX_THREAD_COUNT to 2 unless the calculateDefaultSafeThreadCount() says otherwise; and introduce a MIN_THREAD_COUNT
  • Add additional logic for managing thread resources; and checking for the Thread Count at start up.
  • fix: BlockTintCache to actually clean up the cache. This solves the broken Biome blending.
  • set MAX_THREAD_COUNT to 2 unless the calculateDefaultSafeThreadCount() says otherwise; and introduce a MIN_THREAD_COUNT
  • Add additional logic for managing thread resources; and checking for the Thread Count at start up.
  • add: translationMode & cleanup untranslated files
  • Remove useless "ThreadProfile" configs.
  • Set ThreadCount to 2 by default instead of 4; and via MaLiLib clamps back down on the "Max Thread Count" to what it was before.
  • By removing the "Thread Profiles"; also reverted the previous thread timings & deferred cap as 0.27.3; but with the additional critical fixes.
  • fix: Ender Dragon rendering when they cross multiple chunk boundaries.
  • fix: command-based pasting of signs by splitting the front/back text into sub 'data merge' commands.
  • fix: Item frame command-based pasting by removing the 1.20.x logic, and injecting the corrected NBT. If the NBT is too long; chop it all off except for any Custom Names / Dye Colors if possible. If not possible, only a basic item with Zero NBT.
  • add: translationMode & cleanup untranslated files
  • Remove useless "ThreadProfile" configs.
  • Set ThreadCount to 2 by default instead of 4; and via MaLiLib clamps back down on the "Max Thread Count" to what it was before.
  • By removing the "Thread Profiles"; also reverted the previous thread timings & deferred cap as 0.26.5; but with the additional critical fixes.
  • fix: Ender Dragon rendering when they cross multiple chunk boundaries.
  • fix: command-based pasting of signs by splitting the front/back text into sub 'data merge' commands.
  • fix: Item frame command-based pasting by removing the 1.20.x logic, and injecting the corrected NBT. If the NBT is too long; chop it all off except for any Custom Names / Dye Colors if possible. If not possible, only a basic item with Zero NBT.
  • Add: Option to reverse direction of operation mode change (#346)
  • Add: Keep changing layer while holding layerNext/Previous hotkeys (#347)
  • fix: adding addFreshEntitySafe() while adding new entities so other mods don't Wrap the Schematic Worlds'
  • move: FIXER task to its own class.
  • remove: any recursion from Thread tasks adding more tasks; which in turn keeps the thread alive.
  • Update PM Thread Manager; fix lots of bugs.
  • add configurable Thead Count & Thread Profile system
  • cleanup extra synchronized locks in Chunk Manager & SchematicEntityLookup
  • add: i18nManager translation options
  • fix: setToolItem() being loaded before the world is & crashing (?)
  • fix: black listed states
  • remove: extending ImposterProtoChunk (For compatibility issues with "chunk management" mods, such as C2ME)
  • remove: profiler from most of the rendering sub-systems.
  • add: own BlockColors instance into SchematicBlockModelCache instead of using whatever Sodium does to the Vanilla one.
  • fix: black listed states
  • remove: extending ImposterProtoChunk (For compatibility issues with "chunk management" mods, such as C2ME)
  • remove: profiler from most of the rendering sub-systems.
  • PM Thread Execution tick cap
  • Set PM Thread sleep time to 30 minutes
  • Cleanup entityDataStorage and isolate "entity_data_load_nbt" to bulk data requests only. Also introduce requestFromLocalServer callback mechanism for single player.
  • fix: getEntities() loop
  • remove: debugLogError (I was using this for Debug visibility)
  • add: better 'getEntities()' support in a more Vanilla friendly way; even though LM itself doesn't use these functions.
  • add: entity Hitbox rendering for the Schematic World while Entity Hitboxes are enabled;
  • add: deduplicateSchematicEntities config to enable the entity deduplication features of loading / pasting schematics.
  • new: add most Visuals configs as Boolean Hotkeys; so you can now Assign hotkeys to say; 'renderBlocksAsTranslucent'.
  • add: "IrisRenderingFix" for when Shaders are Active. Returns functionality to about the same as 1.21.11 with broken LODs.
  • fix: rendering entity hitboxes while shaders are active
  • fix: Mannequin rendering
  • add: Better Combined Inv handling

NOTE: It is getting increasingly difficult to continue supporting Iris Shaders compat mainly due to the amount of Vanilla rendering changes; and how Iris appears to be going down a "Non-Vanilla friendly" path to accomplish it's goals.

  • PM Thread Execution tick cap
  • Set PM Thread sleep time to 30 minutes
  • Cleanup entityDataStorage and isolate "entity_data_load_nbt" to bulk data requests only. Also introduce requestFromLocalServer callback mechanism for single player.
  • fix: getEntities() loop
  • remove: debugLogError (I was using this for Debug visibility)
  • add: better 'getEntities()' support in a more Vanilla friendly way; even though LM itself doesn't use these functions.
  • add: entity Hitbox rendering for the Schematic World while Entity Hitboxes are enabled;
  • add: deduplicateSchematicEntities config to enable the entity deduplication features of loading / pasting schematics.
  • new: add most Visuals configs as Boolean Hotkeys; so you can now Assign hotkeys to say; 'renderBlocksAsTranslucent'.
  • fix: Mannequin rendering
  • add: Better Combined Inv handling
  • fix: restore placementReplaceBehavior (NOT pasteReplaceBehavior) logic to WorldPlacingUtils for use with the ProtoChunk loading process.
  • apply RenderData locks; and Chunk Renderer Lock from 26.1
  • fix chunk rendering by adding a new Chunk Render Update defer system;
  • add logic for smarter targeted control when Chunk Rebuild/Unload tasks should be executed. This should help with lag, and Chunk "Tearing" due to using the Rebuild task Thread.
  • The above should also help with memory leaks caused by this.
  • 26.1.1
  • fix a few rendering issues; particularly with Render As Translucent, and timing of resource pack loading / Video settings, such as with Sodium (WIP).
  • Disable Legacy Terrain Shader RGSS code.

NOTE: As of my testing; the majority of "Texture" problems are caused by editing Minecraft's Video settings, and the Texture's aren't reloaded yet. Using renderBlocksAsTranslucent can also cause this, or simply using Sodium's Video config menu makes this harder to detect; so whenever you see "wrong" textures; use F3 + T to reload your block models so Litematica can rebuild it's Texture / Block Model cache.

  • 26.1 -- A lot needed to change in the World Rendering system, particularly concerning Buffers, Block Model fetching, Vanilla renderer compatibility, Block Model Rendering, Ambient Occlusion changes; and several Render Pipeline adjustments.

NOTE: Consider this a BETA release considering the large amount of Rendering changes.

  • fix: Placement manager thread tear downs in between dimensions (Ender Pearls, etc)
  • fix: add several places where invalid file names could be introduced.
  • Thread sleep / FIXER task reduction for allowing the thread to sleep. Placement toggles now fully unloads the chunks.
  • Cap Max PM Threads to 2.
  • Various optimizations to get the threads to sleep whenever there is no work.
  • Add Main Rendering Toggle callback for clearing out the Placement Manager Chunks and stopping the Thread; (Or Restarting it)
  • SchematicPlacement: Fix getSubRegionBoxes() not checking... the main placement enabled state. (@maruohon )
  • fix: schematic placement toJson() if somehow we lost the origin point... (?)
  • Add logic to ignore Water with Pick Block on a schematic; as requested by PearlescentMoon

NOTE: This release was in the oven for a long time to try to Beta test and tweak various PM Thread settings to reduce CPU usage. The CPU usage will still be a thing as long as the Thread has work; but it should go to sleep in less than a second after. Sleeping lasts 10 minutes max; and if it see's no tasks; it goes back to sleep.

  • Adjust Batch Drawing mixin to shift AFTER
  • Fix a few Easy Place Post Rewrite items & shenanigans
  • fix: add a fake tick delay command to command pasting so that data merge succeeds on the next tick.
  • Fix loading Sponge / Vanilla structure,etc. nbt and pos tag shenanigans.
  • fix Vanilla Structure's from 1.12 or below from loading properly with the block flattening upgrades
  • add a basic #pm pseudo command just for checking Schem World chunk stuff.
  • fix: VCS system from failing to load projects
  • add: VCS "Version Descriptions"
  • MAJOR CHANGE: Add Threaded Schematic Placement Manager system

What this system does is migrate all of the "Chunk Loading / Unloading" and maintenance tasks to being "Off-Thread" of the main game. In the past; moving your player around and with very large schematics loaded; it will lag and stutter your game. With this change; all of those operations are moved off of your Game Thread so that they happen Asynchronously from your Game Play. Note that this change DOES NOT improve rendering performance. It only greatly improves Chunk Loading performance. The MAX thread count is hard coded to 4, but the mod makes a determination based on your "Available Processors" value, and not more than 1/4 of them. So if your machine has 4 Cores and 8 Threads, it might only use 1 or 2 Threads for tasks; which is capped at using 4, even if your machine has 32 cores; so it shouldn't really tank your system's performance. Also note that in order to make this system reliable; there were also major changes "under the hood" of the Schematic World's Chunk Manager to make it more "Concurrent Friendly", and not experiencing CME's by creating a new "Proto Schematic Chunk" system where the mod fills in these Proto Chunks before swapping them into the "Live" Schematic World, and spawning entities. The Entity Spawning system was also modified and improved, along with a few Chunk Renderer VBO items to improve the reliability of marking them as needing updates; more Concurrently without crashing the game with yet again; CME problems. There is also a new "Chunk Fix" task that runs about every 5-6 seconds to compare all loaded chunks / unloaded chunks to see if they should be loaded if they are touching Placements or not. So what this means is if your Rendering experiences random "holes" due to Async problems; this task will fix it. Although note that I mentioned "problems" but a lot of my work was related to finding all of those problems and fixing them.

Shout Out: The Dungeon Master Tango from Hermitcraft has been instrumental in highlighting this structural issue in Litematica; and has been Beta testing this code the whole time for weeks as he has been building his Decked Out 3 mountain on the server. This code was developed using his schematic as a burn in test, along with a Full schematic of Decked Out 2 from bedrock to build limit.

  • EasyPlace: Fix Grindstone placements ( @mms0316 )
  • Add a "delete blocks by placement" feature and hotkey for the VCS (@maruohon)
  • fix VCS not keeping track of file extensions (@emilyavi)
  • use predefined .litematic extension (@emilyavi)
  • Pasting: Don't use special pasting or NBT restore in WE commands mode (@maruohon )
  • fix: Read Sponge without a BlockEntities tag
  • fix: Invert Inventories of Adjacent Chest Half.
  • fix: Chest Mirror inventory Fix for X Axis also.
  • Bump to modern Gradle / MaLilib 0.19.2 (For LTS purposes)
  • Lang fixes; particularly missing Chinese
  • add: placementRestrtictionWarn to Easy Place Post Re-Write
  • fixes Render Pipeline Blend modes (Inherited from MaLiLib)

External resources



Project members

sakura-ryoko

Maintainer

masa

Owner


Technical information

License
LGPL-3.0-only
Client side
required
Server side
unsupported
Project ID
Expand Down