Mods
Resource Packs
Data Packs
Modpacks
Shaders
Plugins
Mods Resource Packs Data Packs Plugins Shaders Modpacks
Get Modrinth App Upgrade to Modrinth+
Sign in
ModsPluginsData PacksShadersResource PacksModpacks
Sign in
Settings
Suspicious Shapes

Suspicious Shapes

Use glTF models in resource packs and mods!

2,654
16
Decoration
Library
Utility
AboutGalleryChangelogVersions

glTF models for everything

Using frapi (the fabric-rendering API), this mod intercepts requests for block models, and if they refer to glTF files, provides them as static models that get baked into the chunk geometry as normal. Entirely clientside, this mod can be used to power "cursed" resource packs that replace existing blocks with non-cuboid shapes that vanilla can't make.

It can also be used as an "included" mod to power non-cuboid blocks in your mods.

The Details

The easiest way to create a compatible model is in Blockbench.

  • From the app, select "New -> Low Poly / Generic Model" and hit the "Create new model" button.
  • Any identifier, UV mode, or other settings are fine.
  • When you're satisfied with your model, hit "File -> Export -> Export glTF Model".
  • Blockbench ignores most of these settings, and the defaults are perfectly fine.
  • Find the file you exported and put it where you would normally put a json blockmodel (e.g. assets/minecraft/models/block)
  • make a child model which refers to the gltf model as a parent, with a root key-value pair of "loader": "suspicious_shapes:gltf". You can fill-in texture references and set color indices here too.
  • Edit the text of the glTF model to replace the texture's data URL with a texture reference.

The last part there is the hard part. In the file you'll see something like,

"images":[{"mimeType":"image/png","uri":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVQ4y6WTMQrCQBBFt0xtk0YQL+QR0mpnYyk5QbDObTc84YVB0NnFgSGTyf7/5w+bUpJ4LMdaeuI6jzWC5/Vcm0kAAyAleE6Hd00vkn8Fq0oCJv32up9yEg6REPGEQDLemyYR6DS3y7ATp3tQTTCEWqH3U50DcQccRl0b9lKSuAvV0wXG+AQyRTOYiDughkB76bXVgiDr5gkEeYEAu8iuf0L/WiD/Iii94diZ+gZo3N9oOnqLFAAAAABJRU5ErkJggg=="}]

This is a base-64 encoded image of the texture you used. Since block models can't use random textures that aren't in the atlas, we'll have to fix that. Replace each of the unreadable strings marked "uri" with a minecraft texture reference, like this

"images":[{"mimeType":"image/png","uri":"minecraft:blocks/stone"}]

Or, if you're making several models with this shape, you can use it as a parent with a texture up-reference like normal:

"images":[{"mimeType":"image/png","uri":"#all"}]

Your child model can look something like this:

{
  "parent": "minecraft:block/sphere_all.gltf",
  "loader": "suspicious_shapes:gltf",
  "textures": {
    "all": "minecraft:block/acacia_leaves"
  },
  "colorIndexes": [ 0 ]
}

And that's it! Load up minecraft or reload resource packs and you should see your model!

90% of ad revenue goes to creators

Support creators and Modrinth ad-free with Modrinth+

Compatibility

Minecraft: Java Edition

1.21.1
1.20.4
1.20–1.20.1

Platforms

Fabric
Quilt

Supported environments

Client-side

Links

Report issues View source Join Discord server

Creators

falkreon
falkreon Owner

Details

Licensed MIT
Published last year
Updated 3 months ago

Modrinth is open source.

main@fafd47f

© Rinth, Inc.

Company

TermsPrivacyRulesCareers

Resources

SupportBlogDocsStatus

Interact

Discord X (Twitter) Mastodon Crowdin
Get Modrinth App Settings
NOT AN OFFICIAL MINECRAFT SERVICE. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.