
enchantlib-example
以下是一些适用于EnchantLib的示例模组。
EnchantLib 示例模组
English | 中文
这是 EnchantLib 的官方示例模组,通过 12 个自定义附魔完整演示了 EnchantLib API 的用法,可直接作为模组开发模板使用。
- Mod ID:
enchantlib-examplemod - 版本: 1.0.1
- 依赖: Minecraft 26.2 · Fabric Loader ≥ 0.19.3 · Fabric API · EnchantLib ≥ 1.0.1
- 许可证: MIT
这是什么
本模组并非追求游戏平衡性,而是用具体附魔实例来演示 EnchantLib 的每类 API:从最简单的“注册一个附魔”到高级的“Display 实体旋转视觉 + 标记引爆”。开发者可阅读源码理解每个 API 的用法,或直接复制源码结构作为新模组的起点。
源码按“每个附魔一个文件”拆分,入口只做调度,便于逐个阅读:
examplemod/
ExampleModEnchantments.java # 入口:委托子模块 + 互斥组/战利品/村民交易
enchantment/
DisguiseEnchantments.java # 4 个伪装合并 + EntityCategory + LIVING_ENTITY_TICK
AutoSmeltEnchantment.java # MODIFY_BLOCK_DROPS + SmeltingLookup
SlimeSlayerEnchantment.java # MODIFY_DAMAGE + POST_ATTACK 范围溅射
ExecutionerEnchantment.java # MODIFY_DAMAGE 条件增减伤
RetributionEnchantment.java # AFTER_DAMAGE 监听 + MODIFY_DAMAGE
SilentPactEnchantment.java # FOOD_REGEN 压制 + AFTER_DEATH 击杀回血
HeartburnEnchantment.java # POST_ATTACK 标记 + LIVING_ENTITY_TICK 持续伤害
EchoMarkEnchantment.java # PROJECTILE_HIT 标记 + AFTER_DAMAGE 引爆
FrostEnchantment.java # POST_ATTACK 视觉 + Display 实体旋转
12 个附魔一览
| 名称 | 等级 | 适用物品 | 效果 | 演示的 API |
|---|---|---|---|---|
亡灵伪装 undead_disguise |
I | 头盔 | 穿戴时玩家被标记为亡灵,亡灵生物不再锁定玩家 | EntityCategory + LIVING_ENTITY_TICK |
水生伪装 aquatic_disguise |
I | 头盔 | 玩家被标记为水生生物,水生生物不再攻击 | 同上(4 个伪装共享同一文件,共用 tick 回调) |
灾厄村民伪装 illager_disguise |
I | 头盔 | 玩家被标记为灾厄村民,灾厄村民不再攻击 | 同上 |
节肢动物伪装 arthropod_disguise |
I | 头盔 | 玩家被标记为节肢动物,节肢动物不再攻击 | 同上 |
自动熔炼 auto_smelt |
I | 镐/锹 | 破坏方块直接掉落熔炼产物,并获得熔炼经验加成 | MODIFY_BLOCK_DROPS + SmeltingLookup |
史莱姆杀手 slime_slayer |
V | 剑/斧 | 对史莱姆类生物每级 +2.5 伤害;溅射击中 20 格半径内 等级+1 个目标 |
MODIFY_DAMAGE + POST_ATTACK 溅射 |
处刑人 executioner |
III | 剑/斧 | 高生命时减伤 / 低生命时增伤;阈值随等级变化 | MODIFY_DAMAGE 条件分支 |
复仇 retribution |
II | 剑/斧 | 受到伤害后 5 秒内,下一次攻击造成 +30%/+50% 原始伤害 | AFTER_DAMAGE 全局监听 + EntityCounter + MODIFY_DAMAGE |
沉默契约 silent_pact |
II | 胸甲 | 压制自然回复;击杀恢复 2×等级 点生命值 |
FOOD_REGEN 拦截 + AFTER_DEATH |
烧心 heartburn |
II | 剑 | 攻击施加持续真实伤害标记(每秒 2%/3% 最大生命值)+ 火焰粒子 | POST_ATTACK 标记 + LIVING_ENTITY_TICK 持续伤害 |
回声标记 echo_mark |
II | 弓 | 箭矢命中留下 4 秒标记;下次命中时引爆,造成已损失生命值 50% 的伤害 | PROJECTILE_HIT + AFTER_DAMAGE 引爆 |
冰霜 frost |
II | 剑 | 施加缓慢效果 + 3 个冰块展示实体不规则旋转 + 雪花粒子 | POST_ATTACK + LIVING_ENTITY_TICK + Display 实体 |
获取途径演示
示例模组还演示了 EnchantLib 的获取途径 API,让附魔真正融入玩家的游戏流程:
| 途径 | 涉及附魔 | 演示的 API |
|---|---|---|
| 简易地牢 / 废弃矿井(30%) | 史莱姆杀手、处刑人 | LootInjectionBuilder 多表注入 |
| 沙漠神殿 / 丛林神庙(25%) | 复仇、亡灵伪装、节肢动物伪装 | 多附魔合并注入 |
| 末地城宝藏(40%) | 烧心、冰霜 | 高稀有度注入 |
| 林地府邸(30%) | 回声标记 | 单附魔注入 |
| 远古城市(35%) | 沉默契约 | 宝藏附魔(仅此途径;不对交易和附魔台开放) |
| 沉船补给(20%) | 自动熔炼 | 工具类附魔注入 |
| 沉船宝藏 / 海底废墟(30%) | 水生伪装 | 按类别分发至对应结构 |
| 掠夺者前哨站(25%) | 灾厄村民伪装 | 同上 |
| 图书管理员自动出售 | 7 个战斗/工具附魔 | TradeableEnchantmentsBuilder 添加至 #minecraft:tradeable |
| 武器匠 3 级 | 烧心(附魔钻石剑) | VillagerTradeBuilder 自定义交易 |
| 武器匠 4 级 | 处刑人(附魔钻石剑) | 同上 |
| 制图师 3 级 | 回声标记(附魔书) | 同上 |
| 皮匠 2 级 | 自动熔炼(附魔书) | 同上 |
| 牧师 4 级 | 冰霜(附魔书) | 同上 |
| 盔甲匠 2 级 | 4 个伪装(附魔铁头盔,4 选 1) | 多附魔随机交易 |
互斥组:4 个伪装附魔互斥(不能共存于同一头盔);烧心与原版火焰附加互斥。
如何运行
本项目是一个独立的 Fabric 模组项目。你需要先构建前置 EnchantLib 得到 jar,然后将其放入 libs/ 后再编译运行。
1. 构建前置 EnchantLib
git clone <enchantlib-repo>
cd enchantlib
.\gradlew build # 生成 build/libs/enchantlib-26.2-1.0.1.jar
EnchantLib 构建所需的 Fabric API 本地 jar 请参阅前置仓库的 README。
2. 准备本地依赖
将以下 jar 复制到本项目的 libs/ 目录:
libs/
enchantlib-26.2-1.0.1.jar # 上一步的输出
fabric-api-26.2.jar # Fabric API 运行时容器(JarJar,内嵌所有子模块)
fabric-api-base-2.0.4.jar # 编译类来源(EnchantLib API 的传递依赖)
fabric-command-api-v2-3.1.0.jar
fabric-entity-events-v1-5.0.5.jar
fabric-events-interaction-v0-5.2.6.jar
fabric-lifecycle-events-v1-4.1.3.jar
fabric-loot-api-v3-3.0.17.jar
fabric-permission-api-v1-1.0.3.jar
这些 jar 可从 Fabric API 0.155.2+26.2 发布包中提取(运行时容器 + 展平的子模块 jar)。
3. 构建与运行
cd example-mod
.\gradlew runServer # 启动示例模组服务端
.\gradlew runClient # 启动示例模组客户端(连接本地服务端)
.\gradlew build # 生成 build/libs/enchantlib-examplemod-1.0.1.jar
服务端启动后,玩家加入时会自动接收资源包(附魔本地化名称)。使用 /enchantlib list 可查看全部 12 个附魔,使用 /enchantlib give <id> [level] 可直接对手持物品附魔以便测试。
打包产物 enchantlib-examplemod-1.0.1.jar 必须与 enchantlib-26.2-1.0.1.jar 一起放入服务端的 mods/ 目录。
作为开发模板
如果你想基于示例模组编写自己的附魔模组,可以参考本项目的结构作为模板:
- 将
ExampleModEnchantments重命名为你的入口类,并删除不需要的附魔子模块 - 保留
resolveEnchantment公共辅助方法和MOD_ID常量 - 按照
enchantment/XxxEnchantment.java模式为每个附魔新增文件:register负责注册,registerCallbacks负责绑定事件,私有静态方法实现回调
每个附魔文件都是独立的:包含自己的 ID 常量、Holder 字段、事件回调,互不影响,便于阅读和维护。
相关文档
- EnchantLib 开发者手册 — 见前置 enchantlib 仓库的 docs/developer-guide.md(完整 API 参考)
作者
liluo23 · MIT 许可证
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。