Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## 问题与改动

说明具体问题、最终行为和涉及的模块。

## 兼容性

说明注册 ID、存档、配置与依赖变化,以及必要的升级/回退步骤。

## 验证

列出实际执行的检查与结果;未执行的相关检查说明原因。
68 changes: 61 additions & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,83 @@ name: Build

on: [push, pull_request]

permissions:
contents: read

concurrency:
group: build-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
fetch-depth: 0
fetch-tags: true
persist-credentials: false

- name: Setup JDK 25
uses: actions/setup-java@v4
uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4
with:
java-version: '25'
distribution: 'temurin'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4

# This is needed to be able to run ./gradlew below
# You can run `git update-index --chmod +x gradlew` then remove this step.
- name: Make Gradle wrapper executable
run: chmod +x ./gradlew

- name: Build with Gradle
run: ./gradlew build
- name: Generate client resources
run: ./gradlew :datagen:runClientData

- name: Generate server resources
run: ./gradlew :datagen:runServerData

- name: Verify generated resource snapshots
run: |
python3 scripts/sync_generated_resources.py
git diff --exit-code -- src/core/resources src/wilderness/resources src/barren/resources

- name: Build and run integration tests
run: ./gradlew build collectMods :verification:runGameTest

- name: Verify supported installations
run: |
for modules in core core,wilderness core,barren core,wilderness,barren; do
./gradlew :smoke:runGameTest -PtestModules="$modules"
done

- name: Verify distributable module set
shell: bash
run: |
set -euo pipefail
test "$(find build/distributions/mods -maxdepth 1 -name '*.jar' | wc -l)" -eq 3
for module in core wilderness barren; do
files=(build/distributions/mods/wild_wind_"${module}"-mc*.jar)
test "${#files[@]}" -eq 1
test -f "${files[0]}"
done

- name: Upload test reports
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: WildWind-test-reports
path: |
modules/*/build/test-results/**/*.xml
modules/*/build/reports/tests/**
modules/*/build/runs/**/results.xml
if-no-files-found: ignore
retention-days: 14

- name: Upload distributable mods
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: WildWind-mc26.2
path: build/distributions/mods/*.jar
if-no-files-found: error
21 changes: 21 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,28 @@ bin/

### Minecraft Modding ###
run/
modules/*/logs/
!**/src/**/run/
**/src/generated/**/.cache/
repo/
!**/src/**/repo/

### Local-only files and generated caches ###
.idea/
.cache/
.tools/
.codex/
*.log
*.tmp
*.bak
*.zip
*.class
*.jar
!gradle/wrapper/gradle-wrapper.jar
.env
.env.*
!.env.example
logs/
crash-reports/
Thumbs.db
Desktop.ini
7 changes: 0 additions & 7 deletions .idea/dictionaries/project.xml

This file was deleted.

32 changes: 32 additions & 0 deletions CHANGE_LOG.MD
Original file line number Diff line number Diff line change
@@ -1,3 +1,35 @@
# 2026-10-24 · 树叶使用贴图原色

- 荒野的焚烬木与灵焰木树叶改用无染色方块模型,移除物品的固定橙色/青色叠色;材质按贴图原色显示,保留透明像素和正常光照。
- 飘落叶片不再读取群系叶色,分别使用固定橙色/青色。同步修改模型生成器,重新生成资源时保留这一规则。

# 2026-10-24 · 署名属性书与附魔台熔炼

- 核心属性记录器将主手/副手的书与笔直接转换为署名书,书名显示“目标名称(注册ID)”,作者为玩家。保留原始/过滤笔记;满页不转换;已署名书不再次写入。
- 长名称完整保存在物品显示名称中,内部标题遵守原版 32 字符上限,避免存档与同步错误。
- 显式将熔炼加入附魔台候选标签,保留现有等级、权重及经验消耗规则。新增真实附魔台菜单测试,验证四类挖掘工具和普通书的随机获取及附魔应用。

# 2026-10-23 · 书与笔属性记录器

- 核心新增潜行右键方块/实体记录属性,保留书中原有页,剩余空间不足时不写入。
- 支持硬度、基础爆炸抗性、工具、火焰、红石、活塞、注册 ID、燃料/加工时间、可再生名单等字段。
- 读取当前原版硫方怪原型及实际物理属性修改器,支持数据包调整;不适用/未知项显示 ×。
- 新增分页单元测试、3 组 GameTest,并验证核心单独安装和客户端实际字体排版。

---

# 2026-10-23 · 三模组拆分

- 按最新归属拆分 `wild_wind_core`、`wild_wind_wilderness`、`wild_wind_barren`,各有入口、注册代码、资源与发行 JAR。
- 荒野/瘠土分别依赖核心;只有荒野需要 GeckoLib。保留共享创造分页和蟹钳/熔炼联动。
- 杜鹃木、窑炉及通用玩法归核心;两种下界木材、生物、状态效果与焦灰植物归荒野;仙人球归瘠土。
- 暂时移除自定义部件制箭系统及原版制箭台替换行为,保留已完成的延展药水箭。
- 数据生成快照随源码保存;更新 README、进度、开发指南和 CI。
- 本地验证:11 项单元测试、24 组 GameTest、四种服务端安装组合,核心/完整组合客户端资源加载通过。
- 旧 `ww_hfas:*` 注册 ID 无自动存档迁移;升级前备份并用新世界验证。结构配置与结构资源兼容命名空间保留。

---

# Changelog

All notable changes to the Wild Wind Module project will be documented in this file.
Expand Down
9 changes: 9 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# 贡献指南

从目标开发分支创建主题分支,通过 Pull Request 提交改动。提交说明应描述具体行为与原因;保持改动可审查,不提交 IDE 设置、凭据、运行世界、缓存或构建产物。遵守仓库已有分项许可并保留作者与资源来源。

功能放入对应模块:核心不反向依赖可选扩展;扩展分别依赖核心。公共交互通过核心 API、事件或数据标签完成。新增注册 ID 必须使用所属模块的命名空间,涉及 ID、配置或存档变更时说明迁移与回退方式。

使用 JDK 25 与仓库 Gradle Wrapper。构建、单元测试、GameTest、数据生成及四种安装组合命令见 [开发指南](docs/DEVELOPMENT.md)。修改生成器时提交生成资源快照,并验证重新生成后无差异。按改动范围更新测试、功能文档与进度。

提交前执行 `git diff --check` 和适用测试。PR 中写明问题、最终行为、验证结果及兼容性限制;等待 CI 通过和分支规则要求的审核。不要强制推送受保护分支或绕过审核。
103 changes: 103 additions & 0 deletions PROGRESS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# 原野之风 · 项目进度

最后更新:**2026-10-24**

当前阶段:**功能开发与测试,尚未发布稳定版**

运行环境:Minecraft **26.2** · NeoForge **26.2.0.93** · Java **25** · 模组版本 **1.0.1**

## 进度总览

**当前已交付功能清单:19 / 19 项已实现**

```text
已交付功能实现 [████████████████████] 100% 19 / 19
本地单元测试 [████████████████████] 100% 12 / 12 通过
本地游戏测试 [████████████████████] 100% 28 / 28 通过
```

> 功能进度条只统计下面列出的 19 项已交付内容,包含本次开发及已合并的上游功能;不代表整个模组、未来规划或人工验收全部完成。测试进度表示已有测试的通过比例,不代表代码覆盖率。完整项目的最终范围尚未确定,因此不估算总完成百分比。

## 已落实的模块划分

| 编号 | 模组 ID | 功能归属 |
| --- | --- | --- |
| 0 核心 | `wild_wind_core` | 杜鹃木及功能方块、羊毛拆线、挣脱蜘蛛网、骷髅近战、耕地保护、窑炉、熔炼;另保留结构生成与七种材料;书与笔属性记录器 |
| 1 荒野更新 | `wild_wind_wilderness` | 灵焰木、焚烬木、泥猪、泥沼蟹、恐鱼、窒息、沉溺、焦灰草方块/焦土/焦灰草丛/焦灰枝条;保留延展药水箭 |
| 2 瘠土更新 | `wild_wind_barren` | 仙人球 |

已拆分入口、代码、注册器、Mixin、资源、元数据与发行 JAR。荒野、瘠土分别依赖核心;只有荒野需要 GeckoLib。自定义部件制箭系统暂时移除。

## 已完成功能

| 编号 | 状态 | 功能 | 已实现内容 |
| --- | --- | --- | --- |
| 01 | ✅ | 版本升级与模块拆分 | 适配 Minecraft 26.2 / NeoForge;按最新归属输出三个独立模组,保留结构配置命名空间。 |
| 02 | ✅ | 可配置结构生成 | JSON 定义结构,独立 NBT 模板目录;支持群系、间距、概率、高度、旋转和地形条件;提供列表、已生成结构最近坐标查询与生成位置搜索。 |
| 03 | ✅ | 木材与植物基础内容 | 焚烬木、灵焰木、杜鹃木基础方块套件;树木配置、去皮、配方及部分燃料;已有植物方块注册。模组树叶的方块/物品使用贴图原色,落叶粒子固定颜色。其他木材配套及视觉整理见下方待办。 |
| 04 | ✅ | 泥猪 | 成年/幼年模型和贴图,原版猪动画与音效,繁殖与刷怪蛋,沼泽和红树林沼泽自然生成。ID:`wild_wind_wilderness:muddy_pig`。 |
| 05 | ✅ | 上游生物与道具整合 | 合并泥沼蟹、恐鱼、生物桶、刷怪蛋、万用蟹钳及延展药水;食人鱼显示名改为恐鱼,保留 `piranha` 路径,但新命名空间不自动兼容旧存档。 |
| 06 | ✅ | 七种普通物品 | 浮萍、鱿鱼须、熟鱿鱼须、煎蛋、烤种子、熟蛙腿、生蛙腿;图标与翻译齐备,按当前要求全部作为普通材料注册。 |
| 07 | ✅ | 羊毛拆线 | 任意颜色羊毛 + 剪刀无序合成 2 个线;返还剪刀,损耗 1 点耐久并受耐久附魔影响;支持自动合成器。 |
| 08 | ✅ | 蜘蛛网挣脱 | 通常连续移动 30 刻、下坠进入后 160 刻破网;停止移动或离开重置;排除蜘蛛、洞穴蜘蛛、旁观玩家与飞行中的创造玩家。 |
| 09 | ✅ | 沉溺、窒息与呼吸规则 | `sink` 限制名单内实体在流体中上浮;`choke` 加快缺氧;实现水下免缺氧名单、两份效果名单及蝌蚪/美西螈离水特例。 |
| 10 | ✅ | 熔炼附魔 | `melting` 可由附魔台随机附到挖掘工具或书;按熔炉配方转换挖掘掉落,每件消耗 1 点经验;精准采集优先,时运先计算数量;整次经验不足不触发。 |
| 11 | ✅ | 骷髅近战设定 | 骷髅、流浪者、沼骸、焦骸生成时有 10% 概率使用石剑与近战 AI;后三者分别附加缓慢、中毒、虚弱。 |
| 12 | ✅ | 耕地保护 | 穿戴摔落缓冲盔甲或具有缓降效果的实体落到耕地上时,不会使耕地退化。 |
| 13 | ✅ | 模组专属分页 | 模组物品统一进入“原野之风”创造分页;包括药水、两种延展箭和熔炼附魔书;全局搜索可用。 |
| 14 | ✅ | 窑炉 | 100 刻烧炼、原料筛选、燃料、漏斗、经验、比较器、命名与锁定;新生成石匠屋添加窑炉;暂用原版熔炉模型和界面。 |
| 15 | ✅ | 杜鹃木告示牌 | 站立/墙面放置,双面文字、染色、发光、涂蜡、含水与数据保护;配方、掉落和燃料;补齐 26.2 贴图布局。 |
| 16 | ✅ | 悬挂式杜鹃木告示牌 | 吊顶/墙面放置、链条及横杆行为,双面编辑、染色、发光、涂蜡;配方、掉落和燃料。 |
| 17 | ✅ | 杜鹃木展示架 | 三槽整组交换;红石连接交换快捷栏 3/6/9 格;比较器输出 0–7;漏斗、存档和底部对齐设置。 |
| 18 | ✅ | 延展之箭与实体 | `wild_wind_wilderness:tipped_arrow` / `wild_wind_wilderness:arrow`;普通 450 刻、长效 1200 刻;合成、交易、英雄礼物、弓弩与发射器;落地 600 刻后退化为普通箭。 |
| 19 | ✅ | 书与笔属性记录器 | 核心:潜行右键方块/实体,直接转换为署名属性书,显示“目标名称(注册ID)”,作者为玩家;保留笔记并分页,满页不转换;缺失项 ×;实际硫方怪原型与物理参数;可再生标签扩展。 |

## 工程与验证记录

- [x] 私有仓库 `cuccuc377-dev/WildWindMod` 保留来源、代码、资源、测试及构建流程。
- [x] 三个发行模块分别编译,开发生成器与测试模组不进入发行集合。
- [x] 12 项单元测试、28 组综合 GameTest 通过,含署名书转换和真实附魔台熔炼获取。
- [x] 核心、核心+荒野、核心+瘠土、全部模块四种服务端安装组合通过。
- [x] 核心单独安装与全模块客户端完成资源加载,自动检查告示牌及已安装生物资源。
- [x] 数据生成与快照同步流程已建立,普通构建无需预先生成资源。
- [x] 移除自定义制箭台、菜单、方块实体、部件组件及旧区块替换逻辑。
- [ ] 人工验收告示牌编辑、荧光文字、展示架物品显示,以及多人联机与长期存档。

测试统计为本次本地验证结果,不代表覆盖率。历史 CI 构建基线为 `aeccc22`;新拆分版本的远端状态以 GitHub Actions 为准。

## 后续事项与已知限制

| 状态 | 项目 | 当前情况 |
| --- | --- | --- |
| 暂时移除 | 自定义部件制箭系统 | 恢复时需重新设计并验证完整流程;延展药水箭保留。 |
| 待完成 | 其他木材配套 | 船、焚烬木/灵焰木告示牌、盆栽树苗未注册,不能作为已完成内容。 |
| 待整理 | 既有材质警告 | 客户端仍报告未注册木材占位模型、焦灰草方块的旧纹理缺失;本次未重绘材质。 |
| 待验证 | 存档迁移 | 新 `wild_wind_*` ID 未自动映射旧 `ww_hfas:*`,需备份并优先用新测试世界。 |
| 待统一 | 许可证元数据 | 构建属性中的许可标识与仓库分项声明有差异,待维护者决定。 |
| 待验收 | 稳定发布 | 多人联机、人工视觉及长期存档测试尚未完成。 |

本次记录器验证:新增 1 项分页单元测试和 3 组 GameTest;核心独立安装和客户端实际字体排版检查通过。

## 功能文档索引

- [项目说明与获取命令](README.md)
- [书与笔属性记录器](docs/BOOK_INSPECTION.md)
- [结构生成配置与坐标查询](docs/STRUCTURES.md)
- [泥猪模型、生成与测试](docs/MUDDY_PIG.md)
- [合成、状态效果、附魔和生物规则](docs/GAMEPLAY.md)
- [窑炉](docs/KILN.md)
- [杜鹃木功能方块与延展之箭](docs/AZALEA_AND_REACH_ARROWS.md)
- [开发指南与待完善事项](docs/DEVELOPMENT.md)
- [原始功能需求](docs/specifications/) · [项目来源](docs/PROVENANCE.md)

## 更新记录

| 日期 | 进度变更 |
| --- | --- |
| 2026-10-23 | 建立进度文档,汇总当前 19 项已交付功能、测试结果、GitHub 构建状态及未完成事项。 |
| 2026-10-23 | 模块规划更新为 0「核心」、1「荒野更新」、2「瘠土更新」,同步中英文名称(当时为规划,现已落实)。 |
| 2026-10-23 | 三个规划模组 ID 统一采用 `wild_wind_` 前缀:`wild_wind_core`、`wild_wind_wilderness`、`wild_wind_barren`(当时为规划,现已落实)。 |

| 2026-10-23 | 按最新清单完成三模组拆分及四种安装组合验证,移除自定义制箭系统,更新资源快照与 CI。 |

维护约定:每次交付功能后更新对应条目、统计分母、进度条和日期;测试结果注明已验证的提交或构建记录;仅完成注册或占位资源的功能继续标为开发中。
Loading
Loading