This is a mostly-unmolested forward-port of Suspicious Shapes to 1.21.1. for the most part, resource packs designed for the original will work in the updated version.
Previously, Suspicious Shapes would ignore models parented to a gltf without the key-value pair,
"loader": "suspicious_shapes:gltf"
The new version has namespaced this key to be less intrusive when loaded alongside connector and/or the upcoming fabric model loader API. Models should be updated as follows:
"suspicious_shapes:loader": "suspicious_shapes:gltf"
Sorry for the difficulty this may cause, but I promise it'll be worth the trouble with all the wild new mod interactions this makes possible.
- Port back to fabric
- Update to 1.20.4
Bugfix release
- Adds null guards around the deserialized json to make model loading more resilient.
- Adds a barebones config file to control how aggressively errors get logged (defaults to reporting number of model errors collectively).
Reworks model loading almost entirely to deal with the new model-loader-api-v1 in fabric and the sudden no-deprecation removal of v0 from dev artifacts.
The new loader:
- Grabs all its raw data ahead of time on a DataLoader worker thread - this is extremely fast, usually on the order of 300-400msec on a vanilla instance, but times are posted in the logs now.
- Builds and prunes model trees in a preparation worker thread. Typically around 400-500msec for the whole kit, this time is also posted in the log. This is when memory usage peaks, but big data structures are nulled out ASAP for the garbage collector in case things get hairy.
- Builds / provides / bakes the final model in yet another worker thread. The main speed benefit is here, that by the time the model is requested by Id, the data is already present and we don't need to touch ResourceLoader at all.
The speed boost in loading individual models comes at the expense of a moderate memory spike and some very particular setup steps. Please let me know if either of these gets out of hand.
This is a minor bugfix release.
- Fixes "uvLock" property to be "uvlock" like vanilla
Worked out a lot of the initial kinks!
- Fixed normals and shading on rotated shapes
- Now honors uvLock
- Invalid json in one model no longer destroys all models for everyone
- Lots of little cleanups everywhere
Initial release!
Late additions:
- Will not load models without the following key-value-pair on the child model: "loader": "suspicious_shapes:gltf" - this is to let other model loaders know we're here, and to avoid clobbering their models.
- Some previously-broken untextured models will now load. Faces with no textures specified will act like an "#all" up-reference, subject to change in future versions.
Known Issues
- obj+mtl loading isn't in yet, but is planned for the future. Its loader key will be "suspicious_shapes:obj".
- vertex colors aren't yet honored. This is also planned for the future.