zifeng_s_custom_skill_tree-1.21.1-NeoForge-1.5.1.jar
Curse Maven Snippet
What's new
==================================================
Zifeng Skill Tree — CurseForge 更新报告(双语精简版)
Zifeng Skill Tree — CurseForge Changelog (Bilingual)
Minecraft 1.20.1 Forge + 1.21.1 NeoForge · v1.5.1
==================================================
【版本 Version】v1.5.1
--------------------------------------------------
English Version:
--------------------------------------------------
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
v1.5.1 · 2026-10-10 · 1.20.1 Forge + 1.21.1 NeoForge
MAINTENANCE RELEASE — a crash fix, two new features and three bug fixes
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔴 CRASH FIX
1) Killing mobs crashed the game (1.21.1) while the Spawn Egg drop skill was active.
Cause: the spawn-egg lookup table was built with SpawnEggItem.getType(null). That
call is safe on 1.20.1 but guaranteed to throw on 1.21.1, because the two versions
declare the method with DIFFERENT parameter types: 1.20.1 takes a @Nullable
CompoundTag (null-checked), while 1.21.1 takes an ItemStack and dereferences it
directly. Java passes null to a reference type without complaint, so the code
compiled and only blew up at runtime.
Worse, the exception aborted the table build and left the cache empty, so EVERY
kill re-ran the scan and crashed again -- not an occasional crash, but a crash on
every single kill.
Fix: each version now passes a proper empty argument, and every egg is wrapped in
its own try/catch, so a single faulty mod egg can no longer poison the whole table
(which previously made ALL egg drops silently stop working).
✨ NEW
2) Dark mode for the skill tree (toggle in the in-game Settings panel).
Cause: many players reported that the skill tree screen is too bright.
How: a new SkillTreeTheme class centralises the structural colours (large and inner
panel backgrounds, their borders, and the text drawn on them) and switches them in
one place. Category accent colours and status colours are deliberately left
untouched, so both themes stay readable; dark skill tiles are lifted 10% toward
white so they still stand out from the darker background. Stored client-side.
3) Stick gesture linking (new trigger key on the Stick Tool card).
Cause: players wanted the stick's zone-selection and container-binding gestures to
work with other held items.
How: the Stick Tool card gains a third key slot. Pressing it links the stick
gestures to the item TYPE currently held (stone / sword / furnace...). This is a
REPLACEMENT, not an addition: after linking, only that item type works and the
stick itself stops working. Linking another type replaces the link, and pressing
the key while holding a stick restores the stick. The server reads the main hand
itself, so the link cannot be forged, and the link is stored per player.
⚡ PERFORMANCE
4) Extreme lag and server stalls when a zone job delivered loot into an AE2 network.
Cause: drops were split into max-stack-size piles and inserted one pile at a time,
so 13,016 redstone meant 204 separate AE routing calls, each of which takes a full
snapshot of the storage cell. A single tick stalled for 189 seconds.
How: drops are now aggregated by item type first, so each item type costs exactly
one routing call however large the total is. Measured while removing 1,988,164
blocks: 37 ms, against 35,577 ms before.
5) Zone placement was slow because material was taken one block at a time.
How: material is now taken once per column and placed in a batch.
6) In creative mode, zone placement consumed real materials from the inventory or the
bound container, and stopped with "not enough material" after a few blocks.
How: creative mode (instabuild) now skips material collection entirely -- the held
block is only used as a label, so a whole selection can be filled without consuming
anything.
🔧 FIXES
7) The skill-reset message always reported the wrong refund amount.
Cause: the full-refund and partial-refund messages have a different number of
placeholders (2 versus 3), but the code always passed three arguments. On a full
refund the second placeholder swallowed the refund RATE (100), so it always said
"refunded 100 points" no matter what the real amount was.
How: each branch now passes the matching number of arguments, and the amount comes
directly from the reset call's return value, which is the exact number credited.
8) The leftmost category button (Magic Amplify) was clipped at large UI sizes.
Cause: the row's centring offset went negative once the buttons no longer fitted,
pushing the whole row left and cutting the first button off against the frame.
How: the offset is clamped to zero -- centred when it fits, left-aligned with
horizontal scrolling when it does not.
9) Broken pixels at the corners of the rounded pill buttons.
Cause: the rounded outline drew a single pixel per row, but near the top of an arc
the inset jumps by up to 4 pixels between rows, leaving the outline disconnected.
How: each row now draws the whole horizontal span of the arc it covers, so
consecutive rows share their end pixels and the outline is continuous. Every rounded
rectangle in the screen benefits.
10) The Container Haul skill pulled items out of the accessories slots (Curios).
Cause: the skill moved everything in the open menu except the player inventory and
AE2 device slots, so anything a mod stores on the player was treated as container
contents. Curios slots extend Forge's SlotItemHandler and their backing container is
an internal wrapper, so they never matched the player-inventory check.
How: player-side slots (Curios accessories) are now skipped, matched by package
prefix on the slot class, its implemented interfaces and its backing container.
Opening an accessories screen, or a container GUI that has accessory slots injected
into it, no longer moves your worn items. Containers themselves behave as before.
✅ COMPATIBILITY
✅ Old saves and configs are fully compatible -- no migration needed.
✅ Both platforms identical in features and version: 149 skills + 1 stick-tool
placeholder / 11 columns.
✅ Mod integrations (Goety, Ars Nouveau, Iron's Spells 'n Spellbooks, AE2) remain
optional -- hidden and silent when absent. No hard dependency.
Requirements: Forge 47.3.0+ (1.20.1, Java 17) / NeoForge 21.1.248+ (1.21.1, Java 21). No required dependencies.
Need an energy-generating mod to use the Skill Point Converter (1 skill point = 100,000,000 FE).
--------------------------------------------------
中文版:
--------------------------------------------------
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
v1.5.1 · 2026-10-10 · 1.20.1 Forge + 1.21.1 NeoForge
维护版 · 一项崩服修复 + 两项新功能 + 三项 Bug 修复
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔴 崩服修复
① 开启刷怪蛋掉落技能后击杀生物会崩服(1.21.1)
原因:刷怪蛋查找表用 SpawnEggItem.getType(null) 构建。这个写法在 1.20.1 安全、
在 1.21.1 必然抛异常 —— 因为两版本【同名方法的参数类型不同】:
1.20.1 收 @Nullable CompoundTag(内部有判空),1.21.1 收 ItemStack 且直接解引用。
Java 允许把 null 传给引用类型,所以能编译、只在运行时才炸。
更糟的是表构建中断后缓存仍是空,导致【每次击杀都重扫并再次崩溃】,不是偶发。
做法:两版本各传合法的空参数,且每个蛋单独 try-catch —— 单个模组的蛋有问题
不再拖垮整张表(旧版一旦出错会让【所有蛋掉落静默失效】)。
✨ 新增
② 技能树黑暗模式(游戏内设置面板可切换)
原因:很多玩家反馈技能树界面太亮。
做法:新增 SkillTreeTheme 类集中管理【结构面色】(大/子贴片底、描边、
画在它们上面的文字),一处切换。类别强调色与状态色刻意不动,一深一浅两套
都保留辨识度;深色技能贴片在深色底上朝白提亮 10%,保持浮起感。
存储在客户端本地。
③ 木棍手势链接(木棍工具卡新增触发键)
原因:想把木棍的区域框选、绑容器手势用到其他手持物品上。
做法:木棍工具卡新增第三个键位。按一下把木棍手势链接到当前手持的
【物品类型】(石头/剑/熔炉…)。这是【完全替换】而非追加:链接后只有该类物品能用,
木棍本身失效;再链接其他类型即顶替,手持木棍按一次即恢复。
服务端自读主手,无法伪造;链接按玩家独立存档。
⚡ 性能优化
④ 区域作业向 AE2 网络入容器时引发巨大卡顿
原因:掉落物按单堆上限拆堆后逐堆下单 → 13016 个红石 = 204 次 AE 路由调用,
每次都会对存储元件做全表快照 → 单个 tick 卡住 189 秒。
做法:先按物品类型聚合总数,每个物品只下一次单——无论总量多大都只花一次。
实测:清理 1,988,164 格仅 37 ms(旧版 35,577 ms)。
⑤ 区域放置逐格取料导致慢
做法:改为【每根柱只取一次料】并批量放置。
⑥ 创造模式下区域放置会扣真实材料
原因:创造模式下仍按普通规则扣背包/绑定容器,放几格就“材料不足”中断。
做法:创造模式(instabuild)完全跳过取料 —— 手持方块只当标签,整个选区无限填充。
🔧 修复
⑦ 技能重置提示的返还点数显示错误
原因:全额返还与部分返还两条文案的占位符数量不同(2 个 vs 3 个),
但代码不分流统一传了 3 个参数 → 全额返还时第 2 个占位符吃到了返还率(100),
导致无论实际返还多少都显示“全额返还 100 技能点”。
做法:按分支各传对应数量的参数,金额改用重置接口的返回值(与真正入账完全同源)。
⑧ 技能树类别行最左按钮(魔法增幅)在大尺寸下被裁切
原因:放不下时居中偏移量变为负数 → 整组左移 → 第一个按钮越出边框被裁。
做法:偏移量钳到 0 下限 —— 装得下才居中,装不下贴左边框起 + 横向滚动。
⑨ 类别按钮(胶囊)转角弧线像素断裂
原因:圆角描边每行只画 1 像素,而弧顶处相邻行内缩量可跳变 4 像素,
描边像素互不相邻 → 转角看起来“断开缺角”。
做法:每行改画该行弧线的横向跨度(相邻行共享端点像素),全程无断点。
⑨ 子枫的搬运术会把饰品栏(Curios)里的饰品搬走
原因:原规则是「菜单里除玩家背包与 AE2 设备槽外全搬」,于是任何「模组挂在玩家身上」
的内容都被当成容器内物。Curios 槽继承 Forge 的 SlotItemHandler,背后容器是内部包装对象,
永远不等于玩家背包 → 旧判定天然漏掉它。
做法:现在跳过玩家自身的槽位(饰品栏)—— 按「槽位类 / 实现的接口 / 背后容器」
的包名前缀三重识别。打开饰品栏界面、或打开被注入了饰品槽的容器 GUI,
都不再搬走身上的饰品;容器本身的行为与以前一致。
✅ 兼容性
✅ 旧存档与旧配置完全兼容,无需迁移。
✅ 双平台功能与版本完全一致:149 技能 + 1 工具占位 / 11 列。
✅ 模组联动(Goety / Ars Nouveau / Iron's Spells 'n Spellbooks / AE2)仍为可选,
未装时静默隐藏,无硬依赖。
环境要求:Forge 47.3.0+(1.20.1,Java 17)/ NeoForge 21.1.248+(1.21.1,Java 21)。无必需依赖。
使用星能转换机需要配合一个可以发电的模组(1 技能点 = 1 亿 FE)。
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

