Entity Model Geometry JSON Reference
A single misplaced comma or an unquoted property in your Minecraft model’s JSON file can render your meticulously crafted creature completely invisible, a frustrating reality for many aspiring modders and resource pack creators. This seemingly small detail underscores the precision required when working with Minecraft’s Entity Model Geometry JSON, the blueprint for how entities visually manifest in the game world. This powerful system allows for custom models in both Bedrock Edition and via Forge mods in Java Edition, offering unparalleled creative freedom.
Understanding Entity Model Geometry JSON
At its core, the Entity Model Geometry JSON defines the visual shape, or “geometry,” of an entity. These files, typically named with a `.geo.json` extension in Bedrock Edition or as specified JSON files for Forge, provide the structural data that the game engine uses to draw your custom creatures, items, or blocks. Without a correctly defined geometry, an entity simply won’t appear, or will appear incorrectly.
![]()
The Foundational Structure
Every geometry JSON file begins with a format_version, which dictates the JSON schema the file adheres to, ensuring compatibility with specific game versions. Following this, Bedrock Edition files typically contain a minecraft:geometry array. Within this array, a crucial description object houses vital metadata for the model. This includes an identifier, a unique name that links the geometry to other game assets, and the texture_width and texture_height, which define the dimensions of the texture sheet used for the model. Visible bounds information, though not explicitly detailed in the research notes, is also part of this description, helping the game determine how to render and cull the entity efficiently.
Building Blocks: Bones and Cubes
The visual structure of any complex entity model in Minecraft is fundamentally built upon two interconnected elements: bones and cubes. These form the ‘skeleton’ and ‘flesh’ of your digital creation.
- Bones: The Entity’s Skeleton
The “bones” structure is the animating backbone of any model. Each bone acts as a hierarchical node, allowing parts of the entity to move and rotate relative to each other. A bone is defined by itsname, which must be unique within the model. It can optionally have aparent, establishing a parent-child relationship where a child bone’s movement is relative to its parent. Thepivotpoint is critical, defining the exact coordinates around which the bone (and any cubes or child bones attached to it) will rotate and scale. Crucially, bones can containcubes, linking the visual elements to the skeletal structure. - Cubes: The Visual Components
Cubes are the fundamental visual building blocks of the model. They are simple cuboid shapes defined by theirorigin(their starting X, Y, Z coordinates), theirsize(their width, height, and depth), and theirUV mapping. UV mapping specifies how a 2D texture image is wrapped around the 3D cube, giving it its visual appearance. By combining many cubes and attaching them to bones, intricate and detailed models can be constructed.
Platform-Specific Implementations
While the core concepts of bones and cubes remain consistent, the way geometry JSON is integrated differs between Bedrock and Java Editions.
- Bedrock Edition Integration
For Bedrock Edition, the geometry JSON files (.geo.json) are just one piece of the puzzle. To bring an entity to life, you need a Client Entity File (.entity.json). This file acts as a central hub, linking the geometry to other visual assets such as textures, materials (which define how light interacts with the model), animations, and render controllers. Theminecraft:client_entitysection within this file uses the geometry’sidentifierto point to the specific shape data, effectively telling the game “use this shape with these textures and animations.” - Forge Modding in Java Edition
Forge modding for Java Edition offers its own JSON-based modeling system. A specific Forge mod enables defining entity models and animations entirely in JSON. This is particularly powerful as it allows developers to override vanilla and other modded entity models client-side, providing extensive customization possibilities. Forge’s native JSON models primarily support cuboid elements, making them conceptually similar to Bedrock’s cube-based approach, though the JSON structure and integration methods differ. Notably, to facilitate this, a specialized Blockbench plugin (javaentitymodeljson_models.js) is often used.
The Model Creation Workflow
Creating custom entity models, while involving complex JSON, is significantly streamlined by modern tools. Here’s a general process:
- Preparation with Blockbench: Begin by installing a 3D modeling tool like Blockbench. This industry-standard software is invaluable for creating Minecraft models. For Forge models, ensure the
javaentitymodeljson_models.jsplugin is installed in Blockbench. This plugin provides crucial import/export capabilities specific to Forge’s JSON format. - Model Creation or Conversion: You can either create a new entity model from scratch within Blockbench, meticulously adding bones and cubes, or convert an existing model. Blockbench supports “File > Convert Project > Java Entity Model JSON” to adapt models for different formats.
- Exporting the Model: Once your model is complete, export it from Blockbench in the appropriate JSON format. For Forge, this would be “Export Java Entity Model JSON.” Blockbench handles the intricate JSON structure generation, saving you from manual coding.
- File Placement: The location of your exported JSON files is critical for the game to find them.
- Bedrock Edition: Geometry JSON files (
.geo.json) must be placed in theRP/models/entityfolder within your resource pack. The corresponding client entity file (.entity.json) that references this geometry then resides in theRP/entityfolder. - Forge (Java Edition): Model JSON files for Forge are typically placed within your mod’s resources folder, specifically in
resources/assets//models/entity/. Thepart should be replaced with your mod’s unique identifier.
- Bedrock Edition: Geometry JSON files (
- Referencing the Geometry: In Bedrock Edition, the
minecraft:client_entitysection of your.entity.jsonfile is where you establish the link. It uses the model’sidentifier(defined in the geometry JSON’s description) to point to the correct geometry file and also defines other visual resources like textures, materials, and animations.
Essential Tips for Modelers
Navigating the nuances of entity modeling can be challenging, but these tips can smooth your journey:
- Utilize Blockbench: This cannot be stressed enough. Blockbench automates the creation of complex JSON structures, significantly reducing the need for manual JSON editing and minimizing syntax errors.
- JSON Validation: Always validate your JSON files. Use an online JSON validator to catch syntax errors like missing commas, extra trailing commas, or unquoted properties before you even put them in the game.
- Version Compatibility: Ensure that the model’s export version from Blockbench matches the Minecraft version you are targeting. Keeping Blockbench updated often helps with this, as newer versions typically support the latest game formats.
- Consistent Naming: Use identical names for your model file, its internal identifier (in the JSON), and associated textures. Inconsistencies are a common source of “invisible entity” bugs.
- Correct Folder Structure: Adhere strictly to the required folder structures for resource packs (
RP/entityandRP/models/entity) and behavior packs (BP/entities). Even a slight deviation will prevent assets from loading. - Reference Vanilla Models: When creating custom models, examine exported vanilla entity models. This provides invaluable insight into the expected JSON format, structure, and best practices for various entity types.
Troubleshooting Common Mistakes
Even with the best tools and practices, issues can arise. Here are frequent pitfalls:
- Syntax Errors: The most common culprit. Minor errors such as missing commas, extra trailing commas (especially at the end of lists or objects), or incorrect quotation marks will cause the entire JSON file to fail parsing.
- Incorrect Folder Naming: Misnaming resource or behavior pack folders (e.g., “entity” instead of “entities” or vice-versa where required) will prevent your assets from being found by the game.
- Mismatched Identifiers: The identifier used to reference the model in different JSON files (e.g., in the client entity file, behavior file, or spawn egg definition) must be an exact, case-sensitive match.
- Invalid Resource Paths: Incorrect file paths specified for textures, materials, or animations will result in invisible entities or entities with missing textures/animations.
- Wrong Export Version: Exporting a model with a Blockbench version that doesn’t align with your target Minecraft version can lead to display issues or outright model failure.
- Incorrect Blockbench Workspace: Using the wrong Blockbench workspace (e.g., “Java Block/Item” instead of “Modded Entity” for Java, or “Bedrock Model” for Bedrock) can generate incompatible JSON.
- Deeply Nested Sub-folders: For some entity model types, having too many sub-folders within the model’s asset structure can, surprisingly, cause crashes or rendering problems. Keep paths as flat as reasonably possible.
- Case Sensitivity (Forge): In Forge, file paths and identifiers are often case-sensitive. Incorrect casing will prevent files from being found, even if the spelling is otherwise correct.
Mastering the Entity Model Geometry JSON is a rewarding endeavor for anyone looking to personalize their Minecraft experience. By understanding its structure, leveraging tools like Blockbench, and meticulously avoiding common errors, you can bring an endless array of custom creatures and objects into your blocky worlds.