Predicate Custom Models
A client side mod to enable swapping of built-in models and entity models based on conditions using a resource pack. This is not a replacement for changing item models in your inventory, that is possible using default resource packs. This is meant to build on top of the vanilla systems and add more customizations completely optional of the people on a server.
This is meant as an option for things such as changing out how your trident looks in hand or having a custom helmet model based on an NBT tag.
This is in early alpha stages with limited options, but the basic premise is here and will be expanded on.
The idea comes from Optifines custom entity models and took reference from Fabric CEM but these are not compatible. I decided to take my own model formats and write my own system to handle conditions.
How to:
- In your resource pack, make a folder for
assets/robotmonkey/cem
Inside this folder is where you will put your file that contain conditions. - Create a file inside the above folder called
entityname.rem
(eg. trident.rem) inside here you will have some conditions and the models that each condition points to. Check the example file on the GitHub - Create a folder to hold your custom models e.g.
assets/minecraft/models/custom
. You can call this folder whatever you want, as long as your conditions reference above point there. - In here add your model files. Right now there is no easy way to create these, I have been hand making them my self from exports of Blockbench models. If someone would like to help create a Blockbench plugin please reach out.
- Create a folder to hold your custom textures e.g.
assets/minecraft/textures/item
. - In the above folder add your textures that your models reference.
- Reload your resource pack and as long as the above was done correctly you should now have your custom models.
Example:
Check out this resource pack for some examples
Currently Supported
- Trident Models in Hand
- Trident Models in world (With limitations, check below)
- Iron/Gold/Diamond/Netherite helmets.
Limitations:
Currently, as far as I can tell, the NBT data of a trident is not synced to clients once it has been thrown. So, if you want to render a trident in the world differently than a normal trident there is limited conditions to change how it looks.
As an example, using the NBT tag for CustomModelData you can have multiple tridents with different models while you are holding them, but once you throw them, you have to assign a condition for the Owner being your username and have it render as a specific model if you threw it.
Compatibility
I cannot guarantee compatibility with other mods as of right now. I am trying to write this in a way such that it should not cause any issues, but any mods that change how things render might be incompatible.
If you encounter any specific issues, please open an issue on the GitHub and I will look into it.
TODO
- Add more armor pieces
- This involves making sure that each piece has their proper named groups for making them move with the body.
- Consider other entities.
- Write a plugin for Blockbench to export the models to the custom format.
- Optimize model creation
- Right now each condition creates a model. If multiple conditions reference the same model it will be built and stored multiple times.
- Having a registry of conditions based on the Identifier will allow for reference to already created models.
- Create Wiki with possible conditions to be checked and examples.
90% of ad revenue goes to creators
Support creators and Modrinth ad-free with Modrinth+