Skip to content

[FEAT] provisions 餐食模块迁移 #5

Description

@LingshijunRenzy

[FEAT] provisions 餐食模块迁移

背景

Kuayue 1.0 有一个完整的列车餐食系统:手持食品、放置食物(盒饭/饮品/泡面)、流体(可乐/蓝牛)、状态效果(WarmEffect)。代码在 willow.train.kuayue.block.food.*willow.train.kuayue.initial.food.* 中,注册逻辑与主模组的 AllElements 强耦合。

2.0 架构下,这些功能应独立为 provisions 模块(cn.kycraft.kuayue.content.provisions),仅依赖 core 的注册基础设施和 KasugaLib 框架。注册方式混合 Java + 数据驱动 JSON(与 train-parts 模式一致)。

当前状态:模块目录和 gradle 配置均不存在,需从零搭建。

注册架构

  • 放置食物方块: 数据驱动 JSON(provisions.json)+ Java @Context FactoryRegistry 工厂
  • 手持食品 (6种): 纯 Java ItemReg.of()
  • 流体: 纯 Java FluidReg
  • 效果: 纯 Java (NeoForge Registry)
  • 辅助物品: 数据驱动 JSON,复用 simple_item 类型

涉及的系统

子系统 核心互动 注册方式
放置食物 放置 → 食用 → 返还残留物 数据驱动 JSON
手持食品 右键即吃 纯 Java
泡面 干面 → 泡好的面 → 三状态食用 数据驱动 JSON
流体 放置/盛放 纯 Java
效果 被动加成 纯 Java

跨模块交互

corecn.kycraft.kuayue.api 包下新增 FoodProcessor 接口,供 train-parts 等模块实现。泡面的 DriedInstantNoodlesBlockItem 通过 instanceof FoodProcessor 发现加工方块,替代 1.0 对 TeaBoilerBlock 的硬引用。

依赖方向:core ← provisionscore ← train-parts。provisions 对 train-parts 零引用。

Sub-Issues

验收标准

  • provisions 模块编译通过,已加入 settings.gradle
  • 6 种手持食品:营养/饱和度与 1.0 一致
  • 盒饭:两阶段食用,返还午餐盒
  • 可乐/蓝牛:放置、饮用、气泡粒子(可乐)、返还空罐
  • 泡面:干→湿转化 + 三状态机 + WarmEffect
  • 流体:颜色/流速与 1.0 一致,桶可盛放
  • 所有放置食物的状态在重进世界后正确恢复
  • food block 的 JSON 声明被 KasugaLib 自动注册

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions