Fzzy Core

Fzzy Core

用于fzzyhmstrs模组中的API,为Kotlin模组提供各种实用工具

游戏机制

Fzzy Core 模组主横幅

欢迎来到 Fzzy Core!这是一个基础 API,为 fzzyhmstrs(也就是我!)制作的一些 Kotlin 模组提供支持。除了提供许多不同类型的模组都常用的一些基础实用函数外,Fzzy Core 还包含了修饰符系统的基本框架,这是一个灵活而强大的系统,可用于修改……几乎任何东西!

Fzzy Core 已在源码中集成了 KDoc 以供使用指导。我也正在努力创建一个 Wiki!

Bisect Hosting 横幅

Fzzy Core 目前适用于 Fabric。目前暂无移植到 Forge 的计划。

Fzzy Core 是我将 Amethyst Core 拆分为更多功能组件项目的一部分。此模组是这些组件的基础,我目录中的其他 API 都构建于此基础之上(例如用于魔法模组的 Amethyst Core)

编码工具

Fzzy Core 包含多个实用工具,让模组编码变得稍微简单一些!这些工具包括:

  • 一个基础附魔类,可轻松与配置系统集成,以禁用/启用单个附魔。
  • 一个 Text 包装器,可避免多版本模组中常见的麻烦,以及不断处理 Text 更改合并冲突的问题。
  • 一个持久化效果系统,允许创建延迟、重复(或非重复)事件,这些事件不依赖于特定对象的 tick 或其他繁琐实现。
  • 一个粒子创建系统,允许在玩家视野中的特定位置放置客户端粒子。这可以实现物品滴落粒子、火把冒烟等效果。

同步配置系统

创建一个易于管理的配置系统,支持随时间进行版本控制,并自动将服务器配置同步到加入的客户端!

  • 利用 Kotlin 的一些独特功能,实现简洁清晰的代码。
  • 辅助方法用于自动将配置文件更新到新版本,在替换为更新版本之前捕获旧版本的信息。
  • 自动同步功能的简单实现。

自定义风味物品

添加带有风味文本的基础或工具物品!

  • 默认实现只是在语言文件中添加一些新行。
  • 可选方法用于更复杂的文本。
  • 还添加了描述文本,用于解释风味文本的含义,或描述物品功能。

魔力物品

添加一个简单框架,用于创建使用魔力而非传统方式消耗耐久的物品。

修饰符框架

修饰符框架是一个灵活且可扩展的系统,设计为与原版附魔系统并行。修饰符旨在解决我在附魔系统中发现的两个最大问题:它们容易被移除,并且它们不将功能内部化(除了少数伤害方法)。附魔也比它们本可以的样子更无聊,用简单的数字显示其等级。修饰符旨在解决所有这些问题!

  • 修饰符设计为永久性的,更像词缀。例如,砂轮无法移除它们。
  • 修饰符旨在将功能内部化,并且可以作为一个整体调用,而不是零散调用。
  • 修饰符通过“家族树”运作,允许有风味的等级。想象一把剑从“生锈”到“闪亮”再到“辉光”等。

该库附带用于显示修饰符的内置辅助方法。 一个以金色文本显示修饰符的示例提示框

有关这些功能的更多详细信息,请参阅上面的 Wiki 链接。一旦实现,修饰符系统几乎可以做任何事情。例如,Amethyst Core 内置了一个 AugmentModifier,可以从影响魔力消耗和冷却时间,到改变法术伤害或射程,再到触发高级效果,例如在每次成功施法时对施法者周围 12 格半径内的所有生物施加凋零效果。

修饰符可以像传递原版属性修饰符的容器一样简单,也可以比上述 AugmentModifier 复杂得多。如果需要,它们甚至可以纯粹用于风味!

NBT 工具

Fzzy Core 包含一个简单的工具,用于对 NBT 执行一些有用的操作

  • 使用单个辅助方法读写 BlockPos,而不是手动保存 X、Y、Z 坐标或进行 Long 转换。
  • 多个 NbtList 工具,用于读取、添加和移除 NbtList。
  • 一个 ItemStackId 系统,用于为特定的物品堆栈附加唯一标识符。例如,这允许一个物品堆栈绑定到特定的方块实体……甚至更多!
  • 一个辅助方法,用于将非附魔 NBT 从一个物品堆栈转移到另一个。

射线检测工具

一组简单的辅助方法,用于定位对象

  • 服务端射线检测,用于检测游戏对象,无需进行复杂的网络通信。
  • 针对实体、方块以及在某个点(如玩家)周围区域定位事物的辅助方法。
  • 能够检测任意旋转长方体中的实体。Minecraft 的默认检测系统都使用对齐 XYZ 网格的碰撞箱。这对于检查法术击中哪些敌人非常有用,即使玩家斜视并看向山坡上方。

事件注册表

用于添加和跟踪与特定对象(如实体)无关的基本 tick 对象的注册表。

  • 用于创建仅每 X tick 触发一次的周期性时钟,允许创建不每个 tick 都触发的方法。事实上,该注册表内置了 1 秒、1.5 秒和 2 秒间隔时钟。
  • 添加了 TickUppable 接口和 Ticker 类,用于将对象注册到注册表。

物品模型注册表

想制作一个自定义三叉戟,却想不出如何让手中的三叉戟像 MC 的那样显示?这个注册表就是为你准备的!

  • 为特定的渲染模式(手持、地面等)注册自定义物品模型。
  • 与标准 Fabric BuiltinItemRendererRegistry.DynamicItemRenderer 集成。

效果队列

讨厌添加被动状态效果有时会导致状态在 GUI 中“互相争斗”,状态快速来回切换?

  • 这个简单的工具将传入的所有状态效果统一为一个可预测的顺序添加。
  • 使用你期望的带有 addStatusEffect 的所有标准状态效果信息。

饰品工具

Fzzy Core 可选地与 Trinkets 集成,添加一些可用于它们的实用函数

  • getTrinketStacks 提供传入的活体实体所装备的所有饰品的列表。
  • AugmentTasks 接口允许创建与名为 Augments 的特殊附魔互动的饰品。这些 augment 允许饰品具有可自定义的被动和主动能力。