A Forge addon for Automobility — expanding vehicles with custom frames, wheels, multi-seat support, and datapack-driven content.
- Overview
- Features
- Dependencies
- Built-in Content
- Installation
- Data-Driven Guide
- Example Pack
- Notes for Pack Authors
RIAutomobility is a Forge addon for Automobility on Minecraft 1.20.1. It extends the base mod with new vehicle components and powerful customization tools for both players and content creators.
Whether you want to drive new vehicles out of the box or design your own through datapacks and resource packs, RIAutomobility has you covered.
- New Vehicle Components — Multiple custom frames and wheels built on top of Automobility
- Multi-Seat Vehicles — Custom seat layouts for larger or special vehicles
- Custom Hitboxes & Camera — Fine-tuned collision and camera definitions for RIA vehicles
- Organized Creative Tabs — Built-in and datapack components are neatly separated:
RIAutomobility— built-in frames and wheelsRIAutomobility: Custom— datapack-defined components
- Datapack Support — Define custom
FrameandWheelcomponents via JSON - Dual Rendering Pipelines — Supports both
JsonEMbaked models andGeckoLibanimated models - Safe Fallbacks — Missing resources render as a placeholder with tooltip warnings instead of crashing
| Mod | Version |
|---|---|
| Minecraft | 1.20.1 |
| Forge | 47.1.x |
| Automobility | 0.4.2+1.20.1-forge |
| GeckoLib | 4.x |
The mod ships with a variety of pre-made vehicles and components:
Double Motorcars
- Wooden, Copper, Steel, Golden, Bejeweled
Quad Motorcars
- Wooden, Copper, Steel, Golden, Bejeweled
Special Vehicles
- Lorry (with container support)
- DMC12
- Standard Formula
Wheels
- Matching custom wheels for DMC12 and Standard Formula
- Install Forge for Minecraft 1.20.1
- Download and install Automobility and GeckoLib
- Place
RIAutomobility.jarin yourmods/folder - Launch the game
- Place your datapack in the world's
datapacks/folder - Place your resource pack in Minecraft's
resourcepacks/folder - Enable the resource pack in-game
- Enter the world and run
/reloadif needed
Tip: Datapack changes can be hot-reloaded using
/reload— no need to restart the game. Resource pack changes may require rejoining the world or pressingF3 + T.
Custom components are split into two parts:
| Part | Purpose |
|---|---|
| Datapack | Gameplay definition (stats, dimensions, seats, hitboxes, model references) |
| Resource Pack | Model, texture, and animation assets |
data/<namespace>/riautomobility/frames/<id>.json
data/<namespace>/riautomobility/wheels/<id>.json
Optional Automobility recipes:
data/automobility/recipes/frame/<recipe>.json
data/automobility/recipes/wheel/<recipe>.json
JsonEM models:
assets/<namespace>/models/entity/automobile/frame/<name>/main.json
assets/<namespace>/models/entity/automobile/wheel/<name>/main.json
GeckoLib models:
assets/<namespace>/geo/...
assets/<namespace>/animations/...
assets/<namespace>/textures/...
Translations:
assets/<namespace>/lang/en_us.json
assets/<namespace>/lang/zh_cn.json
Example frame definition:
{
"weight": 0.85,
"model": {
"type": "jsonem",
"texture": "examplepack:textures/entity/automobile/frame/example_buggy.png",
"model_id": "examplepack:frame_example_buggy",
"layer_location": "examplepack:automobile/frame/example_buggy",
"render_type": "entity_cutout",
"rotation_y": 0.0
},
"wheel_base": {
"forward_separation": 44.0,
"side_separation": 26.0
},
"length_px": 44.0,
"seat_height": 4.0,
"engine_pos_back": 14.0,
"engine_pos_up": 3.0,
"rear_attachment_pos": 18.0,
"front_attachment_pos": 18.0,
"dimensions": {
"width": 1.75,
"height": 0.95
},
"seats": [
{ "x": 0.35, "y": 0.0, "z": 0.05 },
{ "x": -0.35, "y": 0.0, "z": 0.05 }
],
"camera_positions": [
{ "x": -3.0, "y": 0.5, "z": 0.0 }
],
"hitboxes": [
{ "x": 0.0, "y": 0.0, "z": 0.65, "width": 1.65, "height": 0.95, "container": false }
],
"front_attachment_enabled": false,
"rear_attachment_enabled": false,
"show_in_creative_tab": true
}Field Reference:
| Field | Description |
|---|---|
weight |
Frame weight |
model |
Rendering definition (see Model Types) |
wheel_base |
Wheel layout (symmetric or per-wheel) |
length_px |
Frame render length in pixels |
seat_height |
Base seat height in pixels |
engine_pos_back / engine_pos_up |
Engine position on Z / Y axis in pixels |
rear_attachment_pos / front_attachment_pos |
Attachment anchor positions in pixels |
dimensions.width / dimensions.height |
Entity dimensions in blocks |
seats |
Seat positions in block coordinates |
camera_positions |
Camera offsets in block coordinates |
hitboxes |
Custom hitbox definitions |
front_attachment_enabled / rear_attachment_enabled |
Allow attachments |
show_in_creative_tab |
Show in the RIA creative tab |
Wheel Base Formats:
Simple symmetric layout:
"wheel_base": {
"forward_separation": 44.0,
"side_separation": 26.0
}Custom per-wheel layout:
"wheel_base": {
"wheels": [
{ "forward": 22.0, "right": -13.0, "scale": 1.0, "yaw": 0.0, "end": "front", "side": "left" },
{ "forward": -22.0, "right": -13.0, "scale": 1.0, "yaw": 0.0, "end": "back", "side": "left" },
{ "forward": 22.0, "right": 13.0, "scale": 1.0, "yaw": 180.0, "end": "front", "side": "right" },
{ "forward": -22.0, "right": 13.0, "scale": 1.0, "yaw": 180.0, "end": "back", "side": "right" }
]
}Example wheel definition:
{
"size": 0.78,
"grip": 0.62,
"radius": 5.0,
"width": 3.5,
"model": {
"type": "jsonem",
"texture": "examplepack:textures/entity/automobile/wheel/example_buggy.png",
"model_id": "examplepack:wheel_example_buggy",
"layer_location": "examplepack:automobile/wheel/example_buggy",
"render_type": "entity_cutout",
"rotation_y": -90.0
},
"show_in_creative_tab": true
}Field Reference:
| Field | Description |
|---|---|
size |
Wheel size (Automobility logic) |
grip |
Grip value |
radius / width |
Model dimensions in pixels |
model |
Rendering definition |
show_in_creative_tab |
Show in the RIA creative tab |
JsonEM — Baked JSON entity model:
"model": {
"type": "jsonem",
"texture": "examplepack:textures/entity/automobile/frame/example_buggy.png",
"model_id": "examplepack:frame_example_buggy",
"layer_location": "examplepack:automobile/frame/example_buggy",
"render_type": "entity_cutout",
"rotation_y": 0.0
}render_type:entity_cutout|entity_cutout_no_cull|entity_translucent|entity_translucent_cull|entity_solid
GeckoLib — Animated geo model:
"model": {
"type": "geckolib",
"texture": "examplepack:textures/entity/automobile/frame/example_buggy.png",
"model_id": "examplepack:frame_example_buggy_gecko",
"geo_model": "examplepack:geo/frame/example_buggy.geo.json",
"animation": "examplepack:animations/example_buggy.animation.json"
}{
"type": "automobility:auto_mechanic_table",
"category": "automobility:frames",
"sortnum": 200,
"ingredients": [
{ "item": "automobility:automobile_frame", "component": "automobility:standard_red" },
{ "item": "minecraft:iron_ingot" }
],
"result": {
"item": "automobility:automobile_frame",
"component": "examplepack:example_buggy"
}
}A complete minimal example is included in this repository:
It contains:
- A
JsonEMframe and wheel example - A
GeckoLibframe and wheel example - Matching recipes, translations, and resource-pack model files
- Datapacks can define components without resource packs, but they will render as placeholders.
- Missing-resource placeholders use a barrier texture for easy identification.
JsonEMcomponents need validassets/<namespace>/models/entity/.../main.jsonfiles.GeckoLibcomponents need validgeo,animation, and texture resources.- Tooltips warn the player when the required resource pack is missing.
- Custom models apply automatically after joining the world — no
F3 + Tneeded.
RIAutomobility 是一个基于 Minecraft 1.20.1 Forge 的 Automobility 附属模组。它在 Automobility 的基础上扩展了新的车辆组件,并为玩家和内容创作者提供了强大的自定义工具。
无论你是想直接使用内置新车,还是通过数据包和资源包设计自己的载具,RIAutomobility 都能满足你的需求。
- 全新车辆部件 — 为 Automobility 添加了多种自定义车架和车轮
- 多座位载具 — 为大型或特殊车型提供自定义座位布局
- 自定义碰撞箱与摄像机 — 为 RIA 车辆提供精细调整的碰撞箱和摄像机定义
- 分类创造标签页 — 内置组件与数据包组件分类管理:
飞天奇匠— 内置车架与车轮飞天奇匠:自定义— 数据包定义的组件
- 数据包支持 — 通过 JSON 定义自定义
Frame/Wheel - 双渲染管线 — 同时支持
JsonEM烘焙模型和GeckoLib动画模型 - 安全降级 — 资源缺失时使用占位模型并提示,不会导致崩溃
| 模组 | 版本 |
|---|---|
| Minecraft | 1.20.1 |
| Forge | 47.1.x |
| Automobility | 0.4.2+1.20.1-forge |
| GeckoLib | 4.x |
模组内置了多种预制车辆和部件:
双座汽车系列
- 木质、铜质、钢质、黄金、璀璨
四座汽车系列
- 木质、铜质、钢质、黄金、璀璨
特殊车辆
- 大运(带集装箱支持)
- DMC12
- 标准方程式
车轮
- DMC12 和标准方程式专用车轮
- 安装适用于 Minecraft 1.20.1 的 Forge
- 下载并安装 Automobility 和 GeckoLib
- 将
RIAutomobility.jar放入mods/文件夹 - 启动游戏
- 将数据包放入存档的
datapacks/文件夹 - 将资源包放入 Minecraft 的
resourcepacks/文件夹 - 在游戏中启用资源包
- 进入存档,如需可执行
/reload
提示: 数据包改动可以使用
/reload进行热重载,无需重启游戏。资源包改动可能需要重新进入世界或按F3 + T刷新。
自定义车辆组件分为两部分:
| 部分 | 作用 |
|---|---|
| 数据包 | 玩法定义(数值、尺寸、座位、碰撞箱、模型引用) |
| 资源包 | 模型、贴图、动画资源 |
data/<命名空间>/riautomobility/frames/<id>.json
data/<命名空间>/riautomobility/wheels/<id>.json
可选的 Automobility 配方:
data/automobility/recipes/frame/<配方>.json
data/automobility/recipes/wheel/<配方>.json
JsonEM 模型:
assets/<命名空间>/models/entity/automobile/frame/<名称>/main.json
assets/<命名空间>/models/entity/automobile/wheel/<名称>/main.json
GeckoLib 模型:
assets/<命名空间>/geo/...
assets/<命名空间>/animations/...
assets/<命名空间>/textures/...
翻译文件:
assets/<命名空间>/lang/en_us.json
assets/<命名空间>/lang/zh_cn.json
车架定义示例:
{
"weight": 0.85,
"model": {
"type": "jsonem",
"texture": "examplepack:textures/entity/automobile/frame/example_buggy.png",
"model_id": "examplepack:frame_example_buggy",
"layer_location": "examplepack:automobile/frame/example_buggy",
"render_type": "entity_cutout",
"rotation_y": 0.0
},
"wheel_base": {
"forward_separation": 44.0,
"side_separation": 26.0
},
"length_px": 44.0,
"seat_height": 4.0,
"engine_pos_back": 14.0,
"engine_pos_up": 3.0,
"rear_attachment_pos": 18.0,
"front_attachment_pos": 18.0,
"dimensions": {
"width": 1.75,
"height": 0.95
},
"seats": [
{ "x": 0.35, "y": 0.0, "z": 0.05 },
{ "x": -0.35, "y": 0.0, "z": 0.05 }
],
"camera_positions": [
{ "x": -3.0, "y": 0.5, "z": 0.0 }
],
"hitboxes": [
{ "x": 0.0, "y": 0.0, "z": 0.65, "width": 1.65, "height": 0.95, "container": false }
],
"front_attachment_enabled": false,
"rear_attachment_enabled": false,
"show_in_creative_tab": true
}字段说明:
| 字段 | 说明 |
|---|---|
weight |
车架重量 |
model |
渲染定义(详见 模型类型) |
wheel_base |
轮组布局(对称简写或逐轮定义) |
length_px |
渲染长度,单位像素 |
seat_height |
座位基准高度,单位像素 |
engine_pos_back / engine_pos_up |
引擎在 Z / Y 轴位置,单位像素 |
rear_attachment_pos / front_attachment_pos |
挂载锚点位置,单位像素 |
dimensions.width / dimensions.height |
实体尺寸,单位方块 |
seats |
座位坐标,单位方块 |
camera_positions |
摄像机偏移,单位方块 |
hitboxes |
自定义碰撞箱定义 |
front_attachment_enabled / rear_attachment_enabled |
是否允许挂件 |
show_in_creative_tab |
是否在 RIA 创造标签页显示 |
wheel_base 写法:
对称简写:
"wheel_base": {
"forward_separation": 44.0,
"side_separation": 26.0
}逐轮自定义:
"wheel_base": {
"wheels": [
{ "forward": 22.0, "right": -13.0, "scale": 1.0, "yaw": 0.0, "end": "front", "side": "left" },
{ "forward": -22.0, "right": -13.0, "scale": 1.0, "yaw": 0.0, "end": "back", "side": "left" },
{ "forward": 22.0, "right": 13.0, "scale": 1.0, "yaw": 180.0, "end": "front", "side": "right" },
{ "forward": -22.0, "right": 13.0, "scale": 1.0, "yaw": 180.0, "end": "back", "side": "right" }
]
}车轮定义示例:
{
"size": 0.78,
"grip": 0.62,
"radius": 5.0,
"width": 3.5,
"model": {
"type": "jsonem",
"texture": "examplepack:textures/entity/automobile/wheel/example_buggy.png",
"model_id": "examplepack:wheel_example_buggy",
"layer_location": "examplepack:automobile/wheel/example_buggy",
"render_type": "entity_cutout",
"rotation_y": -90.0
},
"show_in_creative_tab": true
}字段说明:
| 字段 | 说明 |
|---|---|
size |
Automobility 逻辑使用的轮子尺寸 |
grip |
抓地力 |
radius / width |
模型尺寸,单位像素 |
model |
渲染定义 |
show_in_creative_tab |
是否在 RIA 创造标签页显示 |
JsonEM — 适用于烘焙 JSON 实体模型:
"model": {
"type": "jsonem",
"texture": "examplepack:textures/entity/automobile/frame/example_buggy.png",
"model_id": "examplepack:frame_example_buggy",
"layer_location": "examplepack:automobile/frame/example_buggy",
"render_type": "entity_cutout",
"rotation_y": 0.0
}render_type:entity_cutout|entity_cutout_no_cull|entity_translucent|entity_translucent_cull|entity_solid
GeckoLib — 适用于 GeckoLib 动画模型:
"model": {
"type": "geckolib",
"texture": "examplepack:textures/entity/automobile/frame/example_buggy.png",
"model_id": "examplepack:frame_example_buggy_gecko",
"geo_model": "examplepack:geo/frame/example_buggy.geo.json",
"animation": "examplepack:animations/example_buggy.animation.json"
}{
"type": "automobility:auto_mechanic_table",
"category": "automobility:frames",
"sortnum": 200,
"ingredients": [
{ "item": "automobility:automobile_frame", "component": "automobility:standard_red" },
{ "item": "minecraft:iron_ingot" }
],
"result": {
"item": "automobility:automobile_frame",
"component": "examplepack:example_buggy"
}
}仓库中已附带一套完整的最小示例:
其中包含:
- 一套
JsonEM车架与车轮示例 - 一套
GeckoLib车架与车轮示例 - 对应配方、翻译文件和资源包模型
- 只装数据包不装资源包也是允许的,但组件会显示为占位模型。
- 缺失资源时,占位模型使用屏障贴图,方便在物品栏中识别。
JsonEM组件需要正确的assets/<命名空间>/models/entity/.../main.json。GeckoLib组件需要正确的geo、animation和贴图资源。- 当资源缺失时,tooltip 会提示玩家缺少对应资源包。
- 自定义模型在进入世界后自动生效,通常不需要按
F3 + T。

