Ratatouille
Ratatouille is a multifunctional library created by developer doctor4t for his mods and cosmetic elements for project supporters.
Main Features
Library Functions
- Rendering utilities: Include tools for working with graphics, based on solutions from Lodestone (author Sammy).
- Cosmetic customization: Universal system for customizing character appearance, originally created for support cosmetics but suitable for other cosmetic mods as well.
- Custom item sounds and particles: Ability to configure sound effects and visual particles when using items.
- First-person rendering: Tool for adding elements displayed on the player's hand in first person through implementation of the
RendersArmInFirstPersoninterface. - Armor with custom models: Simplified system for registering armor sets with unique models, eliminating the need to create model layers, feature renderers, and complex display conditions.
Additional Features
- RAT Plushies: Include characters Rat Maid, Folly and Mauve, which make sounds when interacted with and can be used with note blocks to play these sounds.
- Mob inventory: In creative mode, you can give items and armor to mobs by holding Shift and interacting with them. Hitting a mob with an empty hand in the same mode makes it drop all equipped items.
Cosmetics for Project Supporters
- For Ko-Fi or YouTube members: displays an icon next to the name and colored name.
- Plushies on head: to open the cosmetics screen, crouch and use any plush item without aiming at a block.
Gallery

Documentation
Setup (build.gradle)
repositories {
maven {
name = 'Ladysnake Mods'
url = 'https://maven.ladysnake.org/releases'
}
dependencies {
modImplementation "dev.doctor4t:ratatouille:${project.ratatouille_version}"
}
Custom Model Armor Utility
This utility allows easy registration of new armor sets with custom models using a single method call.
Step 1: Defining the Model
Before adding custom armor, you need a model that follows certain rules. The repository contains model and texture templates. Existing groups are important for correct display:
helmetdisplays when helmet is equippedbody_chestplate,right_arm_chestplateandleft_arm_chestplatedisplay when chestplate is equippedbody_leggings,right_leg_leggingsandleft_leg_leggingsdisplay when leggings are equippedright_leg_bootandleft_leg_bootdisplay when boots are equipped
After creating the model, export it through Blockbench and copy the corresponding code into a class extending CustomArmorModelDefinition.
Step 2: Registering Armor
Call CustomModelArmorUtil.registerCustomArmor in the client initializer with parameters:
Identifier id: unique armor identifierArmorDisplayConditions displayConditions: armor piece display conditionsCustomArmorModelDefinition armorModelDefinition: model definitionint textureWidth, int textureHeight: texture dimensions
Ambience Utility
This utility allows registering background sound loops and sounds associated with block entities.
Registering Background Sounds
Call AmbienceUtil.registerBackgroundAmbience with a BackgroundAmbience object containing:
SoundEvent soundEvent: sound eventSoundCategory soundCategory: sound categoryPlayPredicate predicate: playback conditionint fadeIn,int fadeOut: fade-in and fade-out time
Registering Block Entity Sounds
Call AmbienceUtil.registerBlockEntityAmbience with the block entity type and a BlockEntityAmbience object with similar parameters.