Skip to content

CraneAttribute 鹤属性

一款脚本驱动的模块化属性引擎,现已发布,插件永久免费

设计理念

在过去一年半(2024–2025)的时间里,我在使用 AttributePlus 作为核心插件开发服务器,和维护 AttributeMM 的过程中,遇到了不少令人困扰的问题,例如:

  1. 扩展性受限
    早期版本中,我始终无法对属性触发器进行扩展,也无法修改属性处理器。无奈之下,只能借助一些非正规手段实现所需功能——这一点在 AttributeMM 3 的历代版本中体现得尤为明显,为此我耗费了大量精力。

  2. API 行为不一致
    调用 AttributeAPI.addPersistentSourceAttribute(...) 时,若将 time 参数设为 -1,并不会被视为永久生效;然而通过命令直接赋予持久化属性源时,却可以正确识别为永久。这种不一致性给开发带来了不必要的困惑。

  3. 内部方法变更缺乏兼容性
    我曾依赖 AttributePlus 中一些未公开的方法,例如 setLastAttackTime。但在某次更新中,该方法被重命名为 setLastAttackMillis,导致我的插件直接报错。为了兼容不同版本,我不得不额外编写版本判断和适配逻辑。

  4. 脚本环境陈旧
    编写脚本属性时,系统仍基于较老的 ECMAScript 5.1 标准,缺乏现代 JavaScript 特性支持。再加上频繁的依赖导入与服务端重启,极大降低了开发效率。

  5. 版本跟进滞后
    在相当长的一段时间内,AttributePlus 未能及时适配新版 TabooLib,导致无法兼容 Minecraft 1.21。这让我在尝试升级服务器版本时陷入被动。

  6. 框架过于封闭
    最核心的问题在于,AttributePlus 给我的感觉是“不够可控”。开发者几乎只能在其预设的框架内进行有限扩展,而难以真正突破既有结构。部分原因也源于 Kotlin 的设计哲学——例如类默认不可继承,必须显式添加 open 修饰符(类似于 Java 中的 final)。

这并不代表 AttributePlus 是一款劣质插件——恰恰相反,它是一款极为出色的插件。尤其是 3.x 版本的发布,堪称一次“创世纪”般的革新。通过 bStats 平台的数据可以清晰看到,AttributePlus 在属性类插件中几乎处于统治地位,广受开发者与服务器管理者的信赖与青睐。

在等待 AttributePlus 跟进 Minecraft 1.21 的日子里,“CraneAttribute”的念头悄然萌芽。我渴望打造一个更自由、更可控的属性系统——哪怕最初只为满足自己的需求。

介绍

🧩 纯模块化设计
插件由多个独立功能模块组成,支持自由组合、按需启用。结构清晰、扩展方便、维护简单——新增功能无需改动核心,关闭模块也不会影响整体运行。

📜 属性由脚本驱动
支持使用 JavaScript 与 Groovy 动态编写属性逻辑。Groovy 更可进一步用于深度功能扩展——从数值计算、状态联动到系统集成,一切皆可脚本化!

CPU 友好型架构
通过在内存中缓存关键数据与计算结果,避免重复运算,显著降低 CPU 负担。虽然内存占用略高(约增加几十 MB),但换来的是更低的 CPU 开销与更高的运行效率。

面向高版本持续进化
积极适配 Minecraft 1.21+ 及后续版本,未来将深度结合新特性,为你解锁更多创意玩法!

🔌 兼容部分 AttributePlus 附属生态(需 Caaaat 桥接)
通过轻量中间件 Caaaat,CraneAttribute 可使用为 AttributePlus 开发的操作属性源类的附属插件。无需重写逻辑,即可复用现有玩法模块——让旧生态在新框架中继续生效!

🎮 极高可玩性
CraneAttribute 本身不预设具体玩法,仅提供模块化框架与脚本驱动能力。所有属性、行为、规则均可完全自定义——插件有多强,取决于你的想象力!


CraneAttribute —— 不是给你一套玩法,而是给你创造玩法的能力。
如果你正在开发一整套 RPG 系统、技能机制或复杂属性体系,那么我极度推荐你使用!

📺 点击查看视频介绍(制作中)

警告

当前处于开发测试阶段,插件可能存在 BUG、功能缺失!

支持版本

理论支持 1.9 - 1.21.10

提示

仅测试 1.12.2 1.21.8 1.21.10,目前位于 1.21.8 开发

插件依赖

PlaceholderAPI (可选)
MythicMobs (可选)
ProtocolLib (可选)

下载

加入QQ群 CraneCraft - 交流群 下载