海克斯支持库迎来重大重构更新,这次改动让开发者可以更灵活地自定义海克斯卡牌行为。新版本将HCAD改为抽象类,必须继承后实现三个核心方法,大幅扩展了自定义空间,同时UI界面也加入了滚动条支持,让选择体验更加流畅。
智能速览
HCAD类改为抽象类,需继承并实现三个方法
新增玩家选择、克隆事件、放弃海克斯的回调机制
UI界面重构,支持滚动条和自适应布局
提供完整的NBT数据管理方法集合
指令系统优化,权限等级设为0开放所有玩家
支持单例模式管理类设计,确保数据一致性
精华内容
这次重构不仅是代码层面的优化,更是对整个海克斯系统架构的重新思考。让我们深入了解具体改动和实现方式。
类结构重构
新版本中HCAD类被改造为抽象类,开发者无法直接实例化,必须先继承该基类。需要实现三个核心方法:玩家选择时调用、玩家触发克隆事件时调用(如死亡重生)、玩家放弃海克斯时调用。这种设计让开发者可以更精细地控制每个环节的行为逻辑。
继承示例中展示了如何在构造函数中使用super传递参数,并建议提前定义好静态的ResourceLocation ID,方便后续翻译和管理。ID定义采用模组ID加类名的组合方式,确保唯一性。
管理类实现
推荐采用单例模式创建管理类,通过私有构造方法防止外部实例化。管理类内部维护静态数组存放所有海克斯实例,提供统一的注册方法。
创建海克斯实例需要传入ID、标题翻译键、简介翻译键、品质等级(普通、稀有、史诗、传奇)和图标ItemStack。品质系统直接影响卡牌的稀有度和视觉效果,为游戏平衡提供更多维度。
在主类中通过FMLCommonSetupEvent事件初始化管理类,调用注册方法将所有自定义海克斯加入卡池。事件总线注册确保在适当时机执行初始化逻辑。
UI界面优化
新版本对选择界面进行了彻底重写,加入了底部滚动条支持。当卡片数量较少时自动居中排列,超出屏幕范围则启用横向滚动功能。这一改进解决了多卡片显示不全的问题。
打开选择面板提供两种重载方法,必须传入ServerPlayer对象和品质参数,可选择性传入选择数量限制。实际应用中可以监听玩家右键物品事件,判断特定物品后触发选择界面,同时消耗物品数量。
指令系统更新
指令权限等级调整为0,意味着所有玩家都可以使用。通过`-hex list`指令直接调用控制面板,让普通玩家也能管理已选择的海克斯。指令底层调用getControl方法,与界面选择保持一致的用户体验。
放弃海克斯功能通过flag=2标识触发,会自动调用自定义类中的放弃方法,并从玩家NBT数据中移除对应ID。这种设计让玩家可以灵活调整自己的海克斯组合。
数据管理API
库提供了完整的NBT操作方法集合,包括GET获取玩家所有海克斯ID、SET替换整个数组、ADD添加单个海克斯、REMOVE移除指定海克斯、CLEAR清空所有数据、forContents遍历内容、forSize获取数量等。
这些API让开发者可以精确控制海克斯数据,实现复杂的业务逻辑。所有操作都基于ServerPlayer对象,确保数据同步和服务端权威性。源码中还包含了卡池相关的静态方法,方便扩展功能。