添加README
一个砧前置库模组(当前基于 NeoForge)。为扩展模组提供通用砧方块(完好/开裂/损坏三态)与行为系统。
<id>_anvil
<id>_chipped_anvil
<id>_damaged_anvil
data/<modid>/cerealanvillib/anvil_families.json
AnvilRegistry.registerFamily(family, factory)
AnvilBlock
AnvilLibBlock
AnvilBlockMixin
AnvilBehavior
AnvilBehaviorRegistry
AnvilCreativeTabs
AnvilBlockTransforms
getToolModifiedState
ItemAbility
AnvilAssetsProvider
AnvilRecipesProvider
AnvilDataMaps
GatherDataEvent
在 neoforge.mods.toml 声明对 cerealanvillib 的依赖(required、ordering="AFTER"),然后在主类构造阶段注册砧族。
neoforge.mods.toml
cerealanvillib
required
ordering="AFTER"
放置 data/<modid>/cerealanvillib/anvil_families.json:
{ "schemaVersion": 1, "families": [ { "id": "copper", "textures": { "body": "minecraft:block/copper_block", "top": "minecraft:block/copper_block", "top_side": "minecraft:block/copper_block" }, "block": { "mapColor": "copper", "strength": [5.0, 6.0], "sound": "copper" }, "behavior": { "damageChance": 0.1, "burnTime": 0 } } ] }
字段说明:
id
[a-z0-9_]+
textures.body/top/top_side
textures.crack_chipped/crack_damaged
displayNameKey
block.<modid>.<id>_anvil
block
requiresCorrectToolForDrops
behavior
JSON 清单方式使用 lib 内置的通用方块类(AnvilLibBlock),适用于纯外观砧。
需要自定义方块类(氧化、去皮等交互)时使用:
AnvilFamily family = new AnvilFamily( id, MODID, null, "minecraft:block/copper_block", "minecraft:block/copper_block", "minecraft:block/copper_block", "cerealanvillib:block/crack_chipped", "cerealanvillib:block/crack_damaged", MapColor.METAL, 5.0F, 1200.0F, SoundType.COPPER, true, AnvilBehavior.VANILLA); AnvilRegistry.registerFamily(family, (properties, displayName, state) -> new MyAnvilBlock(properties, displayName));
自定义方块必须继承 AnvilLibBlock,以便 GUI、损坏 Mixin 与行为系统正常工作。
AnvilCreativeTabs.register(CREATIVE_MODE_TABS, MODID, () -> iconFamily, mySorter);
AnvilBlockTransforms.register(unstrippedFamily, strippedFamily, ItemAbilities.AXE_STRIP, true);
modEventBus.addListener(MyDataGen::onGatherData); // 在 GatherDataEvent 中注册 provider
lib 提供以下 datagen 类(org.cerealstudio.lib.anvil.datagen):
org.cerealstudio.lib.anvil.datagen
cerealanvillib:block/template_anvil{,_chipped,_damaged}
AnvilLootTableProvider
survives_explosion
Predicate
### / " P " / PPP
next_oxidation_stage
waxed
lib 不在数据生成目标 mod 列表内,由扩展模组在自身 GatherDataEvent 中注册这些 provider。src/generated/resources 由 data run 生成并提交到版本库。
src/generated/resources
AnvilBehaviorRegistry(org.cerealstudio.lib.anvil.api)是行为查询的单一事实来源:
org.cerealstudio.lib.anvil.api
get(BlockState)
AnvilBehavior.VANILLA
# 构建(产物在 build/libs/) ./gradlew build # 发布到本地 repo(供扩展模组依赖) ./gradlew publish # 数据生成(输出到 src/generated/resources) ./gradlew runData # 客户端 / 服务端 ./gradlew runClient ./gradlew runServer
GNU AGPL-3.0。裂纹纹理来源与署名见 THIRD_PARTY_NOTICES.md。
null
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
Cereal Anvil Lib
一个砧前置库模组(当前基于 NeoForge)。为扩展模组提供通用砧方块(完好/开裂/损坏三态)与行为系统。
功能
<id>_anvil、<id>_chipped_anvil、<id>_damaged_anvil)及对应物品,命名空间为扩展模组的 modid。支持两种注册入口:data/<modid>/cerealanvillib/anvil_families.json,适合纯外观砧AnvilRegistry.registerFamily(family, factory),可传入自定义方块类(如带氧化的铜砧)AnvilBlock,修复与附魔功能与原版一致;lib 以 Mixin 放行所有AnvilLibBlock子类进入 GUI / 摔落损坏流程AnvilBlockMixin委托 lib 的降级链,支持任意扩展方块AnvilBehavior),默认回退原版铁砧行为;AnvilBehaviorRegistry是查询的单一事实来源,预留运行时修改接口AnvilCreativeTabs一键生成”砧合集” tab(标题/图标/按命名空间收集方块),排序可自定义,不声明位置走 NeoForge 默认排序AnvilBlockTransforms注册”源族 → 目标族”的逐状态转换(如去皮、脱蜡),AnvilLibBlock默认实现getToolModifiedState;工具能力(ItemAbility)与蹲下要求由扩展模组声明,lib 不硬编码具体物品AnvilAssetsProvider(blockstate/方块模型/物品模型)、AnvilRecipesProvider(合成配方基类)、AnvilDataMaps(氧化/涂蜡 DataMap 辅助),扩展模组在GatherDataEvent中注册即可生成全部手写 JSON砧模组用法
在
neoforge.mods.toml声明对cerealanvillib的依赖(required、ordering="AFTER"),然后在主类构造阶段注册砧族。方式一:JSON 族清单
放置
data/<modid>/cerealanvillib/anvil_families.json:字段说明:
id:族 id([a-z0-9_]+),决定方块名textures.body/top/top_side:必填,完整纹理资源路径;textures.crack_chipped/crack_damaged:可选,默认使用 lib 自带渐变裂纹displayNameKey:可选,缺省为block.<modid>.<id>_anvil,开裂/损坏自动派生block:可选,默认原版铁砧属性(金属色、硬度 5/1200、铁砧音效);requiresCorrectToolForDrops可选behavior:可选,缺省完全按原版铁砧(损坏 12%、不可燃)JSON 清单方式使用 lib 内置的通用方块类(
AnvilLibBlock),适用于纯外观砧。方式二:Java API
需要自定义方块类(氧化、去皮等交互)时使用:
自定义方块必须继承
AnvilLibBlock,以便 GUI、损坏 Mixin 与行为系统正常工作。可选能力
数据生成
lib 提供以下 datagen 类(
org.cerealstudio.lib.anvil.datagen):AnvilAssetsProvider:为所有已注册砧族生成 blockstate(facing 旋转模板)、方块模型(引用cerealanvillib:block/template_anvil{,_chipped,_damaged})与物品模型AnvilLootTableProvider:生成自掉战利品表(survives_explosion),支持Predicate过滤与自定义掉落物解析器(返回 null 表示方块不掉落)AnvilRecipesProvider:抽象基类,生成合成配方(### / " P " / PPP),原料由扩展模组声明AnvilDataMaps:氧化(next_oxidation_stage)/涂蜡(waxed)DataMap JSON 辅助lib 不在数据生成目标 mod 列表内,由扩展模组在自身
GatherDataEvent中注册这些 provider。src/generated/resources由 data run 生成并提交到版本库。行为系统
AnvilBehaviorRegistry(org.cerealstudio.lib.anvil.api)是行为查询的单一事实来源:get(BlockState):未注册时返回AnvilBehavior.VANILLA(损坏 0.12、不可燃)开发
环境要求
许可证
GNU AGPL-3.0。裂纹纹理来源与署名见 THIRD_PARTY_NOTICES.md。