chore: M0 项目骨架(年糕历险记)——配置/日志/主循环/数据文件/构建脚本

This commit is contained in:
NianGao Dev
2026-08-15 22:24:38 +08:00
commit 19c6e44155
11030 changed files with 132833 additions and 0 deletions

44
.cursorrules Normal file
View File

@@ -0,0 +1,44 @@
# MC 项目规则Cursor
项目:用 Go 实现的类 Minecraft 体素沙盒游戏。
在回答任何与本仓库代码 / 设计相关的问题前,必须:
1. 先读取 `文档/索引.md`(书签式目录),按 §7 决策树定位文档;
2. 通读对应文档后再生成代码或建议;
3. 涉及协议 / 存档格式 / Mod API / 场景算法的改动,要求先更新文档并登记索引;
4. 遵循 `文档/开发规范.md`Go 风格、错误处理、并发、Conventional Commits
## 主题 → 文档映射
| 主题 | 文档 |
| --- | --- |
| Chunk / 异步生成 / 锁 | 文档/场景/区块管理.md |
| 地形 / 噪声 / 洞穴 | 文档/场景/世界生成.md |
| 生物群系 / 树 / 随机刻 / 液体 | 文档/场景/世界生态.md |
| 渲染 / mesh / 图集 / GL / 光影 | 文档/场景/渲染.md |
| 材质包 / 光影包 / 内容包 | 文档/设计.md §1.3、文档/场景/渲染.md §9 |
| 热更新 / 热重载 | 文档/场景/热更新.md |
| 光照 / 火把 | 文档/场景/光照.md |
| 物理 / 碰撞 / 移动 | 文档/场景/物理与碰撞.md |
| 方块交互 / 破坏 / 耐久 / crack | 文档/场景/方块交互与动画.md |
| 红石 / 活塞 / 方块更新 | 文档/场景/红石与方块更新.md |
| 实体 / AI / 掉落物 | 文档/场景/实体系统.md |
| 物品 / 背包 / 配方 / 容器 | 文档/场景/物品与背包.md |
| 工作台 / 合成表 | 文档/场景/工作台与合成表.md |
| 挖矿 / 矿物 | 文档/场景/挖矿与矿物.md |
| 动物 / 繁殖 / 驯服 | 文档/场景/动物体系.md |
| 村庄 / 村民 / 建造 | 文档/场景/村民系统.md |
| 僵尸 / 敌对生物 | 文档/场景/僵尸与敌对生物.md |
| UI / 拖拽 / 输入 | 文档/场景/UI与输入.md |
| UI 一比一还原 / 界面布局 | 文档/场景/UI还原.md |
| 音频 | 文档/场景/音频.md |
| 多人同步 / 防作弊 | 文档/场景/多人同步.md、文档/网络协议.md |
| 存档 / 持久化 | 文档/场景/存档与持久化.md、文档/存档格式.md |
| 性能 / GC / pprof | 文档/场景/性能与内存.md |
| 网络 / 多人 | 文档/网络协议.md |
| Mod | 文档/Mod开发指南.md |
| 测试 / CI | 文档/测试与质量.md |
| 构建 / 发布 | 文档/构建与发布.md |
| 编码规范 | 文档/开发规范.md |
| 规划 | 文档/路线图.md |

39
.github/copilot-instructions.md vendored Normal file
View File

@@ -0,0 +1,39 @@
# GitHub Copilot 指令
本仓库为 Go 项目(类 Minecraft 体素沙盒游戏)。生成或修改代码前:
1. 先读取 `文档/索引.md`(书签式目录)确定相关文档;
2. 遵循 `文档/开发规范.md`命名、错误处理、并发、Git 提交格式);
3. 协议 / 存档格式 / Mod API / 场景算法变更必须同步更新对应文档与索引;
4. 目录结构遵循 `文档/设计.md` §1.1,不要臆造结构。
## 主题速查
- Chunk / 异步生成:文档/场景/区块管理.md
- 地形 / 噪声:文档/场景/世界生成.md
- 生物群系 / 生态:文档/场景/世界生态.md
- 渲染 / 光影:文档/场景/渲染.md
- 材质包 / 光影包 / 内容包:文档/设计.md §1.3、文档/场景/渲染.md §9
- 热更新 / 热重载:文档/场景/热更新.md
- 光照 / 火把:文档/场景/光照.md
- 物理 / 碰撞:文档/场景/物理与碰撞.md
- 方块交互 / 破坏 / 耐久:文档/场景/方块交互与动画.md
- 红石 / 活塞:文档/场景/红石与方块更新.md
- 实体 / AI文档/场景/实体系统.md
- 物品 / 背包 / 配方:文档/场景/物品与背包.md
- 工作台 / 合成表:文档/场景/工作台与合成表.md
- 挖矿 / 矿物:文档/场景/挖矿与矿物.md
- 动物 / 繁殖:文档/场景/动物体系.md
- 村庄 / 村民 / 建造:文档/场景/村民系统.md
- 僵尸 / 敌对生物:文档/场景/僵尸与敌对生物.md
- UI / 输入:文档/场景/UI与输入.md
- UI 一比一还原:文档/场景/UI还原.md
- 音频:文档/场景/音频.md
- 多人同步:文档/场景/多人同步.md、文档/网络协议.md
- 存档 / 持久化:文档/场景/存档与持久化.md、文档/存档格式.md
- 性能 / GC文档/场景/性能与内存.md
- 网络:文档/网络协议.md
- Mod文档/Mod开发指南.md
- 测试:文档/测试与质量.md
- 构建 / 发布:文档/构建与发布.md
- 路线图:文档/路线图.md

8
.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
bin/
cache/
worlds/
logs/
tools/mingw64/
*.exe
*.tmp
*.log

10
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,10 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# 已忽略包含查询文件的默认文件夹
/queries/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

10
.idea/go.imports.xml generated Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GoImports">
<option name="excludedPackages">
<array>
<option value="golang.org/x/net/context" />
</array>
</option>
</component>
</project>

9
.idea/mc.iml generated Normal file
View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="Go" enabled="true" />
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/mc.iml" filepath="$PROJECT_DIR$/.idea/mc.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

60
CLAUDE.md Normal file
View File

@@ -0,0 +1,60 @@
# MC 项目规则Claude Code
本文件约束 AI 助手在本仓库中的行为。
项目:用 Go 实现的类 Minecraft 体素沙盒游戏(可扩展、可 Mod
## 第一原则:先查文档,再动手
1. 任何任务开始前,先读 `文档/索引.md`(全部文档的唯一入口,书签式目录)。
2. 按索引 §7「决策树」定位相关文档**通读后再实现**。
3. 文档与代码冲突时以文档为准;发现文档过时,先修文档再改代码。
## 文档速查(按任务定位)
| 任务类型 | 必读文档 |
| --- | --- |
| Chunk 数据结构 / 异步生成 / 锁 | 文档/场景/区块管理.md |
| 地形 / 噪声 / 洞穴 / 矿物 | 文档/场景/世界生成.md |
| 生物群系 / 树 / 随机刻 / 液体 | 文档/场景/世界生态.md |
| 渲染 / mesh / 图集 / GL 线程 / 光影包 | 文档/场景/渲染.md |
| 材质包 / 光影包 / 内容包格式 / 默认回退 | 文档/设计.md §1.3、文档/场景/渲染.md §9 |
| 热更新 / 热重载 / 脚本引擎 / plugin | 文档/场景/热更新.md、文档/设计.md §3.4 |
| 光照 / 火把 / relight | 文档/场景/光照.md |
| 物理 / 碰撞 / 移动 | 文档/场景/物理与碰撞.md |
| 方块交互 / 破坏 / 耐久 / crack | 文档/场景/方块交互与动画.md |
| 红石 / 活塞 / 方块更新 | 文档/场景/红石与方块更新.md |
| 实体 / AI / 寻路 / 掉落物 | 文档/场景/实体系统.md |
| 物品 / 背包 / 配方 / 容器 | 文档/场景/物品与背包.md |
| 工作台 / 合成表 / 配方匹配 | 文档/场景/工作台与合成表.md |
| 挖矿 / 矿物 / 工具门槛 / 附魔 | 文档/场景/挖矿与矿物.md |
| 动物 / 繁殖 / 驯服 | 文档/场景/动物体系.md |
| 村庄 / 村民 / 建造房子 / 交易 | 文档/场景/村民系统.md |
| 僵尸 / 敌对生物 / 村庄围攻 | 文档/场景/僵尸与敌对生物.md |
| UI / 拖拽 / 多语言 / 输入 | 文档/场景/UI与输入.md |
| UI 一比一还原 / 原版界面布局 | 文档/场景/UI还原.md |
| 音频 / 3D 音效 | 文档/场景/音频.md |
| 多人同步 / 防作弊 | 文档/场景/多人同步.md、文档/网络协议.md |
| 存档 / 持久化 / diff | 文档/场景/存档与持久化.md、文档/存档格式.md |
| 性能 / GC / pprof | 文档/场景/性能与内存.md |
| 网络 / 多人 | 文档/网络协议.md、文档/设计.md §10 |
| Mod | 文档/Mod开发指南.md、文档/设计.md §3 |
| 测试 / CI | 文档/测试与质量.md |
| 构建 / 发布 | 文档/构建与发布.md |
| 编码风格 / Git / 评审 | 文档/开发规范.md |
| 规划 / 里程碑 | 文档/路线图.md |
## 硬性规则
- 协议、存档格式、Mod API、场景算法等**规范类改动:先更新对应文档,再改代码**,并登记到 `文档/索引.md`
- 新增文档必须登记到 `文档/索引.md`(对应层 + 主题索引 + 阅读路径 + 决策树)。
- 遵循 Go 编码规范(文档/开发规范.md错误带上下文、无 goroutine 泄漏、`gofmt`/`go vet` 零告警。
- 提交信息使用 Conventional Commits`feat(world): ...``fix(chunk): ...`)。
- 禁止臆造项目不存在的目录 / 文件结构;以 文档/设计.md §1.1 为准。
- 场景专篇引用用相对链接(`光照.md`),引总纲用 `../设计.md`
## 常用命令
- 测试:`go test -race ./...`
- Lint`go vet ./...``golangci-lint run`
- 基准:`go test -bench=. -benchmem ./...`
- 性能:`go tool pprof http://localhost:6060/debug/pprof/heap`(仅 debug 构建)

20
Makefile Normal file
View File

@@ -0,0 +1,20 @@
# 年糕历险记 Makefile开发用Windows 安装包用 scripts/build.ps1
.PHONY: run-client run-server build vet test clean
run-client:
go run -tags dev ./cmd/client
run-server:
go run ./cmd/server
build:
go build ./...
vet:
go vet ./...
test:
go test -race ./...
clean:
rm -rf bin

108
README.md Normal file
View File

@@ -0,0 +1,108 @@
# 年糕历险记NianGao Adventure— Go 体素沙盒(类 Minecraft
一个用 Go 实现的可扩展、可 Mod 的类 Minecraft 体素沙盒游戏。
游戏名 / 窗口标题 / 安装包统一使用中文名 **年糕历险记**Windows 安装包为 NSIS 中文安装,见 [构建与发布.md](文档/构建与发布.md) §8
## 状态
项目处于**设计/规划阶段**,仓库当前仅包含开发文档。
代码骨架将在路线图 [M0 里程碑](文档/路线图.md) 落地。
## 文档中心
所有开发文档统一存放于 [`文档/`](文档/) 目录,**入口为 [`文档/索引.md`](文档/索引.md)**书签式目录含决策树AI 助手先读它)。
### 第一层:总纲
| 文档 | 主题 |
| --- | --- |
| [设计.md](文档/设计.md) | 总体设计规范、素材库位置、Mod 加载、无限世界、易遗漏功能检查表 |
| [架构.md](文档/架构.md) | 分层架构、模块依赖、并发模型、核心数据流 |
| [开发规范.md](文档/开发规范.md) | Go 编码规范、Git 工作流、评审清单、ADR |
### 第二层:场景专篇(核心开发手册,共 20 篇)
**数据层**
| 文档 | 主题 |
| --- | --- |
| [区块管理.md](文档/场景/区块管理.md) | Chunk 数据结构、生命周期状态机、异步生成流水线、锁与并发 |
| [世界生成.md](文档/场景/世界生成.md) | 噪声选型、确定性地形、生成管线、跨区块安全 |
| [世界生态.md](文档/场景/世界生态.md) | 生物群系、树/植被/矿物后处理、随机刻、液体流动 |
**表现层**
| 文档 | 主题 |
| --- | --- |
| [渲染.md](文档/场景/渲染.md) | GL 线程亲和、mesh 策略face culling / greedy、纹理图集、透明排序、默认光影系统与光影包替换 |
| [光照.md](文档/场景/光照.md) | 天空光+方块光、BFS 传播、光源移除 relight、火把跨区块 |
| [音频.md](文档/场景/音频.md) | 3D 音效衰减、声源上限、分类音量、音频库线程 |
**交互层**
| 文档 | 主题 |
| --- | --- |
| [物理与碰撞.md](文档/场景/物理与碰撞.md) | AABB 逐轴解算、移动模式、非立方体碰撞、实体推挤 |
| [方块交互与动画.md](文档/场景/方块交互与动画.md) | DDA 射线拾取、破坏进度、方块耐久、crack 动画、放置、方块状态 |
| [红石与方块更新.md](文档/场景/红石与方块更新.md) | 延迟更新队列、迭代上限、红石信号、活塞推动 |
**玩法层**
| 文档 | 主题 |
| --- | --- |
| [实体系统.md](文档/场景/实体系统.md) | 实体生命周期、AI 与限频寻路、自然生成、掉落物 |
| [物品与背包.md](文档/场景/物品与背包.md) | 物品栈、背包规则表、配方索引、工具耐久、容器方块实体 |
| [UI与输入.md](文档/场景/UI与输入.md) | UI 渲染架构、拖拽/Shift 状态机、多语言、键位与鼠标 |
| [UI还原.md](文档/场景/UI还原.md) | **客户端 UI 一比一还原原版**:界面清单、像素级布局规格、字体/纹理、截图验收 |
| [村民系统.md](文档/场景/村民系统.md) | 村庄生成、职业村民日程 AI、**程序化建造房子**(特色)、交易 |
| [工作台与合成表.md](文档/场景/工作台与合成表.md) | 3×3 合成网格、配方索引匹配、tag 展开、批量合成、防刷 |
| [挖矿与矿物.md](文档/场景/挖矿与矿物.md) | 矿物深度分布、工具门槛、速度公式、掉落/烧炼/附魔、矿洞照明 |
| [动物体系.md](文档/场景/动物体系.md) | 动物行为 AI、繁殖与数量控制、剪羊毛/牛奶/蛋、驯服骑乘 |
| [僵尸与敌对生物.md](文档/场景/僵尸与敌对生物.md) | 敌对生物样板AI 状态机、攻击模型、白天燃烧、村庄围攻 |
**网络层 / 稳定层**
| 文档 | 主题 |
| --- | --- |
| [多人同步.md](文档/场景/多人同步.md) | 服务器权威、实体插值、区块流限流、防作弊细化 |
| [存档与持久化.md](文档/场景/存档与持久化.md) | 保存时机、diff-only、异步保存池、原子写入、迁移 |
| [性能与内存.md](文档/场景/性能与内存.md) | Go GC 坑、对象池、锁粒度、channel 边界、pprof 流程 |
| [热更新.md](文档/场景/热更新.md) | Mod/素材/光影不重启热更新分层矩阵、generation 版本化、原子切换与回滚 |
### 第三层:协议与格式
| 文档 | 主题 |
| --- | --- |
| [网络协议.md](文档/网络协议.md) | 帧格式、消息目录、序列化规则、同步与防作弊 |
| [存档格式.md](文档/存档格式.md) | level.dat、region、chunk 序列化、压缩、迁移 |
| [Mod开发指南.md](文档/Mod开发指南.md) | Mod 结构、manifest、Lua API、权限沙箱 |
### 第四层:流程与治理
| 文档 | 主题 |
| --- | --- |
| [测试与质量.md](文档/测试与质量.md) | 单测/集成/基准、race/fuzz、CI、质量门禁 |
| [构建与发布.md](文档/构建与发布.md) | 构建、go:embed、交叉编译、版本、发布清单 |
| [路线图.md](文档/路线图.md) | 里程碑 M0M6、验收标准 |
> 新增或修改文档后,必须同步更新 [`文档/索引.md`](文档/索引.md)。
## AI 助手规则
仓库根目录提供面向 AI 编码助手的规则文件,统一引导助手先查文档索引、遵循开发规范再动手:
- [`CLAUDE.md`](CLAUDE.md) — Claude Code
- [`.cursorrules`](.cursorrules) — Cursor
- [`.github/copilot-instructions.md`](.github/copilot-instructions.md) — GitHub Copilot
## 目录规划
遵循 [设计.md](文档/设计.md) 第 1 节:`cmd/``internal/``assets/``mods/``resourcepacks/``worlds/``config/``logs/` 等。
## 素材包 / 光影包怎么放(内容包统一格式)
素材包、光影包与功能 Mod 共用同一套内容包格式manifest + `type`,见 [设计.md](文档/设计.md) §1.3**统一投放到 [`mods/`](mods/README.md)**
- **素材包**`type: "resource"`)覆盖默认材质;支持**原生 Minecraft 格式**pack.mcmeta + assets/…)直接放置;默认素材包已在 [`resourcepacks/texture-pack-default1.20.5-26.2/`](resourcepacks/README.md)。
- **光影包**`type: "shader"`)覆盖着色管线;**不下载光影包也没关系——未安装时使用系统默认光影**(内置,见 [渲染.md](文档/场景/渲染.md) §9
- **初版材质**:随客户端 `go:embed` 嵌入,无素材包时生效。

35
assets/config/blocks.json Normal file
View File

@@ -0,0 +1,35 @@
{
"blocks": {
"stone": { "id": 1, "hardness": 1.5, "resistance": 6.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/stone" } },
"granite": { "id": 2, "hardness": 1.5, "resistance": 6.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/granite" } },
"diorite": { "id": 3, "hardness": 1.5, "resistance": 6.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/diorite" } },
"andesite": { "id": 4, "hardness": 1.5, "resistance": 6.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/andesite" } },
"grass_block": { "id": 5, "hardness": 0.6, "resistance": 3.0, "light": 0, "transparent": false, "solid": true, "textures": { "up": "block/grass_block_top", "down": "block/dirt", "side": "block/grass_block_side" } },
"dirt": { "id": 6, "hardness": 0.5, "resistance": 2.5, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/dirt" } },
"cobblestone": { "id": 7, "hardness": 2.0, "resistance": 6.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/cobblestone" } },
"oak_planks": { "id": 8, "hardness": 2.0, "resistance": 3.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/oak_planks" } },
"bedrock": { "id": 9, "hardness": -1.0, "resistance": 3600000, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/bedrock" } },
"sand": { "id": 10, "hardness": 0.5, "resistance": 2.5, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/sand" } },
"gravel": { "id": 11, "hardness": 0.6, "resistance": 3.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/gravel" } },
"oak_log": { "id": 12, "hardness": 2.0, "resistance": 2.0, "light": 0, "transparent": false, "solid": true, "textures": { "up": "block/oak_log_top", "down": "block/oak_log_top", "side": "block/oak_log" } },
"oak_leaves": { "id": 13, "hardness": 0.2, "resistance": 1.0, "light": 0, "transparent": true, "solid": true, "textures": { "all": "block/oak_leaves" }, "cutout": true },
"glass": { "id": 14, "hardness": 0.3, "resistance": 1.5, "light": 0, "transparent": true, "solid": true, "textures": { "all": "block/glass" }, "cutout": true },
"water": { "id": 15, "hardness": 100.0, "resistance": 500.0, "light": 0, "transparent": true, "solid": false, "textures": { "all": "block/water_still" }, "translucent": true, "fluid": true },
"lava": { "id": 16, "hardness": 100.0, "resistance": 500.0, "light": 15, "transparent": true, "solid": false, "textures": { "all": "block/lava_still" }, "translucent": true, "fluid": true },
"torch": { "id": 17, "hardness": 0.0, "resistance": 0.0, "light": 14, "transparent": true, "solid": false, "textures": { "all": "block/torch" }, "cutout": true },
"crafting_table":{ "id": 18, "hardness": 2.5, "resistance": 2.5, "light": 0, "transparent": false, "solid": true, "textures": { "up": "block/crafting_table_top", "down": "block/oak_planks", "side": "block/crafting_table_side" } },
"furnace": { "id": 19, "hardness": 3.5, "resistance": 3.5, "light": 0, "transparent": false, "solid": true, "textures": { "up": "block/furnace_top", "down": "block/furnace_top", "side": "block/furnace_side", "front": "block/furnace_front" } },
"coal_ore": { "id": 20, "hardness": 3.0, "resistance": 3.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/coal_ore" }, "drops": "coal", "required_tier": 1 },
"iron_ore": { "id": 21, "hardness": 3.0, "resistance": 3.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/iron_ore" }, "required_tier": 2 },
"gold_ore": { "id": 22, "hardness": 3.0, "resistance": 3.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/gold_ore" }, "required_tier": 3 },
"diamond_ore": { "id": 23, "hardness": 3.0, "resistance": 3.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/diamond_ore" }, "drops": "diamond", "required_tier": 3 },
"redstone_ore": { "id": 24, "hardness": 3.0, "resistance": 3.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/redstone_ore" }, "drops": "redstone", "required_tier": 3 },
"iron_block": { "id": 25, "hardness": 5.0, "resistance": 6.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/iron_block" } },
"gold_block": { "id": 26, "hardness": 3.0, "resistance": 6.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/gold_block" } },
"diamond_block": { "id": 27, "hardness": 5.0, "resistance": 6.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/diamond_block" } },
"snow_block": { "id": 28, "hardness": 0.2, "resistance": 1.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/snow" } },
"ice": { "id": 29, "hardness": 0.5, "resistance": 2.5, "light": 0, "transparent": true, "solid": true, "textures": { "all": "block/ice" }, "translucent": true },
"obsidian": { "id": 30, "hardness": 50.0, "resistance": 1200.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/obsidian" }, "required_tier": 4 },
"white_wool": { "id": 31, "hardness": 0.8, "resistance": 4.0, "light": 0, "transparent": false, "solid": true, "textures": { "all": "block/white_wool" } }
}
}

41
assets/config/items.json Normal file
View File

@@ -0,0 +1,41 @@
{
"items": {
"stick": { "stack": 64, "texture": "item/stick" },
"coal": { "stack": 64, "texture": "item/coal" },
"diamond": { "stack": 64, "texture": "item/diamond" },
"iron_ingot": { "stack": 64, "texture": "item/iron_ingot" },
"gold_ingot": { "stack": 64, "texture": "item/gold_ingot" },
"redstone": { "stack": 64, "texture": "item/redstone" },
"oak_planks": { "stack": 64, "texture": "block/oak_planks" },
"cobblestone": { "stack": 64, "texture": "block/cobblestone" },
"crafting_table": { "stack": 64, "texture": "block/crafting_table_top", "place": "crafting_table" },
"furnace": { "stack": 64, "texture": "block/furnace_front", "place": "furnace" },
"torch": { "stack": 64, "texture": "block/torch", "place": "torch" },
"wooden_pickaxe": { "stack": 1, "texture": "item/wooden_pickaxe", "tool": "pickaxe", "tier": 1, "speed": 2.0, "durability": 59 },
"stone_pickaxe": { "stack": 1, "texture": "item/stone_pickaxe", "tool": "pickaxe", "tier": 2, "speed": 4.0, "durability": 131 },
"iron_pickaxe": { "stack": 1, "texture": "item/iron_pickaxe", "tool": "pickaxe", "tier": 3, "speed": 6.0, "durability": 250 },
"diamond_pickaxe": { "stack": 1, "texture": "item/diamond_pickaxe", "tool": "pickaxe", "tier": 4, "speed": 8.0, "durability": 1561 },
"wooden_shovel": { "stack": 1, "texture": "item/wooden_shovel", "tool": "shovel", "tier": 1, "speed": 2.0, "durability": 59 },
"stone_shovel": { "stack": 1, "texture": "item/stone_shovel", "tool": "shovel", "tier": 2, "speed": 4.0, "durability": 131 },
"iron_shovel": { "stack": 1, "texture": "item/iron_shovel", "tool": "shovel", "tier": 3, "speed": 6.0, "durability": 250 },
"diamond_shovel": { "stack": 1, "texture": "item/diamond_shovel", "tool": "shovel", "tier": 4, "speed": 8.0, "durability": 1561 },
"wooden_axe": { "stack": 1, "texture": "item/wooden_axe", "tool": "axe", "tier": 1, "speed": 2.0, "durability": 59 },
"stone_axe": { "stack": 1, "texture": "item/stone_axe", "tool": "axe", "tier": 2, "speed": 4.0, "durability": 131 },
"iron_axe": { "stack": 1, "texture": "item/iron_axe", "tool": "axe", "tier": 3, "speed": 6.0, "durability": 250 },
"diamond_axe": { "stack": 1, "texture": "item/diamond_axe", "tool": "axe", "tier": 4, "speed": 8.0, "durability": 1561 },
"raw_iron": { "stack": 64, "texture": "item/raw_iron" },
"raw_gold": { "stack": 64, "texture": "item/raw_gold" },
"rotten_flesh": { "stack": 64, "texture": "item/rotten_flesh" },
"beef": { "stack": 64, "texture": "item/beef" },
"porkchop": { "stack": 64, "texture": "item/porkchop" },
"chicken": { "stack": 64, "texture": "item/chicken" },
"mutton": { "stack": 64, "texture": "item/mutton" },
"leather": { "stack": 64, "texture": "item/leather" },
"feather": { "stack": 64, "texture": "item/feather" },
"egg": { "stack": 16, "texture": "item/egg" },
"white_wool": { "stack": 64, "texture": "block/white_wool", "place": "white_wool" },
"wheat_seeds": { "stack": 64, "texture": "item/wheat_seeds" },
"wheat": { "stack": 64, "texture": "item/wheat" },
"bone": { "stack": 64, "texture": "item/bone" }
}
}

View File

@@ -0,0 +1,24 @@
{
"recipes": [
{ "type": "crafting_shapeless", "ingredients": ["oak_log"], "result": { "item": "oak_planks", "count": 4 } },
{ "type": "crafting_shaped", "pattern": ["X", "X"], "key": { "X": "oak_planks" }, "result": { "item": "stick", "count": 4 } },
{ "type": "crafting_shaped", "pattern": ["XX", "XX"], "key": { "X": "oak_planks" }, "result": { "item": "crafting_table", "count": 1 } },
{ "type": "crafting_shaped", "pattern": ["X", "Y"], "key": { "X": "coal", "Y": "stick" }, "result": { "item": "torch", "count": 4 } },
{ "type": "crafting_shaped", "pattern": ["XXX", "X X", "XXX"], "key": { "X": "cobblestone" }, "result": { "item": "furnace", "count": 1 } },
{ "type": "crafting_shaped", "pattern": ["XXX", " Y ", " Y "], "key": { "X": "oak_planks", "Y": "stick" }, "result": { "item": "wooden_pickaxe", "count": 1 } },
{ "type": "crafting_shaped", "pattern": ["XXX", " Y ", " Y "], "key": { "X": "cobblestone", "Y": "stick" }, "result": { "item": "stone_pickaxe", "count": 1 } },
{ "type": "crafting_shaped", "pattern": ["XXX", " Y ", " Y "], "key": { "X": "iron_ingot", "Y": "stick" }, "result": { "item": "iron_pickaxe", "count": 1 } },
{ "type": "crafting_shaped", "pattern": ["XXX", " Y ", " Y "], "key": { "X": "diamond", "Y": "stick" }, "result": { "item": "diamond_pickaxe", "count": 1 } },
{ "type": "crafting_shaped", "pattern": ["X", "Y", "Y"], "key": { "X": "oak_planks", "Y": "stick" }, "result": { "item": "wooden_shovel", "count": 1 } },
{ "type": "crafting_shaped", "pattern": ["XX", "XY", " Y"], "key": { "X": "oak_planks", "Y": "stick" }, "result": { "item": "wooden_axe", "count": 1 } },
{ "type": "crafting_shaped", "pattern": ["XXX", "XXX", "XXX"], "key": { "X": "iron_ingot" }, "result": { "item": "iron_block", "count": 1 } },
{ "type": "crafting_shapeless", "ingredients": ["iron_block"], "result": { "item": "iron_ingot", "count": 9 } },
{ "type": "crafting_shaped", "pattern": ["XXX", "XXX", "XXX"], "key": { "X": "diamond" }, "result": { "item": "diamond_block", "count": 1 } },
{ "type": "crafting_shapeless", "ingredients": ["diamond_block"], "result": { "item": "diamond", "count": 9 } },
{ "type": "smelting", "input": "iron_ore", "result": { "item": "iron_ingot", "count": 1 } },
{ "type": "smelting", "input": "gold_ore", "result": { "item": "gold_ingot", "count": 1 } },
{ "type": "smelting", "input": "raw_iron", "result": { "item": "iron_ingot", "count": 1 } },
{ "type": "smelting", "input": "raw_gold", "result": { "item": "gold_ingot", "count": 1 } },
{ "type": "smelting", "input": "beef", "result": { "item": "beef", "count": 1 } }
]
}

6
cmd/client/dev_dev.go Normal file
View File

@@ -0,0 +1,6 @@
//go:build dev
package main
// dev 构建:开发模式默认开启(直接读取 assets/ 目录)。
const devDefault = true

View File

@@ -0,0 +1,6 @@
//go:build !dev
package main
// release 构建默认关闭开发模式go:embed 嵌入资源)。
const devDefault = false

52
cmd/client/main.go Normal file
View File

@@ -0,0 +1,52 @@
// 年糕历险记 —— 客户端入口。
package main
import (
"context"
"flag"
"os"
"os/signal"
"mc/internal/config"
"mc/internal/engine"
"mc/internal/logx"
)
var devMode = flag.Bool("dev", devDefault, "开发模式:直接读取 assets/(默认随构建 tag")
// clientApp 客户端应用骨架(窗口/渲染在 Todo 4 接入)。
type clientApp struct {
cfg *config.ClientConfig
log *logx.Logger
}
// Tick 每 tick20Hz逻辑。
func (a *clientApp) Tick(dt float64) {}
// Render 每帧渲染(占位)。
func (a *clientApp) Render() {}
// ShouldClose 窗口关闭判定(占位)。
func (a *clientApp) ShouldClose() bool { return false }
func main() {
flag.Parse()
log, err := logx.New("logs/client.log", logx.LevelInfo)
if err != nil {
panic(err)
}
cfg, err := config.Load("config/client.yaml", config.DefaultClient())
if err != nil {
log.Warnf("配置加载失败,使用默认值:%v", err)
}
log.Infof("%s 客户端启动:%dx%d语言 %s视距 %d", cfg.Client.WindowTitle, cfg.Client.WindowWidth, cfg.Client.WindowHeight, cfg.Client.Language, cfg.Client.RenderDistance)
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
defer stop()
app := &clientApp{cfg: cfg, log: log}
engine.Run(ctx, app, app)
log.Infof("客户端已退出")
}

50
cmd/server/main.go Normal file
View File

@@ -0,0 +1,50 @@
// 年糕历险记 —— 专用服务器入口。
package main
import (
"context"
"flag"
"os"
"os/signal"
"mc/internal/config"
"mc/internal/engine"
"mc/internal/logx"
)
// serverApp 服务器应用骨架(世界/网络在后续里程碑接入)。
type serverApp struct {
cfg *config.ServerConfig
log *logx.Logger
tickCount uint64
}
// Tick 每 tick20Hz服务器逻辑。
func (s *serverApp) Tick(dt float64) {
s.tickCount++
if s.tickCount%100 == 0 { // 每 5 秒
s.log.Debugf("tick=%d", s.tickCount)
}
}
func main() {
flag.Parse()
log, err := logx.New("logs/server.log", logx.LevelInfo)
if err != nil {
panic(err)
}
cfg, err := config.Load("config/server.yaml", config.DefaultServer())
if err != nil {
log.Warnf("配置加载失败,使用默认值:%v", err)
}
log.Infof("年糕历险记 服务器启动:端口 %d世界 %q种子 %dtick 率 %d", cfg.Server.Port, cfg.World.Name, cfg.World.Seed, cfg.Server.TickRate)
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
defer stop()
app := &serverApp{cfg: cfg, log: log}
engine.Run(ctx, app, engine.NoopRenderer{})
log.Infof("服务器已退出")
}

15
config/client.yaml Normal file
View File

@@ -0,0 +1,15 @@
client:
window_width: 1280
window_height: 720
window_title: "年糕历险记"
vsync: true
fov: 70
render_distance: 12
language: "zh_cn"
graphics:
smooth_lighting: true
mipmap: true
anisotropic: 4
audio:
volume: 1.0
music: true

18
config/server.yaml Normal file
View File

@@ -0,0 +1,18 @@
server:
port: 25565
max_players: 20
view_distance: 10
tick_rate: 20
world:
seed: 123456789
name: "NewWorld"
generator:
biome_scale: 0.005
height_scale: 0.01
cave_density: 0.1
mods:
enabled: true
directory: "mods"
allow_scripts: true
script_timeout_ms: 5
hot_reload: false

5
go.mod Normal file
View File

@@ -0,0 +1,5 @@
module mc
go 1.26.4
require gopkg.in/yaml.v3 v3.0.1

4
go.sum Normal file
View File

@@ -0,0 +1,4 @@
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

113
internal/config/config.go Normal file
View File

@@ -0,0 +1,113 @@
// Package config 解析 client.yaml / server.yaml 配置(设计.md §14
package config
import (
"fmt"
"os"
"gopkg.in/yaml.v3"
)
// ClientConfig 客户端配置(设计.md §14.2)。
type ClientConfig struct {
Client struct {
WindowWidth int `yaml:"window_width"`
WindowHeight int `yaml:"window_height"`
WindowTitle string `yaml:"window_title"`
VSync bool `yaml:"vsync"`
FOV float64 `yaml:"fov"`
RenderDistance int `yaml:"render_distance"`
Language string `yaml:"language"`
Graphics struct {
SmoothLighting bool `yaml:"smooth_lighting"`
Mipmap bool `yaml:"mipmap"`
Anisotropic int `yaml:"anisotropic"`
} `yaml:"graphics"`
Audio struct {
Volume float64 `yaml:"volume"`
Music bool `yaml:"music"`
} `yaml:"audio"`
} `yaml:"client"`
}
// DefaultClient 客户端默认配置。
func DefaultClient() *ClientConfig {
c := &ClientConfig{}
c.Client.WindowWidth = 1280
c.Client.WindowHeight = 720
c.Client.WindowTitle = "年糕历险记"
c.Client.VSync = true
c.Client.FOV = 70
c.Client.RenderDistance = 12
c.Client.Language = "zh_cn"
c.Client.Graphics.SmoothLighting = true
c.Client.Graphics.Mipmap = true
c.Client.Graphics.Anisotropic = 4
c.Client.Audio.Volume = 1.0
c.Client.Audio.Music = true
return c
}
// ServerConfig 服务器配置(设计.md §14.1)。
type ServerConfig struct {
Server struct {
Port int `yaml:"port"`
MaxPlayers int `yaml:"max_players"`
ViewDistance int `yaml:"view_distance"`
TickRate int `yaml:"tick_rate"`
} `yaml:"server"`
World struct {
Seed int64 `yaml:"seed"`
Name string `yaml:"name"`
Generator struct {
BiomeScale float64 `yaml:"biome_scale"`
HeightScale float64 `yaml:"height_scale"`
CaveDensity float64 `yaml:"cave_density"`
} `yaml:"generator"`
} `yaml:"world"`
Mods struct {
Enabled bool `yaml:"enabled"`
Directory string `yaml:"directory"`
AllowScripts bool `yaml:"allow_scripts"`
ScriptTimeoutMS int `yaml:"script_timeout_ms"`
HotReload bool `yaml:"hot_reload"`
} `yaml:"mods"`
}
// DefaultServer 服务器默认配置。
func DefaultServer() *ServerConfig {
c := &ServerConfig{}
c.Server.Port = 25565
c.Server.MaxPlayers = 20
c.Server.ViewDistance = 10
c.Server.TickRate = 20
c.World.Seed = 123456789
c.World.Name = "NewWorld"
c.World.Generator.BiomeScale = 0.005
c.World.Generator.HeightScale = 0.01
c.World.Generator.CaveDensity = 0.1
c.Mods.Enabled = true
c.Mods.Directory = "mods"
c.Mods.AllowScripts = true
c.Mods.ScriptTimeoutMS = 5
return c
}
// Load 读取 YAML 配置;文件不存在时返回 defaults零拷贝不可行则回退默认构造
func Load[T any](path string, defaults *T) (*T, error) {
b, err := os.ReadFile(path)
if err != nil {
if os.IsNotExist(err) {
return defaults, nil
}
return nil, fmt.Errorf("config.Load %s: %w", path, err)
}
out := new(T)
if defaults != nil {
*out = *defaults
}
if err := yaml.Unmarshal(b, out); err != nil {
return nil, fmt.Errorf("config.Load %s: %w", path, err)
}
return out, nil
}

55
internal/engine/loop.go Normal file
View File

@@ -0,0 +1,55 @@
// Package engine 主循环tick 固定 20Hz、render 吃满帧率、两者解耦(架构.md §3.2)。
package engine
import (
"context"
"time"
)
// Ticker 世界逻辑接口:每 tick 调用dt 为固定 tick 间隔秒数。
type Ticker interface {
Tick(dt float64)
}
// Renderer 渲染接口每帧调用ShouldClose 返回 true 时退出循环。
type Renderer interface {
Render()
ShouldClose() bool
}
// NoopRenderer 无渲染占位(服务器),以约 60Hz 空转。
type NoopRenderer struct{}
// Render 空实现。
func (NoopRenderer) Render() { time.Sleep(time.Second / 60) }
// ShouldClose 永不主动关闭。
func (NoopRenderer) ShouldClose() bool { return false }
// Run 主循环tick goroutine 固定 20Hz主 goroutine 渲染ctx 取消或窗口关闭时退出。
func Run(ctx context.Context, tick Ticker, render Renderer) {
const tickInterval = time.Second / 20
stop := make(chan struct{})
go func() {
t := time.NewTicker(tickInterval)
defer t.Stop()
for {
select {
case <-ctx.Done():
return
case <-stop:
return
case <-t.C:
tick.Tick(tickInterval.Seconds())
}
}
}()
defer close(stop)
for {
if ctx.Err() != nil || render.ShouldClose() {
return
}
render.Render()
}
}

81
internal/logx/log.go Normal file
View File

@@ -0,0 +1,81 @@
// Package logx 分级日志debug/info/warn/error输出 stderr 与可选文件。
package logx
import (
"fmt"
"io"
"os"
"sync"
"time"
)
// Level 日志级别。
type Level int
const (
// LevelDebug 调试。
LevelDebug Level = iota
// LevelInfo 常规信息。
LevelInfo
// LevelWarn 警告。
LevelWarn
// LevelError 错误。
LevelError
)
// Logger 线程安全分级日志器。
type Logger struct {
mu sync.Mutex
level Level
w io.Writer
}
// New 创建日志器file 为空仅输出 stderr。
func New(file string, level Level) (*Logger, error) {
w := io.Writer(os.Stderr)
if file != "" {
if err := os.MkdirAll(pathDir(file), 0o755); err != nil {
return nil, fmt.Errorf("logx.New mkdir: %w", err)
}
f, err := os.OpenFile(file, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0o644)
if err != nil {
return nil, fmt.Errorf("logx.New %s: %w", file, err)
}
w = io.MultiWriter(os.Stderr, f)
}
return &Logger{level: level, w: w}, nil
}
// pathDir 返回路径的目录部分("a.log" → ".")。
func pathDir(p string) string {
for i := len(p) - 1; i >= 0; i-- {
if p[i] == '/' || p[i] == '\\' {
if i == 0 {
return p[:1]
}
return p[:i]
}
}
return "."
}
func (l *Logger) logf(lv Level, tag, format string, args ...any) {
if lv < l.level {
return
}
l.mu.Lock()
defer l.mu.Unlock()
fmt.Fprintf(l.w, "[%s] [%s] %s\n", time.Now().Format("15:04:05.000"), tag, fmt.Sprintf(format, args...))
}
// Debugf 调试输出。
func (l *Logger) Debugf(format string, args ...any) { l.logf(LevelDebug, "DEBUG", format, args...) }
// Infof 常规输出。
func (l *Logger) Infof(format string, args ...any) { l.logf(LevelInfo, "INFO", format, args...) }
// Warnf 警告输出。
func (l *Logger) Warnf(format string, args ...any) { l.logf(LevelWarn, "WARN", format, args...) }
// Errorf 错误输出。
func (l *Logger) Errorf(format string, args ...any) { l.logf(LevelError, "ERROR", format, args...) }

65
mods/README.md Normal file
View File

@@ -0,0 +1,65 @@
# mods/ — 内容包投放目录(素材包 / 光影包 / Mod
> 这是**主投放点**:把你下载好的 **素材包(材质包)**、**光影包**、以及功能 **Mod** 直接放进本目录,
> 客户端 / 服务器启动时统一扫描、按 `manifest.json` 的 `type` 字段自动分派。
> 完整格式见 [`../文档/设计.md`](../文档/设计.md) §1.3(内容包统一格式)。
## 怎么放
1. 把下载的包解压成 `<包名>/` 文件夹,**或直接放 `.zip` 压缩包**
2. 包根目录必须含 `manifest.json`
3. 启动游戏即可(开发模式支持热重载)。
## 三种包类型manifest 里写 `type`
| type | 用途 | 包内结构 |
| --- | --- | --- |
| `resource` | 素材包:覆盖默认纹理 / 模型 / 语言 / 音效 | `assets/...` |
| `shader` | 光影包:覆盖着色器管线 | `shaders/`(命名与内置一致,见 渲染.md §9 |
| `mod` | 功能 Mod脚本 + 数据 + 注册内容 | `scripts/` `data/` `assets/<ns>/` |
> 素材包也支持**原生 Minecraft 格式**`pack.mcmeta` + `assets/<ns>/...`,无需 manifest.json
> 解压或 zip 直接放入即可自动识别;默认素材包示例见 [`../resourcepacks/`](../resourcepacks/README.md)。
## 素材包示例(`mods/MyPack/manifest.json`
```json
{
"type": "resource",
"id": "my_texture_pack",
"name": "My Texture Pack",
"version": "1.0.0",
"api_version": 1,
"priority": 0,
"resource_namespace": "minecraft",
"description": "覆盖默认材质"
}
```
## 光影包示例(`mods/MyShaders/manifest.json`
```json
{
"type": "shader",
"id": "my_shader_pack",
"name": "My Shader Pack",
"version": "1.0.0",
"api_version": 1,
"shaders": {
"chunk": "shaders/chunk.vert,shaders/chunk.frag",
"water": "shaders/water.vert,shaders/water.frag"
}
}
```
## 没放任何包会怎样(默认回退)
- **没放素材包** → 使用随客户端嵌入的**初版默认材质**`assets/`go:embed
- **没放光影包** → 使用**系统默认光影**(内置 Forward 光照管线,见 `../文档/场景/渲染.md` §9
- 所以「不下载光影包」完全没问题,游戏自带一套能跑的光影系统。
## 规则
- 同类型资源冲突:`priority` 大的优先;相同则后加载者覆盖并告警。
- 素材包与光影包互不覆盖:素材包管纹理、光影包管着色阶段,可同时生效。
- `resourcepacks/`[../resourcepacks/README.md](../resourcepacks/README.md))为兼容目录,素材包也可放那里。

21
resourcepacks/README.md Normal file
View File

@@ -0,0 +1,21 @@
# resourcepacks/ — 素材包目录
> 素材包(纹理/模型/语言/音效覆盖)放这里;也接受放到 [`../mods/`](../mods/README.md)(主投放点)。
> 格式见 [`../文档/设计.md`](../文档/设计.md) §1.3(内容包统一格式)。
## 已就位的素材包
- **`texture-pack-default1.20.5-26.2/`** — 原生 Minecraft 1.20.5 资源包pack.mcmetapack_format 34/46
含 atlases / blockstates1198/ models3928/ textures / font / lang(en_us) 完整结构。
客户端/服务器启动时自动加载,作为默认材质来源(初版材质基线)。
## 支持两种格式(自动识别)
1. **原生格式**(推荐,用户下载的包直接放):根目录 `pack.mcmeta` + `assets/<ns>/...`,自动视为素材包,无需转换。
2. **扩展格式**(可选):`manifest.json``"type": "resource"`,可声明 `priority`),包结构同 Mod 格式。
## 规则
- 优先级:`功能 Mod 资源 > 素材包 > 光影包(仅渲染阶段) > 默认嵌入素材`
- 同类型冲突:`priority` 大者优先,相同则后加载者覆盖并告警。
- 开发模式支持热重载(改图 → 图集重建 → mesh 重传,见 场景/热更新.md

View File

@@ -0,0 +1,64 @@
{
"sources": [
{
"type": "minecraft:paletted_permutations",
"palette_key": "minecraft:trims/color_palettes/trim_palette",
"permutations": {
"amethyst": "minecraft:trims/color_palettes/amethyst",
"copper": "minecraft:trims/color_palettes/copper",
"copper_darker": "minecraft:trims/color_palettes/copper_darker",
"diamond": "minecraft:trims/color_palettes/diamond",
"diamond_darker": "minecraft:trims/color_palettes/diamond_darker",
"emerald": "minecraft:trims/color_palettes/emerald",
"gold": "minecraft:trims/color_palettes/gold",
"gold_darker": "minecraft:trims/color_palettes/gold_darker",
"iron": "minecraft:trims/color_palettes/iron",
"iron_darker": "minecraft:trims/color_palettes/iron_darker",
"lapis": "minecraft:trims/color_palettes/lapis",
"netherite": "minecraft:trims/color_palettes/netherite",
"netherite_darker": "minecraft:trims/color_palettes/netherite_darker",
"quartz": "minecraft:trims/color_palettes/quartz",
"redstone": "minecraft:trims/color_palettes/redstone",
"resin": "minecraft:trims/color_palettes/resin"
},
"textures": [
"minecraft:trims/entity/humanoid/sentry",
"minecraft:trims/entity/humanoid_leggings/sentry",
"minecraft:trims/entity/humanoid/dune",
"minecraft:trims/entity/humanoid_leggings/dune",
"minecraft:trims/entity/humanoid/coast",
"minecraft:trims/entity/humanoid_leggings/coast",
"minecraft:trims/entity/humanoid/wild",
"minecraft:trims/entity/humanoid_leggings/wild",
"minecraft:trims/entity/humanoid/ward",
"minecraft:trims/entity/humanoid_leggings/ward",
"minecraft:trims/entity/humanoid/eye",
"minecraft:trims/entity/humanoid_leggings/eye",
"minecraft:trims/entity/humanoid/vex",
"minecraft:trims/entity/humanoid_leggings/vex",
"minecraft:trims/entity/humanoid/tide",
"minecraft:trims/entity/humanoid_leggings/tide",
"minecraft:trims/entity/humanoid/snout",
"minecraft:trims/entity/humanoid_leggings/snout",
"minecraft:trims/entity/humanoid/rib",
"minecraft:trims/entity/humanoid_leggings/rib",
"minecraft:trims/entity/humanoid/spire",
"minecraft:trims/entity/humanoid_leggings/spire",
"minecraft:trims/entity/humanoid/wayfinder",
"minecraft:trims/entity/humanoid_leggings/wayfinder",
"minecraft:trims/entity/humanoid/shaper",
"minecraft:trims/entity/humanoid_leggings/shaper",
"minecraft:trims/entity/humanoid/silence",
"minecraft:trims/entity/humanoid_leggings/silence",
"minecraft:trims/entity/humanoid/raiser",
"minecraft:trims/entity/humanoid_leggings/raiser",
"minecraft:trims/entity/humanoid/host",
"minecraft:trims/entity/humanoid_leggings/host",
"minecraft:trims/entity/humanoid/flow",
"minecraft:trims/entity/humanoid_leggings/flow",
"minecraft:trims/entity/humanoid/bolt",
"minecraft:trims/entity/humanoid_leggings/bolt"
]
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "entity/banner/",
"source": "entity/banner"
}
]
}

View File

@@ -0,0 +1,22 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "block/",
"source": "block"
},
{
"type": "minecraft:directory",
"prefix": "entity/conduit/",
"source": "entity/conduit"
},
{
"type": "minecraft:single",
"resource": "minecraft:entity/bell/bell_body"
},
{
"type": "minecraft:single",
"resource": "minecraft:entity/enchantment/enchanting_table_book"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "",
"source": "environment/celestial"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "entity/chest/",
"source": "entity/chest"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "entity/decorated_pot/",
"source": "entity/decorated_pot"
}
]
}

View File

@@ -0,0 +1,14 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "",
"source": "gui/sprites"
},
{
"type": "minecraft:directory",
"prefix": "mob_effect/",
"source": "mob_effect"
}
]
}

View File

@@ -0,0 +1,37 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "item/",
"source": "item"
},
{
"type": "minecraft:paletted_permutations",
"palette_key": "minecraft:trims/color_palettes/trim_palette",
"permutations": {
"amethyst": "minecraft:trims/color_palettes/amethyst",
"copper": "minecraft:trims/color_palettes/copper",
"copper_darker": "minecraft:trims/color_palettes/copper_darker",
"diamond": "minecraft:trims/color_palettes/diamond",
"diamond_darker": "minecraft:trims/color_palettes/diamond_darker",
"emerald": "minecraft:trims/color_palettes/emerald",
"gold": "minecraft:trims/color_palettes/gold",
"gold_darker": "minecraft:trims/color_palettes/gold_darker",
"iron": "minecraft:trims/color_palettes/iron",
"iron_darker": "minecraft:trims/color_palettes/iron_darker",
"lapis": "minecraft:trims/color_palettes/lapis",
"netherite": "minecraft:trims/color_palettes/netherite",
"netherite_darker": "minecraft:trims/color_palettes/netherite_darker",
"quartz": "minecraft:trims/color_palettes/quartz",
"redstone": "minecraft:trims/color_palettes/redstone",
"resin": "minecraft:trims/color_palettes/resin"
},
"textures": [
"minecraft:trims/items/helmet_trim",
"minecraft:trims/items/chestplate_trim",
"minecraft:trims/items/leggings_trim",
"minecraft:trims/items/boots_trim"
]
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "",
"source": "map/decorations"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "",
"source": "painting"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "",
"source": "particle"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "entity/shield/",
"source": "entity/shield"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "entity/shulker/",
"source": "entity/shulker"
}
]
}

View File

@@ -0,0 +1,118 @@
{
"variants": {
"face=ceiling,facing=east,powered=false": {
"model": "minecraft:block/acacia_button",
"x": 180,
"y": 270
},
"face=ceiling,facing=east,powered=true": {
"model": "minecraft:block/acacia_button_pressed",
"x": 180,
"y": 270
},
"face=ceiling,facing=north,powered=false": {
"model": "minecraft:block/acacia_button",
"x": 180,
"y": 180
},
"face=ceiling,facing=north,powered=true": {
"model": "minecraft:block/acacia_button_pressed",
"x": 180,
"y": 180
},
"face=ceiling,facing=south,powered=false": {
"model": "minecraft:block/acacia_button",
"x": 180
},
"face=ceiling,facing=south,powered=true": {
"model": "minecraft:block/acacia_button_pressed",
"x": 180
},
"face=ceiling,facing=west,powered=false": {
"model": "minecraft:block/acacia_button",
"x": 180,
"y": 90
},
"face=ceiling,facing=west,powered=true": {
"model": "minecraft:block/acacia_button_pressed",
"x": 180,
"y": 90
},
"face=floor,facing=east,powered=false": {
"model": "minecraft:block/acacia_button",
"y": 90
},
"face=floor,facing=east,powered=true": {
"model": "minecraft:block/acacia_button_pressed",
"y": 90
},
"face=floor,facing=north,powered=false": {
"model": "minecraft:block/acacia_button"
},
"face=floor,facing=north,powered=true": {
"model": "minecraft:block/acacia_button_pressed"
},
"face=floor,facing=south,powered=false": {
"model": "minecraft:block/acacia_button",
"y": 180
},
"face=floor,facing=south,powered=true": {
"model": "minecraft:block/acacia_button_pressed",
"y": 180
},
"face=floor,facing=west,powered=false": {
"model": "minecraft:block/acacia_button",
"y": 270
},
"face=floor,facing=west,powered=true": {
"model": "minecraft:block/acacia_button_pressed",
"y": 270
},
"face=wall,facing=east,powered=false": {
"model": "minecraft:block/acacia_button",
"uvlock": true,
"x": 90,
"y": 90
},
"face=wall,facing=east,powered=true": {
"model": "minecraft:block/acacia_button_pressed",
"uvlock": true,
"x": 90,
"y": 90
},
"face=wall,facing=north,powered=false": {
"model": "minecraft:block/acacia_button",
"uvlock": true,
"x": 90
},
"face=wall,facing=north,powered=true": {
"model": "minecraft:block/acacia_button_pressed",
"uvlock": true,
"x": 90
},
"face=wall,facing=south,powered=false": {
"model": "minecraft:block/acacia_button",
"uvlock": true,
"x": 90,
"y": 180
},
"face=wall,facing=south,powered=true": {
"model": "minecraft:block/acacia_button_pressed",
"uvlock": true,
"x": 90,
"y": 180
},
"face=wall,facing=west,powered=false": {
"model": "minecraft:block/acacia_button",
"uvlock": true,
"x": 90,
"y": 270
},
"face=wall,facing=west,powered=true": {
"model": "minecraft:block/acacia_button_pressed",
"uvlock": true,
"x": 90,
"y": 270
}
}
}

View File

@@ -0,0 +1,124 @@
{
"variants": {
"facing=east,half=lower,hinge=left,open=false": {
"model": "minecraft:block/acacia_door_bottom_left"
},
"facing=east,half=lower,hinge=left,open=true": {
"model": "minecraft:block/acacia_door_bottom_left_open",
"y": 90
},
"facing=east,half=lower,hinge=right,open=false": {
"model": "minecraft:block/acacia_door_bottom_right"
},
"facing=east,half=lower,hinge=right,open=true": {
"model": "minecraft:block/acacia_door_bottom_right_open",
"y": 270
},
"facing=east,half=upper,hinge=left,open=false": {
"model": "minecraft:block/acacia_door_top_left"
},
"facing=east,half=upper,hinge=left,open=true": {
"model": "minecraft:block/acacia_door_top_left_open",
"y": 90
},
"facing=east,half=upper,hinge=right,open=false": {
"model": "minecraft:block/acacia_door_top_right"
},
"facing=east,half=upper,hinge=right,open=true": {
"model": "minecraft:block/acacia_door_top_right_open",
"y": 270
},
"facing=north,half=lower,hinge=left,open=false": {
"model": "minecraft:block/acacia_door_bottom_left",
"y": 270
},
"facing=north,half=lower,hinge=left,open=true": {
"model": "minecraft:block/acacia_door_bottom_left_open"
},
"facing=north,half=lower,hinge=right,open=false": {
"model": "minecraft:block/acacia_door_bottom_right",
"y": 270
},
"facing=north,half=lower,hinge=right,open=true": {
"model": "minecraft:block/acacia_door_bottom_right_open",
"y": 180
},
"facing=north,half=upper,hinge=left,open=false": {
"model": "minecraft:block/acacia_door_top_left",
"y": 270
},
"facing=north,half=upper,hinge=left,open=true": {
"model": "minecraft:block/acacia_door_top_left_open"
},
"facing=north,half=upper,hinge=right,open=false": {
"model": "minecraft:block/acacia_door_top_right",
"y": 270
},
"facing=north,half=upper,hinge=right,open=true": {
"model": "minecraft:block/acacia_door_top_right_open",
"y": 180
},
"facing=south,half=lower,hinge=left,open=false": {
"model": "minecraft:block/acacia_door_bottom_left",
"y": 90
},
"facing=south,half=lower,hinge=left,open=true": {
"model": "minecraft:block/acacia_door_bottom_left_open",
"y": 180
},
"facing=south,half=lower,hinge=right,open=false": {
"model": "minecraft:block/acacia_door_bottom_right",
"y": 90
},
"facing=south,half=lower,hinge=right,open=true": {
"model": "minecraft:block/acacia_door_bottom_right_open"
},
"facing=south,half=upper,hinge=left,open=false": {
"model": "minecraft:block/acacia_door_top_left",
"y": 90
},
"facing=south,half=upper,hinge=left,open=true": {
"model": "minecraft:block/acacia_door_top_left_open",
"y": 180
},
"facing=south,half=upper,hinge=right,open=false": {
"model": "minecraft:block/acacia_door_top_right",
"y": 90
},
"facing=south,half=upper,hinge=right,open=true": {
"model": "minecraft:block/acacia_door_top_right_open"
},
"facing=west,half=lower,hinge=left,open=false": {
"model": "minecraft:block/acacia_door_bottom_left",
"y": 180
},
"facing=west,half=lower,hinge=left,open=true": {
"model": "minecraft:block/acacia_door_bottom_left_open",
"y": 270
},
"facing=west,half=lower,hinge=right,open=false": {
"model": "minecraft:block/acacia_door_bottom_right",
"y": 180
},
"facing=west,half=lower,hinge=right,open=true": {
"model": "minecraft:block/acacia_door_bottom_right_open",
"y": 90
},
"facing=west,half=upper,hinge=left,open=false": {
"model": "minecraft:block/acacia_door_top_left",
"y": 180
},
"facing=west,half=upper,hinge=left,open=true": {
"model": "minecraft:block/acacia_door_top_left_open",
"y": 270
},
"facing=west,half=upper,hinge=right,open=false": {
"model": "minecraft:block/acacia_door_top_right",
"y": 180
},
"facing=west,half=upper,hinge=right,open=true": {
"model": "minecraft:block/acacia_door_top_right_open",
"y": 90
}
}
}

View File

@@ -0,0 +1,48 @@
{
"multipart": [
{
"apply": {
"model": "minecraft:block/acacia_fence_post"
}
},
{
"apply": {
"model": "minecraft:block/acacia_fence_side",
"uvlock": true
},
"when": {
"north": "true"
}
},
{
"apply": {
"model": "minecraft:block/acacia_fence_side",
"uvlock": true,
"y": 90
},
"when": {
"east": "true"
}
},
{
"apply": {
"model": "minecraft:block/acacia_fence_side",
"uvlock": true,
"y": 180
},
"when": {
"south": "true"
}
},
{
"apply": {
"model": "minecraft:block/acacia_fence_side",
"uvlock": true,
"y": 270
},
"when": {
"west": "true"
}
}
]
}

View File

@@ -0,0 +1,80 @@
{
"variants": {
"facing=east,in_wall=false,open=false": {
"model": "minecraft:block/acacia_fence_gate",
"uvlock": true,
"y": 270
},
"facing=east,in_wall=false,open=true": {
"model": "minecraft:block/acacia_fence_gate_open",
"uvlock": true,
"y": 270
},
"facing=east,in_wall=true,open=false": {
"model": "minecraft:block/acacia_fence_gate_wall",
"uvlock": true,
"y": 270
},
"facing=east,in_wall=true,open=true": {
"model": "minecraft:block/acacia_fence_gate_wall_open",
"uvlock": true,
"y": 270
},
"facing=north,in_wall=false,open=false": {
"model": "minecraft:block/acacia_fence_gate",
"uvlock": true,
"y": 180
},
"facing=north,in_wall=false,open=true": {
"model": "minecraft:block/acacia_fence_gate_open",
"uvlock": true,
"y": 180
},
"facing=north,in_wall=true,open=false": {
"model": "minecraft:block/acacia_fence_gate_wall",
"uvlock": true,
"y": 180
},
"facing=north,in_wall=true,open=true": {
"model": "minecraft:block/acacia_fence_gate_wall_open",
"uvlock": true,
"y": 180
},
"facing=south,in_wall=false,open=false": {
"model": "minecraft:block/acacia_fence_gate",
"uvlock": true
},
"facing=south,in_wall=false,open=true": {
"model": "minecraft:block/acacia_fence_gate_open",
"uvlock": true
},
"facing=south,in_wall=true,open=false": {
"model": "minecraft:block/acacia_fence_gate_wall",
"uvlock": true
},
"facing=south,in_wall=true,open=true": {
"model": "minecraft:block/acacia_fence_gate_wall_open",
"uvlock": true
},
"facing=west,in_wall=false,open=false": {
"model": "minecraft:block/acacia_fence_gate",
"uvlock": true,
"y": 90
},
"facing=west,in_wall=false,open=true": {
"model": "minecraft:block/acacia_fence_gate_open",
"uvlock": true,
"y": 90
},
"facing=west,in_wall=true,open=false": {
"model": "minecraft:block/acacia_fence_gate_wall",
"uvlock": true,
"y": 90
},
"facing=west,in_wall=true,open=true": {
"model": "minecraft:block/acacia_fence_gate_wall_open",
"uvlock": true,
"y": 90
}
}
}

View File

@@ -0,0 +1,124 @@
{
"variants": {
"attached=false,rotation=0": {
"model": "minecraft:block/acacia_hanging_sign_rot_0"
},
"attached=false,rotation=1": {
"model": "minecraft:block/acacia_hanging_sign_rot_1"
},
"attached=false,rotation=10": {
"model": "minecraft:block/acacia_hanging_sign_rot_2",
"y": 180
},
"attached=false,rotation=11": {
"model": "minecraft:block/acacia_hanging_sign_rot_3",
"y": 180
},
"attached=false,rotation=12": {
"model": "minecraft:block/acacia_hanging_sign_rot_0",
"y": 270
},
"attached=false,rotation=13": {
"model": "minecraft:block/acacia_hanging_sign_rot_1",
"y": 270
},
"attached=false,rotation=14": {
"model": "minecraft:block/acacia_hanging_sign_rot_2",
"y": 270
},
"attached=false,rotation=15": {
"model": "minecraft:block/acacia_hanging_sign_rot_3",
"y": 270
},
"attached=false,rotation=2": {
"model": "minecraft:block/acacia_hanging_sign_rot_2"
},
"attached=false,rotation=3": {
"model": "minecraft:block/acacia_hanging_sign_rot_3"
},
"attached=false,rotation=4": {
"model": "minecraft:block/acacia_hanging_sign_rot_0",
"y": 90
},
"attached=false,rotation=5": {
"model": "minecraft:block/acacia_hanging_sign_rot_1",
"y": 90
},
"attached=false,rotation=6": {
"model": "minecraft:block/acacia_hanging_sign_rot_2",
"y": 90
},
"attached=false,rotation=7": {
"model": "minecraft:block/acacia_hanging_sign_rot_3",
"y": 90
},
"attached=false,rotation=8": {
"model": "minecraft:block/acacia_hanging_sign_rot_0",
"y": 180
},
"attached=false,rotation=9": {
"model": "minecraft:block/acacia_hanging_sign_rot_1",
"y": 180
},
"attached=true,rotation=0": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_0"
},
"attached=true,rotation=1": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_1"
},
"attached=true,rotation=10": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_2",
"y": 180
},
"attached=true,rotation=11": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_3",
"y": 180
},
"attached=true,rotation=12": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_0",
"y": 270
},
"attached=true,rotation=13": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_1",
"y": 270
},
"attached=true,rotation=14": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_2",
"y": 270
},
"attached=true,rotation=15": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_3",
"y": 270
},
"attached=true,rotation=2": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_2"
},
"attached=true,rotation=3": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_3"
},
"attached=true,rotation=4": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_0",
"y": 90
},
"attached=true,rotation=5": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_1",
"y": 90
},
"attached=true,rotation=6": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_2",
"y": 90
},
"attached=true,rotation=7": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_3",
"y": 90
},
"attached=true,rotation=8": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_0",
"y": 180
},
"attached=true,rotation=9": {
"model": "minecraft:block/acacia_hanging_sign_attached_rot_1",
"y": 180
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/acacia_leaves"
}
}
}

View File

@@ -0,0 +1,16 @@
{
"variants": {
"axis=x": {
"model": "minecraft:block/acacia_log_horizontal",
"x": 90,
"y": 90
},
"axis=y": {
"model": "minecraft:block/acacia_log"
},
"axis=z": {
"model": "minecraft:block/acacia_log_horizontal",
"x": 90
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/acacia_planks"
}
}
}

View File

@@ -0,0 +1,10 @@
{
"variants": {
"powered=false": {
"model": "minecraft:block/acacia_pressure_plate"
},
"powered=true": {
"model": "minecraft:block/acacia_pressure_plate_down"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/acacia_sapling"
}
}
}

View File

@@ -0,0 +1,402 @@
{
"multipart": [
{
"apply": {
"model": "minecraft:block/acacia_shelf"
},
"when": {
"facing": "north"
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf",
"y": 90
},
"when": {
"facing": "east"
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf",
"y": 180
},
"when": {
"facing": "south"
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf",
"y": 270
},
"when": {
"facing": "west"
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_unpowered"
},
"when": {
"AND": [
{
"facing": "north"
},
{
"powered": "false"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_unpowered",
"y": 90
},
"when": {
"AND": [
{
"facing": "east"
},
{
"powered": "false"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_unpowered",
"y": 180
},
"when": {
"AND": [
{
"facing": "south"
},
{
"powered": "false"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_unpowered",
"y": 270
},
"when": {
"AND": [
{
"facing": "west"
},
{
"powered": "false"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_unconnected"
},
"when": {
"AND": [
{
"facing": "north"
},
{
"powered": "true"
},
{
"side_chain": "unconnected"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_unconnected",
"y": 90
},
"when": {
"AND": [
{
"facing": "east"
},
{
"powered": "true"
},
{
"side_chain": "unconnected"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_unconnected",
"y": 180
},
"when": {
"AND": [
{
"facing": "south"
},
{
"powered": "true"
},
{
"side_chain": "unconnected"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_unconnected",
"y": 270
},
"when": {
"AND": [
{
"facing": "west"
},
{
"powered": "true"
},
{
"side_chain": "unconnected"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_left"
},
"when": {
"AND": [
{
"facing": "north"
},
{
"powered": "true"
},
{
"side_chain": "left"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_left",
"y": 90
},
"when": {
"AND": [
{
"facing": "east"
},
{
"powered": "true"
},
{
"side_chain": "left"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_left",
"y": 180
},
"when": {
"AND": [
{
"facing": "south"
},
{
"powered": "true"
},
{
"side_chain": "left"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_left",
"y": 270
},
"when": {
"AND": [
{
"facing": "west"
},
{
"powered": "true"
},
{
"side_chain": "left"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_center"
},
"when": {
"AND": [
{
"facing": "north"
},
{
"powered": "true"
},
{
"side_chain": "center"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_center",
"y": 90
},
"when": {
"AND": [
{
"facing": "east"
},
{
"powered": "true"
},
{
"side_chain": "center"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_center",
"y": 180
},
"when": {
"AND": [
{
"facing": "south"
},
{
"powered": "true"
},
{
"side_chain": "center"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_center",
"y": 270
},
"when": {
"AND": [
{
"facing": "west"
},
{
"powered": "true"
},
{
"side_chain": "center"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_right"
},
"when": {
"AND": [
{
"facing": "north"
},
{
"powered": "true"
},
{
"side_chain": "right"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_right",
"y": 90
},
"when": {
"AND": [
{
"facing": "east"
},
{
"powered": "true"
},
{
"side_chain": "right"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_right",
"y": 180
},
"when": {
"AND": [
{
"facing": "south"
},
{
"powered": "true"
},
{
"side_chain": "right"
}
]
}
},
{
"apply": {
"model": "minecraft:block/acacia_shelf_right",
"y": 270
},
"when": {
"AND": [
{
"facing": "west"
},
{
"powered": "true"
},
{
"side_chain": "right"
}
]
}
}
]
}

View File

@@ -0,0 +1,64 @@
{
"variants": {
"rotation=0": {
"model": "minecraft:block/acacia_sign_rot_0"
},
"rotation=1": {
"model": "minecraft:block/acacia_sign_rot_1"
},
"rotation=10": {
"model": "minecraft:block/acacia_sign_rot_2",
"y": 180
},
"rotation=11": {
"model": "minecraft:block/acacia_sign_rot_3",
"y": 180
},
"rotation=12": {
"model": "minecraft:block/acacia_sign_rot_0",
"y": 270
},
"rotation=13": {
"model": "minecraft:block/acacia_sign_rot_1",
"y": 270
},
"rotation=14": {
"model": "minecraft:block/acacia_sign_rot_2",
"y": 270
},
"rotation=15": {
"model": "minecraft:block/acacia_sign_rot_3",
"y": 270
},
"rotation=2": {
"model": "minecraft:block/acacia_sign_rot_2"
},
"rotation=3": {
"model": "minecraft:block/acacia_sign_rot_3"
},
"rotation=4": {
"model": "minecraft:block/acacia_sign_rot_0",
"y": 90
},
"rotation=5": {
"model": "minecraft:block/acacia_sign_rot_1",
"y": 90
},
"rotation=6": {
"model": "minecraft:block/acacia_sign_rot_2",
"y": 90
},
"rotation=7": {
"model": "minecraft:block/acacia_sign_rot_3",
"y": 90
},
"rotation=8": {
"model": "minecraft:block/acacia_sign_rot_0",
"y": 180
},
"rotation=9": {
"model": "minecraft:block/acacia_sign_rot_1",
"y": 180
}
}
}

View File

@@ -0,0 +1,13 @@
{
"variants": {
"type=bottom": {
"model": "minecraft:block/acacia_slab"
},
"type=double": {
"model": "minecraft:block/acacia_planks"
},
"type=top": {
"model": "minecraft:block/acacia_slab_top"
}
}
}

View File

@@ -0,0 +1,209 @@
{
"variants": {
"facing=east,half=bottom,shape=inner_left": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=inner_right": {
"model": "minecraft:block/acacia_stairs_inner"
},
"facing=east,half=bottom,shape=outer_left": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=outer_right": {
"model": "minecraft:block/acacia_stairs_outer"
},
"facing=east,half=bottom,shape=straight": {
"model": "minecraft:block/acacia_stairs"
},
"facing=east,half=top,shape=inner_left": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=inner_right": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=outer_left": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=outer_right": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=straight": {
"model": "minecraft:block/acacia_stairs",
"uvlock": true,
"x": 180
},
"facing=north,half=bottom,shape=inner_left": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=inner_right": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=outer_left": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=outer_right": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=straight": {
"model": "minecraft:block/acacia_stairs",
"uvlock": true,
"y": 270
},
"facing=north,half=top,shape=inner_left": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=inner_right": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=outer_left": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=outer_right": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=straight": {
"model": "minecraft:block/acacia_stairs",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=south,half=bottom,shape=inner_left": {
"model": "minecraft:block/acacia_stairs_inner"
},
"facing=south,half=bottom,shape=inner_right": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=outer_left": {
"model": "minecraft:block/acacia_stairs_outer"
},
"facing=south,half=bottom,shape=outer_right": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=straight": {
"model": "minecraft:block/acacia_stairs",
"uvlock": true,
"y": 90
},
"facing=south,half=top,shape=inner_left": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=inner_right": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=outer_left": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=outer_right": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=straight": {
"model": "minecraft:block/acacia_stairs",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=west,half=bottom,shape=inner_left": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=inner_right": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=outer_left": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=outer_right": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=straight": {
"model": "minecraft:block/acacia_stairs",
"uvlock": true,
"y": 180
},
"facing=west,half=top,shape=inner_left": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=inner_right": {
"model": "minecraft:block/acacia_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=outer_left": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=outer_right": {
"model": "minecraft:block/acacia_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=straight": {
"model": "minecraft:block/acacia_stairs",
"uvlock": true,
"x": 180,
"y": 180
}
}
}

View File

@@ -0,0 +1,68 @@
{
"variants": {
"facing=east,half=bottom,open=false": {
"model": "minecraft:block/acacia_trapdoor_bottom",
"y": 90
},
"facing=east,half=bottom,open=true": {
"model": "minecraft:block/acacia_trapdoor_open",
"y": 90
},
"facing=east,half=top,open=false": {
"model": "minecraft:block/acacia_trapdoor_top",
"y": 90
},
"facing=east,half=top,open=true": {
"model": "minecraft:block/acacia_trapdoor_open",
"x": 180,
"y": 270
},
"facing=north,half=bottom,open=false": {
"model": "minecraft:block/acacia_trapdoor_bottom"
},
"facing=north,half=bottom,open=true": {
"model": "minecraft:block/acacia_trapdoor_open"
},
"facing=north,half=top,open=false": {
"model": "minecraft:block/acacia_trapdoor_top"
},
"facing=north,half=top,open=true": {
"model": "minecraft:block/acacia_trapdoor_open",
"x": 180,
"y": 180
},
"facing=south,half=bottom,open=false": {
"model": "minecraft:block/acacia_trapdoor_bottom",
"y": 180
},
"facing=south,half=bottom,open=true": {
"model": "minecraft:block/acacia_trapdoor_open",
"y": 180
},
"facing=south,half=top,open=false": {
"model": "minecraft:block/acacia_trapdoor_top",
"y": 180
},
"facing=south,half=top,open=true": {
"model": "minecraft:block/acacia_trapdoor_open",
"x": 180
},
"facing=west,half=bottom,open=false": {
"model": "minecraft:block/acacia_trapdoor_bottom",
"y": 270
},
"facing=west,half=bottom,open=true": {
"model": "minecraft:block/acacia_trapdoor_open",
"y": 270
},
"facing=west,half=top,open=false": {
"model": "minecraft:block/acacia_trapdoor_top",
"y": 270
},
"facing=west,half=top,open=true": {
"model": "minecraft:block/acacia_trapdoor_open",
"x": 180,
"y": 90
}
}
}

View File

@@ -0,0 +1,19 @@
{
"variants": {
"facing=east": {
"model": "minecraft:block/acacia_wall_hanging_sign",
"y": 270
},
"facing=north": {
"model": "minecraft:block/acacia_wall_hanging_sign",
"y": 180
},
"facing=south": {
"model": "minecraft:block/acacia_wall_hanging_sign"
},
"facing=west": {
"model": "minecraft:block/acacia_wall_hanging_sign",
"y": 90
}
}
}

View File

@@ -0,0 +1,19 @@
{
"variants": {
"facing=east": {
"model": "minecraft:block/acacia_wall_sign",
"y": 270
},
"facing=north": {
"model": "minecraft:block/acacia_wall_sign",
"y": 180
},
"facing=south": {
"model": "minecraft:block/acacia_wall_sign"
},
"facing=west": {
"model": "minecraft:block/acacia_wall_sign",
"y": 90
}
}
}

View File

@@ -0,0 +1,16 @@
{
"variants": {
"axis=x": {
"model": "minecraft:block/acacia_wood",
"x": 90,
"y": 90
},
"axis=y": {
"model": "minecraft:block/acacia_wood"
},
"axis=z": {
"model": "minecraft:block/acacia_wood",
"x": 90
}
}
}

View File

@@ -0,0 +1,46 @@
{
"variants": {
"powered=false,shape=ascending_east": {
"model": "minecraft:block/activator_rail_raised_ne",
"y": 90
},
"powered=false,shape=ascending_north": {
"model": "minecraft:block/activator_rail_raised_ne"
},
"powered=false,shape=ascending_south": {
"model": "minecraft:block/activator_rail_raised_sw"
},
"powered=false,shape=ascending_west": {
"model": "minecraft:block/activator_rail_raised_sw",
"y": 90
},
"powered=false,shape=east_west": {
"model": "minecraft:block/activator_rail",
"y": 90
},
"powered=false,shape=north_south": {
"model": "minecraft:block/activator_rail"
},
"powered=true,shape=ascending_east": {
"model": "minecraft:block/activator_rail_on_raised_ne",
"y": 90
},
"powered=true,shape=ascending_north": {
"model": "minecraft:block/activator_rail_on_raised_ne"
},
"powered=true,shape=ascending_south": {
"model": "minecraft:block/activator_rail_on_raised_sw"
},
"powered=true,shape=ascending_west": {
"model": "minecraft:block/activator_rail_on_raised_sw",
"y": 90
},
"powered=true,shape=east_west": {
"model": "minecraft:block/activator_rail_on",
"y": 90
},
"powered=true,shape=north_south": {
"model": "minecraft:block/activator_rail_on"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/air"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/allium"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/amethyst_block"
}
}
}

View File

@@ -0,0 +1,30 @@
{
"variants": {
"facing=down": {
"model": "minecraft:block/amethyst_cluster",
"x": 180
},
"facing=east": {
"model": "minecraft:block/amethyst_cluster",
"x": 90,
"y": 90
},
"facing=north": {
"model": "minecraft:block/amethyst_cluster",
"x": 90
},
"facing=south": {
"model": "minecraft:block/amethyst_cluster",
"x": 90,
"y": 180
},
"facing=up": {
"model": "minecraft:block/amethyst_cluster"
},
"facing=west": {
"model": "minecraft:block/amethyst_cluster",
"x": 90,
"y": 270
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/ancient_debris"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/andesite"
}
}
}

View File

@@ -0,0 +1,13 @@
{
"variants": {
"type=bottom": {
"model": "minecraft:block/andesite_slab"
},
"type=double": {
"model": "minecraft:block/andesite"
},
"type=top": {
"model": "minecraft:block/andesite_slab_top"
}
}
}

View File

@@ -0,0 +1,209 @@
{
"variants": {
"facing=east,half=bottom,shape=inner_left": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=inner_right": {
"model": "minecraft:block/andesite_stairs_inner"
},
"facing=east,half=bottom,shape=outer_left": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=outer_right": {
"model": "minecraft:block/andesite_stairs_outer"
},
"facing=east,half=bottom,shape=straight": {
"model": "minecraft:block/andesite_stairs"
},
"facing=east,half=top,shape=inner_left": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=inner_right": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=outer_left": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=outer_right": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=straight": {
"model": "minecraft:block/andesite_stairs",
"uvlock": true,
"x": 180
},
"facing=north,half=bottom,shape=inner_left": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=inner_right": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=outer_left": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=outer_right": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=straight": {
"model": "minecraft:block/andesite_stairs",
"uvlock": true,
"y": 270
},
"facing=north,half=top,shape=inner_left": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=inner_right": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=outer_left": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=outer_right": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=straight": {
"model": "minecraft:block/andesite_stairs",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=south,half=bottom,shape=inner_left": {
"model": "minecraft:block/andesite_stairs_inner"
},
"facing=south,half=bottom,shape=inner_right": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=outer_left": {
"model": "minecraft:block/andesite_stairs_outer"
},
"facing=south,half=bottom,shape=outer_right": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=straight": {
"model": "minecraft:block/andesite_stairs",
"uvlock": true,
"y": 90
},
"facing=south,half=top,shape=inner_left": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=inner_right": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=outer_left": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=outer_right": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=straight": {
"model": "minecraft:block/andesite_stairs",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=west,half=bottom,shape=inner_left": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=inner_right": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=outer_left": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=outer_right": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=straight": {
"model": "minecraft:block/andesite_stairs",
"uvlock": true,
"y": 180
},
"facing=west,half=top,shape=inner_left": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=inner_right": {
"model": "minecraft:block/andesite_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=outer_left": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=outer_right": {
"model": "minecraft:block/andesite_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=straight": {
"model": "minecraft:block/andesite_stairs",
"uvlock": true,
"x": 180,
"y": 180
}
}
}

View File

@@ -0,0 +1,90 @@
{
"multipart": [
{
"apply": {
"model": "minecraft:block/andesite_wall_post"
},
"when": {
"up": "true"
}
},
{
"apply": {
"model": "minecraft:block/andesite_wall_side",
"uvlock": true
},
"when": {
"north": "low"
}
},
{
"apply": {
"model": "minecraft:block/andesite_wall_side",
"uvlock": true,
"y": 90
},
"when": {
"east": "low"
}
},
{
"apply": {
"model": "minecraft:block/andesite_wall_side",
"uvlock": true,
"y": 180
},
"when": {
"south": "low"
}
},
{
"apply": {
"model": "minecraft:block/andesite_wall_side",
"uvlock": true,
"y": 270
},
"when": {
"west": "low"
}
},
{
"apply": {
"model": "minecraft:block/andesite_wall_side_tall",
"uvlock": true
},
"when": {
"north": "tall"
}
},
{
"apply": {
"model": "minecraft:block/andesite_wall_side_tall",
"uvlock": true,
"y": 90
},
"when": {
"east": "tall"
}
},
{
"apply": {
"model": "minecraft:block/andesite_wall_side_tall",
"uvlock": true,
"y": 180
},
"when": {
"south": "tall"
}
},
{
"apply": {
"model": "minecraft:block/andesite_wall_side_tall",
"uvlock": true,
"y": 270
},
"when": {
"west": "tall"
}
}
]
}

View File

@@ -0,0 +1,19 @@
{
"variants": {
"facing=east": {
"model": "minecraft:block/anvil",
"y": 270
},
"facing=north": {
"model": "minecraft:block/anvil",
"y": 180
},
"facing=south": {
"model": "minecraft:block/anvil"
},
"facing=west": {
"model": "minecraft:block/anvil",
"y": 90
}
}
}

View File

@@ -0,0 +1,19 @@
{
"variants": {
"facing=east": {
"model": "minecraft:block/attached_melon_stem",
"y": 180
},
"facing=north": {
"model": "minecraft:block/attached_melon_stem",
"y": 90
},
"facing=south": {
"model": "minecraft:block/attached_melon_stem",
"y": 270
},
"facing=west": {
"model": "minecraft:block/attached_melon_stem"
}
}
}

View File

@@ -0,0 +1,19 @@
{
"variants": {
"facing=east": {
"model": "minecraft:block/attached_pumpkin_stem",
"y": 180
},
"facing=north": {
"model": "minecraft:block/attached_pumpkin_stem",
"y": 90
},
"facing=south": {
"model": "minecraft:block/attached_pumpkin_stem",
"y": 270
},
"facing=west": {
"model": "minecraft:block/attached_pumpkin_stem"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/azalea"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/azalea_leaves"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/azure_bluet"
}
}
}

View File

@@ -0,0 +1,58 @@
{
"multipart": [
{
"apply": [
{
"model": "minecraft:block/bamboo1_age0"
},
{
"model": "minecraft:block/bamboo2_age0"
},
{
"model": "minecraft:block/bamboo3_age0"
},
{
"model": "minecraft:block/bamboo4_age0"
}
],
"when": {
"age": "0"
}
},
{
"apply": [
{
"model": "minecraft:block/bamboo1_age1"
},
{
"model": "minecraft:block/bamboo2_age1"
},
{
"model": "minecraft:block/bamboo3_age1"
},
{
"model": "minecraft:block/bamboo4_age1"
}
],
"when": {
"age": "1"
}
},
{
"apply": {
"model": "minecraft:block/bamboo_small_leaves"
},
"when": {
"leaves": "small"
}
},
{
"apply": {
"model": "minecraft:block/bamboo_large_leaves"
},
"when": {
"leaves": "large"
}
}
]
}

View File

@@ -0,0 +1,13 @@
{
"variants": {
"axis=x": {
"model": "minecraft:block/bamboo_block_x"
},
"axis=y": {
"model": "minecraft:block/bamboo_block_y"
},
"axis=z": {
"model": "minecraft:block/bamboo_block_z"
}
}
}

View File

@@ -0,0 +1,118 @@
{
"variants": {
"face=ceiling,facing=east,powered=false": {
"model": "minecraft:block/bamboo_button",
"x": 180,
"y": 270
},
"face=ceiling,facing=east,powered=true": {
"model": "minecraft:block/bamboo_button_pressed",
"x": 180,
"y": 270
},
"face=ceiling,facing=north,powered=false": {
"model": "minecraft:block/bamboo_button",
"x": 180,
"y": 180
},
"face=ceiling,facing=north,powered=true": {
"model": "minecraft:block/bamboo_button_pressed",
"x": 180,
"y": 180
},
"face=ceiling,facing=south,powered=false": {
"model": "minecraft:block/bamboo_button",
"x": 180
},
"face=ceiling,facing=south,powered=true": {
"model": "minecraft:block/bamboo_button_pressed",
"x": 180
},
"face=ceiling,facing=west,powered=false": {
"model": "minecraft:block/bamboo_button",
"x": 180,
"y": 90
},
"face=ceiling,facing=west,powered=true": {
"model": "minecraft:block/bamboo_button_pressed",
"x": 180,
"y": 90
},
"face=floor,facing=east,powered=false": {
"model": "minecraft:block/bamboo_button",
"y": 90
},
"face=floor,facing=east,powered=true": {
"model": "minecraft:block/bamboo_button_pressed",
"y": 90
},
"face=floor,facing=north,powered=false": {
"model": "minecraft:block/bamboo_button"
},
"face=floor,facing=north,powered=true": {
"model": "minecraft:block/bamboo_button_pressed"
},
"face=floor,facing=south,powered=false": {
"model": "minecraft:block/bamboo_button",
"y": 180
},
"face=floor,facing=south,powered=true": {
"model": "minecraft:block/bamboo_button_pressed",
"y": 180
},
"face=floor,facing=west,powered=false": {
"model": "minecraft:block/bamboo_button",
"y": 270
},
"face=floor,facing=west,powered=true": {
"model": "minecraft:block/bamboo_button_pressed",
"y": 270
},
"face=wall,facing=east,powered=false": {
"model": "minecraft:block/bamboo_button",
"uvlock": true,
"x": 90,
"y": 90
},
"face=wall,facing=east,powered=true": {
"model": "minecraft:block/bamboo_button_pressed",
"uvlock": true,
"x": 90,
"y": 90
},
"face=wall,facing=north,powered=false": {
"model": "minecraft:block/bamboo_button",
"uvlock": true,
"x": 90
},
"face=wall,facing=north,powered=true": {
"model": "minecraft:block/bamboo_button_pressed",
"uvlock": true,
"x": 90
},
"face=wall,facing=south,powered=false": {
"model": "minecraft:block/bamboo_button",
"uvlock": true,
"x": 90,
"y": 180
},
"face=wall,facing=south,powered=true": {
"model": "minecraft:block/bamboo_button_pressed",
"uvlock": true,
"x": 90,
"y": 180
},
"face=wall,facing=west,powered=false": {
"model": "minecraft:block/bamboo_button",
"uvlock": true,
"x": 90,
"y": 270
},
"face=wall,facing=west,powered=true": {
"model": "minecraft:block/bamboo_button_pressed",
"uvlock": true,
"x": 90,
"y": 270
}
}
}

View File

@@ -0,0 +1,124 @@
{
"variants": {
"facing=east,half=lower,hinge=left,open=false": {
"model": "minecraft:block/bamboo_door_bottom_left"
},
"facing=east,half=lower,hinge=left,open=true": {
"model": "minecraft:block/bamboo_door_bottom_left_open",
"y": 90
},
"facing=east,half=lower,hinge=right,open=false": {
"model": "minecraft:block/bamboo_door_bottom_right"
},
"facing=east,half=lower,hinge=right,open=true": {
"model": "minecraft:block/bamboo_door_bottom_right_open",
"y": 270
},
"facing=east,half=upper,hinge=left,open=false": {
"model": "minecraft:block/bamboo_door_top_left"
},
"facing=east,half=upper,hinge=left,open=true": {
"model": "minecraft:block/bamboo_door_top_left_open",
"y": 90
},
"facing=east,half=upper,hinge=right,open=false": {
"model": "minecraft:block/bamboo_door_top_right"
},
"facing=east,half=upper,hinge=right,open=true": {
"model": "minecraft:block/bamboo_door_top_right_open",
"y": 270
},
"facing=north,half=lower,hinge=left,open=false": {
"model": "minecraft:block/bamboo_door_bottom_left",
"y": 270
},
"facing=north,half=lower,hinge=left,open=true": {
"model": "minecraft:block/bamboo_door_bottom_left_open"
},
"facing=north,half=lower,hinge=right,open=false": {
"model": "minecraft:block/bamboo_door_bottom_right",
"y": 270
},
"facing=north,half=lower,hinge=right,open=true": {
"model": "minecraft:block/bamboo_door_bottom_right_open",
"y": 180
},
"facing=north,half=upper,hinge=left,open=false": {
"model": "minecraft:block/bamboo_door_top_left",
"y": 270
},
"facing=north,half=upper,hinge=left,open=true": {
"model": "minecraft:block/bamboo_door_top_left_open"
},
"facing=north,half=upper,hinge=right,open=false": {
"model": "minecraft:block/bamboo_door_top_right",
"y": 270
},
"facing=north,half=upper,hinge=right,open=true": {
"model": "minecraft:block/bamboo_door_top_right_open",
"y": 180
},
"facing=south,half=lower,hinge=left,open=false": {
"model": "minecraft:block/bamboo_door_bottom_left",
"y": 90
},
"facing=south,half=lower,hinge=left,open=true": {
"model": "minecraft:block/bamboo_door_bottom_left_open",
"y": 180
},
"facing=south,half=lower,hinge=right,open=false": {
"model": "minecraft:block/bamboo_door_bottom_right",
"y": 90
},
"facing=south,half=lower,hinge=right,open=true": {
"model": "minecraft:block/bamboo_door_bottom_right_open"
},
"facing=south,half=upper,hinge=left,open=false": {
"model": "minecraft:block/bamboo_door_top_left",
"y": 90
},
"facing=south,half=upper,hinge=left,open=true": {
"model": "minecraft:block/bamboo_door_top_left_open",
"y": 180
},
"facing=south,half=upper,hinge=right,open=false": {
"model": "minecraft:block/bamboo_door_top_right",
"y": 90
},
"facing=south,half=upper,hinge=right,open=true": {
"model": "minecraft:block/bamboo_door_top_right_open"
},
"facing=west,half=lower,hinge=left,open=false": {
"model": "minecraft:block/bamboo_door_bottom_left",
"y": 180
},
"facing=west,half=lower,hinge=left,open=true": {
"model": "minecraft:block/bamboo_door_bottom_left_open",
"y": 270
},
"facing=west,half=lower,hinge=right,open=false": {
"model": "minecraft:block/bamboo_door_bottom_right",
"y": 180
},
"facing=west,half=lower,hinge=right,open=true": {
"model": "minecraft:block/bamboo_door_bottom_right_open",
"y": 90
},
"facing=west,half=upper,hinge=left,open=false": {
"model": "minecraft:block/bamboo_door_top_left",
"y": 180
},
"facing=west,half=upper,hinge=left,open=true": {
"model": "minecraft:block/bamboo_door_top_left_open",
"y": 270
},
"facing=west,half=upper,hinge=right,open=false": {
"model": "minecraft:block/bamboo_door_top_right",
"y": 180
},
"facing=west,half=upper,hinge=right,open=true": {
"model": "minecraft:block/bamboo_door_top_right_open",
"y": 90
}
}
}

View File

@@ -0,0 +1,41 @@
{
"multipart": [
{
"apply": {
"model": "minecraft:block/bamboo_fence_post"
}
},
{
"apply": {
"model": "minecraft:block/bamboo_fence_side_north"
},
"when": {
"north": "true"
}
},
{
"apply": {
"model": "minecraft:block/bamboo_fence_side_east"
},
"when": {
"east": "true"
}
},
{
"apply": {
"model": "minecraft:block/bamboo_fence_side_south"
},
"when": {
"south": "true"
}
},
{
"apply": {
"model": "minecraft:block/bamboo_fence_side_west"
},
"when": {
"west": "true"
}
}
]
}

View File

@@ -0,0 +1,64 @@
{
"variants": {
"facing=east,in_wall=false,open=false": {
"model": "minecraft:block/bamboo_fence_gate",
"y": 270
},
"facing=east,in_wall=false,open=true": {
"model": "minecraft:block/bamboo_fence_gate_open",
"y": 270
},
"facing=east,in_wall=true,open=false": {
"model": "minecraft:block/bamboo_fence_gate_wall",
"y": 270
},
"facing=east,in_wall=true,open=true": {
"model": "minecraft:block/bamboo_fence_gate_wall_open",
"y": 270
},
"facing=north,in_wall=false,open=false": {
"model": "minecraft:block/bamboo_fence_gate",
"y": 180
},
"facing=north,in_wall=false,open=true": {
"model": "minecraft:block/bamboo_fence_gate_open",
"y": 180
},
"facing=north,in_wall=true,open=false": {
"model": "minecraft:block/bamboo_fence_gate_wall",
"y": 180
},
"facing=north,in_wall=true,open=true": {
"model": "minecraft:block/bamboo_fence_gate_wall_open",
"y": 180
},
"facing=south,in_wall=false,open=false": {
"model": "minecraft:block/bamboo_fence_gate"
},
"facing=south,in_wall=false,open=true": {
"model": "minecraft:block/bamboo_fence_gate_open"
},
"facing=south,in_wall=true,open=false": {
"model": "minecraft:block/bamboo_fence_gate_wall"
},
"facing=south,in_wall=true,open=true": {
"model": "minecraft:block/bamboo_fence_gate_wall_open"
},
"facing=west,in_wall=false,open=false": {
"model": "minecraft:block/bamboo_fence_gate",
"y": 90
},
"facing=west,in_wall=false,open=true": {
"model": "minecraft:block/bamboo_fence_gate_open",
"y": 90
},
"facing=west,in_wall=true,open=false": {
"model": "minecraft:block/bamboo_fence_gate_wall",
"y": 90
},
"facing=west,in_wall=true,open=true": {
"model": "minecraft:block/bamboo_fence_gate_wall_open",
"y": 90
}
}
}

View File

@@ -0,0 +1,124 @@
{
"variants": {
"attached=false,rotation=0": {
"model": "minecraft:block/bamboo_hanging_sign_rot_0"
},
"attached=false,rotation=1": {
"model": "minecraft:block/bamboo_hanging_sign_rot_1"
},
"attached=false,rotation=10": {
"model": "minecraft:block/bamboo_hanging_sign_rot_2",
"y": 180
},
"attached=false,rotation=11": {
"model": "minecraft:block/bamboo_hanging_sign_rot_3",
"y": 180
},
"attached=false,rotation=12": {
"model": "minecraft:block/bamboo_hanging_sign_rot_0",
"y": 270
},
"attached=false,rotation=13": {
"model": "minecraft:block/bamboo_hanging_sign_rot_1",
"y": 270
},
"attached=false,rotation=14": {
"model": "minecraft:block/bamboo_hanging_sign_rot_2",
"y": 270
},
"attached=false,rotation=15": {
"model": "minecraft:block/bamboo_hanging_sign_rot_3",
"y": 270
},
"attached=false,rotation=2": {
"model": "minecraft:block/bamboo_hanging_sign_rot_2"
},
"attached=false,rotation=3": {
"model": "minecraft:block/bamboo_hanging_sign_rot_3"
},
"attached=false,rotation=4": {
"model": "minecraft:block/bamboo_hanging_sign_rot_0",
"y": 90
},
"attached=false,rotation=5": {
"model": "minecraft:block/bamboo_hanging_sign_rot_1",
"y": 90
},
"attached=false,rotation=6": {
"model": "minecraft:block/bamboo_hanging_sign_rot_2",
"y": 90
},
"attached=false,rotation=7": {
"model": "minecraft:block/bamboo_hanging_sign_rot_3",
"y": 90
},
"attached=false,rotation=8": {
"model": "minecraft:block/bamboo_hanging_sign_rot_0",
"y": 180
},
"attached=false,rotation=9": {
"model": "minecraft:block/bamboo_hanging_sign_rot_1",
"y": 180
},
"attached=true,rotation=0": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_0"
},
"attached=true,rotation=1": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_1"
},
"attached=true,rotation=10": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_2",
"y": 180
},
"attached=true,rotation=11": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_3",
"y": 180
},
"attached=true,rotation=12": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_0",
"y": 270
},
"attached=true,rotation=13": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_1",
"y": 270
},
"attached=true,rotation=14": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_2",
"y": 270
},
"attached=true,rotation=15": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_3",
"y": 270
},
"attached=true,rotation=2": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_2"
},
"attached=true,rotation=3": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_3"
},
"attached=true,rotation=4": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_0",
"y": 90
},
"attached=true,rotation=5": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_1",
"y": 90
},
"attached=true,rotation=6": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_2",
"y": 90
},
"attached=true,rotation=7": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_3",
"y": 90
},
"attached=true,rotation=8": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_0",
"y": 180
},
"attached=true,rotation=9": {
"model": "minecraft:block/bamboo_hanging_sign_attached_rot_1",
"y": 180
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/bamboo_mosaic"
}
}
}

View File

@@ -0,0 +1,13 @@
{
"variants": {
"type=bottom": {
"model": "minecraft:block/bamboo_mosaic_slab"
},
"type=double": {
"model": "minecraft:block/bamboo_mosaic"
},
"type=top": {
"model": "minecraft:block/bamboo_mosaic_slab_top"
}
}
}

View File

@@ -0,0 +1,209 @@
{
"variants": {
"facing=east,half=bottom,shape=inner_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=inner_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner"
},
"facing=east,half=bottom,shape=outer_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=outer_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer"
},
"facing=east,half=bottom,shape=straight": {
"model": "minecraft:block/bamboo_mosaic_stairs"
},
"facing=east,half=top,shape=inner_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=inner_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=outer_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=outer_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=straight": {
"model": "minecraft:block/bamboo_mosaic_stairs",
"uvlock": true,
"x": 180
},
"facing=north,half=bottom,shape=inner_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=inner_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=outer_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=outer_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=straight": {
"model": "minecraft:block/bamboo_mosaic_stairs",
"uvlock": true,
"y": 270
},
"facing=north,half=top,shape=inner_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=inner_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=outer_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=outer_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=straight": {
"model": "minecraft:block/bamboo_mosaic_stairs",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=south,half=bottom,shape=inner_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner"
},
"facing=south,half=bottom,shape=inner_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=outer_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer"
},
"facing=south,half=bottom,shape=outer_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=straight": {
"model": "minecraft:block/bamboo_mosaic_stairs",
"uvlock": true,
"y": 90
},
"facing=south,half=top,shape=inner_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=inner_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=outer_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=outer_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=straight": {
"model": "minecraft:block/bamboo_mosaic_stairs",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=west,half=bottom,shape=inner_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=inner_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=outer_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=outer_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=straight": {
"model": "minecraft:block/bamboo_mosaic_stairs",
"uvlock": true,
"y": 180
},
"facing=west,half=top,shape=inner_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=inner_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=outer_left": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=outer_right": {
"model": "minecraft:block/bamboo_mosaic_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=straight": {
"model": "minecraft:block/bamboo_mosaic_stairs",
"uvlock": true,
"x": 180,
"y": 180
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/bamboo_planks"
}
}
}

View File

@@ -0,0 +1,10 @@
{
"variants": {
"powered=false": {
"model": "minecraft:block/bamboo_pressure_plate"
},
"powered=true": {
"model": "minecraft:block/bamboo_pressure_plate_down"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/bamboo_sapling"
}
}
}

View File

@@ -0,0 +1,402 @@
{
"multipart": [
{
"apply": {
"model": "minecraft:block/bamboo_shelf"
},
"when": {
"facing": "north"
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf",
"y": 90
},
"when": {
"facing": "east"
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf",
"y": 180
},
"when": {
"facing": "south"
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf",
"y": 270
},
"when": {
"facing": "west"
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_unpowered"
},
"when": {
"AND": [
{
"facing": "north"
},
{
"powered": "false"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_unpowered",
"y": 90
},
"when": {
"AND": [
{
"facing": "east"
},
{
"powered": "false"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_unpowered",
"y": 180
},
"when": {
"AND": [
{
"facing": "south"
},
{
"powered": "false"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_unpowered",
"y": 270
},
"when": {
"AND": [
{
"facing": "west"
},
{
"powered": "false"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_unconnected"
},
"when": {
"AND": [
{
"facing": "north"
},
{
"powered": "true"
},
{
"side_chain": "unconnected"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_unconnected",
"y": 90
},
"when": {
"AND": [
{
"facing": "east"
},
{
"powered": "true"
},
{
"side_chain": "unconnected"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_unconnected",
"y": 180
},
"when": {
"AND": [
{
"facing": "south"
},
{
"powered": "true"
},
{
"side_chain": "unconnected"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_unconnected",
"y": 270
},
"when": {
"AND": [
{
"facing": "west"
},
{
"powered": "true"
},
{
"side_chain": "unconnected"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_left"
},
"when": {
"AND": [
{
"facing": "north"
},
{
"powered": "true"
},
{
"side_chain": "left"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_left",
"y": 90
},
"when": {
"AND": [
{
"facing": "east"
},
{
"powered": "true"
},
{
"side_chain": "left"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_left",
"y": 180
},
"when": {
"AND": [
{
"facing": "south"
},
{
"powered": "true"
},
{
"side_chain": "left"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_left",
"y": 270
},
"when": {
"AND": [
{
"facing": "west"
},
{
"powered": "true"
},
{
"side_chain": "left"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_center"
},
"when": {
"AND": [
{
"facing": "north"
},
{
"powered": "true"
},
{
"side_chain": "center"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_center",
"y": 90
},
"when": {
"AND": [
{
"facing": "east"
},
{
"powered": "true"
},
{
"side_chain": "center"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_center",
"y": 180
},
"when": {
"AND": [
{
"facing": "south"
},
{
"powered": "true"
},
{
"side_chain": "center"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_center",
"y": 270
},
"when": {
"AND": [
{
"facing": "west"
},
{
"powered": "true"
},
{
"side_chain": "center"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_right"
},
"when": {
"AND": [
{
"facing": "north"
},
{
"powered": "true"
},
{
"side_chain": "right"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_right",
"y": 90
},
"when": {
"AND": [
{
"facing": "east"
},
{
"powered": "true"
},
{
"side_chain": "right"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_right",
"y": 180
},
"when": {
"AND": [
{
"facing": "south"
},
{
"powered": "true"
},
{
"side_chain": "right"
}
]
}
},
{
"apply": {
"model": "minecraft:block/bamboo_shelf_right",
"y": 270
},
"when": {
"AND": [
{
"facing": "west"
},
{
"powered": "true"
},
{
"side_chain": "right"
}
]
}
}
]
}

View File

@@ -0,0 +1,64 @@
{
"variants": {
"rotation=0": {
"model": "minecraft:block/bamboo_sign_rot_0"
},
"rotation=1": {
"model": "minecraft:block/bamboo_sign_rot_1"
},
"rotation=10": {
"model": "minecraft:block/bamboo_sign_rot_2",
"y": 180
},
"rotation=11": {
"model": "minecraft:block/bamboo_sign_rot_3",
"y": 180
},
"rotation=12": {
"model": "minecraft:block/bamboo_sign_rot_0",
"y": 270
},
"rotation=13": {
"model": "minecraft:block/bamboo_sign_rot_1",
"y": 270
},
"rotation=14": {
"model": "minecraft:block/bamboo_sign_rot_2",
"y": 270
},
"rotation=15": {
"model": "minecraft:block/bamboo_sign_rot_3",
"y": 270
},
"rotation=2": {
"model": "minecraft:block/bamboo_sign_rot_2"
},
"rotation=3": {
"model": "minecraft:block/bamboo_sign_rot_3"
},
"rotation=4": {
"model": "minecraft:block/bamboo_sign_rot_0",
"y": 90
},
"rotation=5": {
"model": "minecraft:block/bamboo_sign_rot_1",
"y": 90
},
"rotation=6": {
"model": "minecraft:block/bamboo_sign_rot_2",
"y": 90
},
"rotation=7": {
"model": "minecraft:block/bamboo_sign_rot_3",
"y": 90
},
"rotation=8": {
"model": "minecraft:block/bamboo_sign_rot_0",
"y": 180
},
"rotation=9": {
"model": "minecraft:block/bamboo_sign_rot_1",
"y": 180
}
}
}

View File

@@ -0,0 +1,13 @@
{
"variants": {
"type=bottom": {
"model": "minecraft:block/bamboo_slab"
},
"type=double": {
"model": "minecraft:block/bamboo_planks"
},
"type=top": {
"model": "minecraft:block/bamboo_slab_top"
}
}
}

View File

@@ -0,0 +1,209 @@
{
"variants": {
"facing=east,half=bottom,shape=inner_left": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=inner_right": {
"model": "minecraft:block/bamboo_stairs_inner"
},
"facing=east,half=bottom,shape=outer_left": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=outer_right": {
"model": "minecraft:block/bamboo_stairs_outer"
},
"facing=east,half=bottom,shape=straight": {
"model": "minecraft:block/bamboo_stairs"
},
"facing=east,half=top,shape=inner_left": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=inner_right": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=outer_left": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=outer_right": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=straight": {
"model": "minecraft:block/bamboo_stairs",
"uvlock": true,
"x": 180
},
"facing=north,half=bottom,shape=inner_left": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=inner_right": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=outer_left": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=outer_right": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=straight": {
"model": "minecraft:block/bamboo_stairs",
"uvlock": true,
"y": 270
},
"facing=north,half=top,shape=inner_left": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=inner_right": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=outer_left": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=outer_right": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=straight": {
"model": "minecraft:block/bamboo_stairs",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=south,half=bottom,shape=inner_left": {
"model": "minecraft:block/bamboo_stairs_inner"
},
"facing=south,half=bottom,shape=inner_right": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=outer_left": {
"model": "minecraft:block/bamboo_stairs_outer"
},
"facing=south,half=bottom,shape=outer_right": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=straight": {
"model": "minecraft:block/bamboo_stairs",
"uvlock": true,
"y": 90
},
"facing=south,half=top,shape=inner_left": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=inner_right": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=outer_left": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=outer_right": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=straight": {
"model": "minecraft:block/bamboo_stairs",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=west,half=bottom,shape=inner_left": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=inner_right": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=outer_left": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=outer_right": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=straight": {
"model": "minecraft:block/bamboo_stairs",
"uvlock": true,
"y": 180
},
"facing=west,half=top,shape=inner_left": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=inner_right": {
"model": "minecraft:block/bamboo_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=outer_left": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=outer_right": {
"model": "minecraft:block/bamboo_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=straight": {
"model": "minecraft:block/bamboo_stairs",
"uvlock": true,
"x": 180,
"y": 180
}
}
}

View File

@@ -0,0 +1,68 @@
{
"variants": {
"facing=east,half=bottom,open=false": {
"model": "minecraft:block/bamboo_trapdoor_bottom",
"y": 90
},
"facing=east,half=bottom,open=true": {
"model": "minecraft:block/bamboo_trapdoor_open",
"y": 90
},
"facing=east,half=top,open=false": {
"model": "minecraft:block/bamboo_trapdoor_top",
"y": 90
},
"facing=east,half=top,open=true": {
"model": "minecraft:block/bamboo_trapdoor_open",
"x": 180,
"y": 270
},
"facing=north,half=bottom,open=false": {
"model": "minecraft:block/bamboo_trapdoor_bottom"
},
"facing=north,half=bottom,open=true": {
"model": "minecraft:block/bamboo_trapdoor_open"
},
"facing=north,half=top,open=false": {
"model": "minecraft:block/bamboo_trapdoor_top"
},
"facing=north,half=top,open=true": {
"model": "minecraft:block/bamboo_trapdoor_open",
"x": 180,
"y": 180
},
"facing=south,half=bottom,open=false": {
"model": "minecraft:block/bamboo_trapdoor_bottom",
"y": 180
},
"facing=south,half=bottom,open=true": {
"model": "minecraft:block/bamboo_trapdoor_open",
"y": 180
},
"facing=south,half=top,open=false": {
"model": "minecraft:block/bamboo_trapdoor_top",
"y": 180
},
"facing=south,half=top,open=true": {
"model": "minecraft:block/bamboo_trapdoor_open",
"x": 180
},
"facing=west,half=bottom,open=false": {
"model": "minecraft:block/bamboo_trapdoor_bottom",
"y": 270
},
"facing=west,half=bottom,open=true": {
"model": "minecraft:block/bamboo_trapdoor_open",
"y": 270
},
"facing=west,half=top,open=false": {
"model": "minecraft:block/bamboo_trapdoor_top",
"y": 270
},
"facing=west,half=top,open=true": {
"model": "minecraft:block/bamboo_trapdoor_open",
"x": 180,
"y": 90
}
}
}

View File

@@ -0,0 +1,19 @@
{
"variants": {
"facing=east": {
"model": "minecraft:block/bamboo_wall_hanging_sign",
"y": 270
},
"facing=north": {
"model": "minecraft:block/bamboo_wall_hanging_sign",
"y": 180
},
"facing=south": {
"model": "minecraft:block/bamboo_wall_hanging_sign"
},
"facing=west": {
"model": "minecraft:block/bamboo_wall_hanging_sign",
"y": 90
}
}
}

View File

@@ -0,0 +1,19 @@
{
"variants": {
"facing=east": {
"model": "minecraft:block/bamboo_wall_sign",
"y": 270
},
"facing=north": {
"model": "minecraft:block/bamboo_wall_sign",
"y": 180
},
"facing=south": {
"model": "minecraft:block/bamboo_wall_sign"
},
"facing=west": {
"model": "minecraft:block/bamboo_wall_sign",
"y": 90
}
}
}

View File

@@ -0,0 +1,56 @@
{
"variants": {
"facing=down,open=false": {
"model": "minecraft:block/barrel",
"x": 180
},
"facing=down,open=true": {
"model": "minecraft:block/barrel_open",
"x": 180
},
"facing=east,open=false": {
"model": "minecraft:block/barrel",
"x": 90,
"y": 90
},
"facing=east,open=true": {
"model": "minecraft:block/barrel_open",
"x": 90,
"y": 90
},
"facing=north,open=false": {
"model": "minecraft:block/barrel",
"x": 90
},
"facing=north,open=true": {
"model": "minecraft:block/barrel_open",
"x": 90
},
"facing=south,open=false": {
"model": "minecraft:block/barrel",
"x": 90,
"y": 180
},
"facing=south,open=true": {
"model": "minecraft:block/barrel_open",
"x": 90,
"y": 180
},
"facing=up,open=false": {
"model": "minecraft:block/barrel"
},
"facing=up,open=true": {
"model": "minecraft:block/barrel_open"
},
"facing=west,open=false": {
"model": "minecraft:block/barrel",
"x": 90,
"y": 270
},
"facing=west,open=true": {
"model": "minecraft:block/barrel_open",
"x": 90,
"y": 270
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/barrier"
}
}
}

View File

@@ -0,0 +1,16 @@
{
"variants": {
"axis=x": {
"model": "minecraft:block/basalt",
"x": 90,
"y": 90
},
"axis=y": {
"model": "minecraft:block/basalt"
},
"axis=z": {
"model": "minecraft:block/basalt",
"x": 90
}
}
}

View File

@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/beacon"
}
}
}

View File

@@ -0,0 +1,20 @@
{
"variants": {
"": [
{
"model": "minecraft:block/bedrock"
},
{
"model": "minecraft:block/bedrock_mirrored"
},
{
"model": "minecraft:block/bedrock",
"y": 180
},
{
"model": "minecraft:block/bedrock_mirrored",
"y": 180
}
]
}
}

Some files were not shown because too many files have changed in this diff Show More