Getting Started
Requirements
Start with Choose Your Workflow if you have not selected an authoring route. Complete that route, then return for the shared environment setup.
- Minecraft 1.21.1, the matching NeoForge build, and GWO.
- Blender (the template uses 3.3) or Blockbench, depending on your route; both are not required.
- Arm templates: choose a workflow and download.
- A UTF-8 JSON editor, a PNG editor, and an OGG Vorbis encoder.
- The GWO empty content-pack template, which uses the current directory format and contains no legacy compatibility content.
GWO uses .glb for models, .anim.glb for animation libraries, .png for textures and icons, .ogg for sounds, and .json for behavior/render definitions. Use lowercase ASCII letters, digits, and underscores in resource paths.
Versions with the format update also accept Bedrock entity cube .geo.json models, numeric .animation.json animation, and Blender Empty rigid GLBs. Blockbench can author the Bedrock workflow. Check Bedrock and Empty Animation for build requirements, supported features, and configuration examples.
Pack location
Place development folders or distributable ZIP files in:
.minecraft/gwo/Keep a valid pack.mcmeta during development. GWO can generate basic metadata as a safety fallback when a folder pack is missing it, but it cannot modify a ZIP. A release ZIP must therefore contain pack.mcmeta, weapons, bullets, and assets directly at its root; do not wrap them in another directory.
Recommended layout
example_pack/
├─ pack.mcmeta
├─ weapons/
│ ├─ firearms/
│ │ ├─ example_rifle.json
│ │ └─ render/example_rifle.render.json
│ └─ melee/
├─ attachments/
│ ├─ barrels/ magazines/ sights/ stocks/
│ └─ render/
├─ bullets/example_ammo.json
└─ assets/example/
├─ gltf/
│ ├─ animations/example_rifle_receiver_default.anim.glb
│ ├─ arms/arms.glb
│ ├─ guns/example_rifle/
│ ├─ attachments/
│ └─ bullets/
├─ skins/
├─ textures/item/
├─ models/item/
├─ lang/zh_cn.json
├─ lang/en_us.json
├─ sounds/
└─ sounds.jsonDefault receiver, barrel, magazine, grip, and stock models belong under gltf/guns/<weapon_id>/. Reusable optional parts belong under gltf/attachments/.
Metadata and resource IDs
{
"pack": {
"pack_format": 48,
"supported_formats": [34, 48],
"description": "Example GWO Content Pack"
}
}example:gltf/guns/example_rifle/model.glb maps to assets/example/gltf/guns/example_rifle/model.glb. Paths such as the render field are relative to the pack root.
Recommended production order
- Create folders and
pack.mcmeta. - Export the receiver and a minimal animation library.
- Define ammunition, weapon behavior, and render configuration.
- Test spawn, orientation, firing, and reload.
- Split and attach default parts.
- Add ADS, sprint, empty-state, inspect, melee, and sound events.
- Add optional attachments, optics, lasers, and charms.
- Finish third person, item frames, modification UI, dropped items, and icons.
- Validate the folder build, then create a ZIP for distribution.
Configuration examples
These examples use the same fields as the Chinese reference. Replace resource IDs, timings, and model-specific nodes with your own. json blocks are JSON objects; jsonc blocks are fragments to merge, not standalone pack files. Valid JSON alone does not make a complete working weapon.
Pack metadata
{
"pack": {
"pack_format": 48,
"supported_formats": [34, 48],
"description": "Example GWO Content Pack"
}
}Example resource IDs (fragment)
"id": "example:example_rifle",
"gltf_model": "example:gltf/guns/example_rifle/example_rifle_receiver_default.glb",
"texture": "example:skins/guns/example_rifle.png"Render file path (fragment)
"render": "weapons/firearms/render/example_rifle.render.json"