Export a finished Blockbench model and integrate it into the Fabrica mod. Saves model and textures to correct locations and updates block/item definitions.
Take a finished model from Blockbench and integrate it into the Fabrica codebase.
Get project info from Blockbench using mcp__blockbench__risky_eval:
({ name: Project.name, format: Project.format.id })
Get texture list using mcp__blockbench__list_textures
Ask user for block/item name using :
AskUserQuestionelectric_generator → Electric_Generator)Ask if this is a new item or updating existing using AskUserQuestion:
Trigger export dialog using mcp__blockbench__trigger_action:
action: "export_blockymodel"
confirmDialog: false
Tell user to save the file:
HUMAN ACTION REQUIRED:
A save dialog should be open in Blockbench.
Save the file as: {item_name}.blockymodel
Location: Your Documents folder is fine (I'll copy it to the right place)
Reply "done" when you've saved it.
Wait for user confirmation before proceeding.
Check texture paths using mcp__blockbench__risky_eval:
Texture.all.map(t => ({ name: t.name, path: t.path, saved: t.saved }))
If textures are not saved, trigger save:
mcp__blockbench__trigger_action({ action: "save_textures", confirmDialog: false })
Then tell user:
HUMAN ACTION REQUIRED:
Save each texture when prompted.
Location: Your Documents folder is fine.
Reply "done" when all textures are saved.
Wait for user confirmation before proceeding.
Find the exported model file:
find ~/Documents -maxdepth 3 -name "*.blockymodel" -newer /tmp/skill_start -type f
Or search for the expected filename.
Create model directory:
src/main/resources/Common/Models/Blocks/{Item_Name}/
Copy model file:
cp "{source_path}" "src/main/resources/Common/Models/Blocks/{Item_Name}/model.blockymodel"
Copy texture files to src/main/resources/Common/BlockTextures/:
cp ~/Documents/{texture}.png src/main/resources/Common/BlockTextures/
If new item: Create Server/Item/Items/{Item_Name}.json:
{
"TranslationProperties": {
"Name": "server.{Item_Name}.name",
"Description": "server.{Item_Name}.description"
},
"MaxStack": 1,
"Icon": "Icons/ItemsGenerated/{Item_Name}.png",
"Categories": ["Blocks.Machines"],
"PlayerAnimationsId": "Block",
"BlockType": {
"Material": "Solid",
"DrawType": "Model",
"HitboxType": "Full",
"BlockSoundSetId": "Metal",
"ParticleColor": "#4a4a4a"
}
}
If updating existing: Change DrawType from "Cube" to "Model" and remove Textures array.
Add translation to Server/Languages/en-US/server.lang:
{Item_Name}.name = {Display Name}
{Item_Name}.description = {Description}
List created/modified files:
src/main/resources/
├── Common/
│ ├── Models/Blocks/{Item_Name}/
│ │ └── model.blockymodel
│ └── BlockTextures/
│ └── {textures}.png
└── Server/
└── Item/Items/{Item_Name}.json
Report success with:
/deploy-plugin to build and test"| Source | Destination |
|---|---|
my_model.blockymodel | Common/Models/Blocks/My_Model/model.blockymodel |
steel.png | Common/BlockTextures/steel.png |
| Project name | Converted to Title_Case for item name |
DrawType: "Model" is setBlockTextures/