基本信息
我的世界Java版本
1.21.1
平台
NeoForge
运行环境
分类

其他链接
创作者
详情信息
许可证 MIT
发布于 2026-10-10
更新于 2026-10-11
Frilien's Magic | 芙莉莲的魔法
基于《葬送的芙莉莲》世界观的 Minecraft 魔法模组
Minecraft 1.21.1 | NeoForge 21.1.250 | MIT License
简介
重现芙莉莲世界中魔法师的战斗与生活。挥舞法杖释放穿透方块的攻击魔法,展开多边形护盾抵御伤害,在村庄中接受流浪魔法使的委托——从击杀僵尸到收集钻石,完成委托获取魔力药水与法术卷轴。
核心功能
法杖系统
| 法杖 | 支持法术 | 中心头像 |
|---|---|---|
| 芙莉莲法杖 | 全部 12 种战斗法术 | frieren_1.png |
| 菲伦法杖 | 攻击魔法 + 防御魔法 | fern.png |
- 使用 2D 贴图 +
neoforge:itemLayers加载器实现自发光渲染 - 第一人称缩放 [1.0, 1.0, 0.7],第三人称 [1.4, 1.4, 0.8],地面掉落 [0.4, 0.4, 0.4]
- 法术-法杖归属表管理:法术需同时满足「已学会」+「法杖支持」才会在轮盘显示
战斗法术(12 种)
| 法术 | 类型 | 伤害 | 说明 |
|---|---|---|---|
| 佐尔特拉克 (Zoltraak) | 攻击 | 520 | 蓝白渐变激光,穿透方块,5 格范围群体伤害,射程随魔力上限增强 |
| 破灭之雷 (Judradjim) | 攻击 | — | 雷电打击 |
| 地狱业火 (Vollzanbel) | 攻击 | — | 火焰魔法 |
| 破坏黑光 (BlackLight) | 攻击 | 25 | 黑色光束 |
| 魔力挤压 (Mana Strike) | 攻击 | — | 魔力冲击 |
| 爆破魔法 | 攻击 | — | 爆炸半径 6 格,破坏方块,自定义魔法伤害(无视护甲) |
| 防御魔法 | 防御 | — | 多边形护盾(参考 Prismatic Shield),吸收伤害,第一人称降低透明度+仅渲染后半球 |
| 飞行魔法 | 实用 | — | 创造飞行机制,切换法术不掉落,死亡后清除需重新施法 |
| 封印魔法 | 控制 | — | 封印目标 |
| 变出刨冰 | 实用 | — | 召唤刨冰食物 |
| 漂浮魔法 | 实用 | — | 漂浮效果 |
| 清洁魔法 | 实用 | — | 修复全身盔甲耐久,消耗与冷却随损坏程度动态变化 |
基础能力(3 种)
| 能力 | 默认效果 | 随魔力上限增强 |
|---|---|---|
| 魔力探知 | 范围 32 格,使生物发光 | 发光持续时间 = 200 + 魔力上限/10 tick |
| 魔力隐匿 | 自定义 buff,完全阻止索敌 | buff 持续时间 = 200 + 魔力上限/10 tick |
| 长距离魔法 | 被动,增加攻击魔法射程 | 射程倍率 = 16 + 魔力上限/500 |
- 基础能力进入世界自动学会,不消耗魔力
- 魔力隐匿使用自定义
ManaConceal效果(三重反索敌:可见度归零 + 目标切换拦截 + 已有目标清除) - 通过按键设置绑定快捷键
法术轮盘
- 按快捷键打开圆形轮盘选择已学法术
- 最多容纳 6 个法术,超出自动分页
- 翻页支持三种操作:滚轮(上滚上一页/下滚下一页)、点击 < / > 箭头、左右方向键
- 中心头像按法杖区分(芙莉莲/菲伦)
- 图标随法术数量动态缩放:
icon_scale = max(0.65, 1.0 - (count - 4) × 0.07) - 图标使用
poseStack.scale渲染避免纹理重复 - 选中法术时图标下方显示中文名称
- 服务端三重校验:手持对应法杖、法杖支持该法术、玩家已学会该法术
魔力系统
- 初始魔力 1000,硬上限 9999999
- 每 5 秒(100 tick)服务端恢复 1 点,自动同步到客户端
- 所有法术消耗魔力,基础能力不消耗
- 魔力条 HUD:
- 左上角默认位置(距边缘 10px),编辑模式下可拖拽定位
- 滚轮缩放(0.5~3.0),默认 1.0
- 显示/隐藏数值文字
- 直接在 Screen 层渲染避免背景模糊
- 文字随 GUI 缩放同步
魔力药水
| 等级 | 效果 |
|---|---|
| Lv1 | 恢复魔力 + 永久提升魔力上限 |
| Lv2 | 恢复魔力 |
| Lv3 | 永久提升魔力上限 |
| Lv4 | 恢复魔力 |
| Lv5 | 永久提升魔力上限 |
- 使用饮用动画(UseAnim.DRINK),消耗时间 32 tick
- 消耗后不产生空玻璃瓶
- Tooltip 显示恢复量和上限提升量
法术卷轴
- 右键使用学习对应战斗法术
- 卷轴物品 ID、模型文件、贴图文件名均与法术名对应
- 卷轴贴图文件名格式:
scroll_<法术id>.png
委托系统
委托村民:
- 自定义实体
QuestVillagerEntity(继承 Villager,固定 Nitwit 纹理) - 村庄中的原版傻子村民有 15% 概率标记为「流浪的魔法使」
- 创造模式可使用刷怪蛋(紫金渐变)直接生成
- 持续发光(
setGlowingTag),不计入生物刷新上限(setPersistenceRequired)
动态委托生成:
- 击杀类(19 种目标)与收集类(22 种目标),按权重随机选取
- 数量在目标 minCount~maxCount 范围内随机生成
- 分三个层级:普通(权重 8-10)、罕见(3-5)、稀有(1-2)
- 不连续重复同一目标
委托绑定:
- 每个委托绑定来源村民 UUID,不同村民委托互不干扰
- 待定委托来自其他村民时,右键新村民会清除旧提议并生成新委托
- 领取奖励仅限来源村民
聊天对话流程:
- 右键村民 → 聊天框显示委托提议(击杀 X × N 或收集 X × N)
- 点击 [接受] / [拒绝]
- 完成委托后右键同个村民 → 显示 [领取奖励]
- 点击领取 → 收集类委托扣除背包物品 → 给予随机奖励
奖励池:
| 奖励 | 权重 | 数量 |
|---|---|---|
| 低级魔力药水 (Lv1/2) | 30%/25% | 1-2 |
| 中级魔力药水 (Lv3/4) | 8%/6% | 1 |
| 高级魔力药水 (Lv5) | 3% | 1 |
| 铁锭 | 15% | 8-32 |
| 金锭 | 10% | 4-16 |
| 红石 | 10% | 16-48 |
| 青金石 | 8% | 8-24 |
| 钻石 | 5% | 1-5 |
| 绿宝石 | 5% | 2-6 |
| 末影珍珠 | 4% | 2-6 |
| 法术卷轴(普通) | 3-4% | 1 |
| 稀有卷轴(佐尔特拉克等) | 1% | 1 |
| 不死图腾 | 1% | 1 |
冷却机制:
- 领取奖励后村民进入 5 分钟冷却(6000 tick)
- 冷却仅阻止生成新委托,不影响查看进度或领取已有奖励
- 各村民冷却独立
自定义伤害类型
friliensmagic:magic— 无视护甲(加入minecraft:bypasses_armor标签)- 佐尔特拉克、黑光、爆破魔法均使用此伤害类型
- 死亡消息类型:
default
创意物品栏
| 标签页 | 内容 |
|---|---|
| 芙莉莲的魔法·法杖 | 芙莉莲法杖、菲伦法杖 |
| 芙莉莲的魔法·卷轴 | 全部法术卷轴 |
| 芙莉莲的魔法·药水 | 魔力药水 Lv1-5 |
| 芙莉莲的魔法·食物 | 刨冰 |
| 芙莉莲的魔法·杂项 | 委托村民刷怪蛋 |
法杖同时保留在原版战斗标签页。
配置项
| 配置键 | 默认值 | 说明 |
|---|---|---|
shieldMaxStrength |
100 | 护盾最大吸收量(HP) |
shieldRadius |
2.5 | 护盾半径(格) |
shieldCastCooldown |
40 | 施法后法杖冷却(tick) |
manaBarX |
10 | 魔力条 X 坐标 |
manaBarY |
10 | 魔力条 Y 坐标 |
manaBarVisible |
true | 魔力条是否显示 |
manaBarScale |
1.0 | 魔力条缩放(0.5~3.0) |
manaBarShowText |
true | 是否显示魔力值文字 |
questVillagerChance |
0.15 | Nitwit 变为委托村民的概率 |
questVillagerCooldown |
6000 | 领奖后村民冷却时间(tick) |
questCollectCheckInterval |
100 | 收集委托进度检查间隔(tick) |
操作说明
- 学习法术:右键对应法术卷轴学习战斗法术
- 法术轮盘:在按键设置中绑定「法术选择轮盘」快捷键,打开轮盘选择已学法术
- 施法:手持法杖右键释放轮盘选中法术
- 基础能力:在按键设置中绑定魔力探知 / 魔力隐匿 / 长距离魔法
- 魔力条:在按键设置中绑定「魔力条编辑」和「魔力条开关」
- 接受委托:在村庄中寻找发光的「流浪的魔法使」(或创造模式用刷怪蛋生成),右键对话
技术特性
- 数据存储:NeoForge AttachmentType 系统(自动序列化、客户端同步、copy-on-death 可选)
MANA:玩家魔力值SHIELD:护盾状态(强度/最大强度/激活)LEARNED_SPELLS:已学法术列表SELECTED_SPELL:当前选中法术(按法杖独立存储)FLIGHT:飞行状态QUEST:玩家委托数据(9 字段,含来源村民 UUID)QUEST_VILLAGER:村民委托标记 + 冷却
- 伤害拦截:
LivingIncomingDamageEvent优先护盾吸收 - 反索敌:
LivingVisibilityEvent+LivingChangeTargetEvent+EntityTickEvent.Pre三重拦截 - 网络通信:CustomPacketPayload + StreamCodec(手动实现 9 字段 QuestData 编解码)
- 线程安全:ConcurrentHashMap、CopyOnWriteArrayList、AtomicInteger
- 源码 JAR:构建时通过
withSourcesJar()自动生成*-sources.jar
构建
./gradlew build
产出文件位于 build/libs/。
许可协议
本项目采用 MIT License 开源协议。


