Skip to content

基础设施:模块骨架 + FoodProcessor + 数据驱动注册 #6

Description

@LingshijunRenzy

背景

provisions 模块的骨架搭建,包括模块目录、build.gradle、模块入口、FoodProcessor 接口定义在 core。手持食品(6 种纯 Item 食物)是此模块最简单的子系统。

1.0 参考:srcRef/1.0/src/main/java/willow/train/kuayue/initial/food/AllFoods.java(手持食品注册)

做什么

1. 模块骨架

  • 创建 modules/provisions/ 目录和 build.gradle(参考 scheduling 模块的 monorepo 模式)
  • 创建 ProvisionsModule.java(模块入口,无需 @mod,core 已持有 @mod("kuayue"))
  • settings.gradle 添加 include("provisions")

2. FoodProcessor 接口(core 模块)

  • cn.kycraft.kuayue.api 包下定义 FoodProcessor 接口
  • canProcess(ItemStack)process(Level, BlockPos, Player, ItemStack) 方法
  • 返回 ProcessResult record(output, sound, particle)

3. 数据驱动注册基础设施

  • 创建 init/ProvisionsFactories.java,标注 @Context
  • 注册 4 个 FactoryRegistry 类型:diet_boxdrinksoaked_noodlesplacement_food
  • 创建 data/kuayue/kasugalib/provisions.json,定义 registry_group + 所有 food block 列表
  • Block 属性(strength、map_color、sound_type)声明在 JSON 而非 Java 中

4. 手持食品(Java 直接注册)

  • 6 种手持食品:ham_sausage、marinated_egg、half_marinated_egg、calcium_milk_biscuits、spicy_fish_tofu、salt_baked_drumsticks
  • 每个用 ItemReg.of("xxx", HandHeldFoodItem::new) 直接注册(不值得数据驱动)
  • 营养/饱和度与 1.0 一致,fast 修饰符

5. 辅助物品(JSON 注册)

  • lunch_box、empty_can、empty_can_blue、monosodium_glutamate、salt
  • 在 provisions.json 中注册,复用内置 simple_item 类型

验收标准

  • provisions 模块编译通过,已加入 settings.gradle
  • 6 种手持食品:食用后获得正确的营养/饱和度
  • FactoryRegistry 注册了所有必需的工厂类型
  • provisions.json 被 KasugaLib 自动发现并正确注册所有 blocks + items

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions