Iskandert's Library

Iskandert's Library

主要由 Iskandert 的团队模组使用的函数库

Iskandert 的库 — 功能概览

该库包含了 Iskandert 团队在各个项目中使用的可复用构建模块。它专注于实用的游戏机制(结构、阶段、标记、商店/团队)和开发者工具(解析辅助、传输桥接、调试工具)。

使用与许可

该项目采用 MIT 许可证 发布。您可以在自己的项目(包括修改、重新分发和商业用途)中自由使用,前提是保留许可证声明。

包含内容

结构系统(基于 JSON)

用于通过外部 JSON 定义定义和放置结构的实用工具:

  • 结构定义:模式、方块键、替换规则以及强制/覆盖等选项。
  • 配置扫描与加载:发现结构 JSON 文件并在运行时注册。
  • 放置引擎:在游戏中放置结构,支持验证、属性应用和可选行为(例如“以玩家身份放置”、刷新刻)。
  • 撤销历史:轻量级、每玩家独立的放置历史记录,支持撤销。

关键包/类:

  • net.unfamily.iskalib.structure.StructureDefinition
  • net.unfamily.iskalib.structure.StructureLoader
  • net.unfamily.iskalib.structure.StructurePlacer
  • net.unfamily.iskalib.structure.StructurePlacementHistory

阶段系统(玩家 / 世界 / 团队)

一个通用的“阶段”注册表,用于限制内容访问并跟踪不同范围的进展:

  • 玩家阶段:每个玩家的持久化阶段标志。
  • 世界阶段:存储在世界存档数据中的全局标志。
  • 团队阶段:由团队成员共享的阶段标志,存储在世界存档数据中。
  • 钩子与监听器:用于对阶段变化做出反应的集成点。

关键包/类:

  • net.unfamily.iskalib.stage.StageRegistry
  • net.unfamily.iskalib.stage.StageHooks
  • net.unfamily.iskalib.stage.StageActionHooks

团队支持(共享余额 / 成员管理)

用于玩家分组和共享余额的团队管理:

  • 创建/删除团队
  • 管理成员身份和角色
  • 跟踪和查询每个团队的货币余额

关键包/类:

  • net.unfamily.iskalib.team.ShopTeamManager

商店货币集成钩子

该库按货币 ID 存储余额,但并未硬编码货币目录。消费者可以提供元数据和建议:

  • 用于命令自动补全和用户界面的货币 ID 列表
  • (如可用)货币显示元数据(翻译键、符号)

关键包/类:

  • net.unfamily.iskalib.shop.ShopCurrencyHooks

世界标记工具(客户端)

专为开发者设计的标记渲染和辅助工具,对调试区域、选区、扫描和自动化很有用:

  • 方块的标记渲染
  • 位置的告示牌
  • 用于清理/重置行为的运行时会话(非持久化)
  • 用于创建/清除标记的调试命令入口点

关键包/类:

  • net.unfamily.iskalib.client.marker.MarkRenderer
  • net.unfamily.iskalib.client.marker.VanillaWorldMarkerClientHooks
  • net.unfamily.iskalib.marker.MarkerSession
  • net.unfamily.iskalib.command.MarkerCommand

渐进式爆炸系统(服务端)

一种模块化、对延迟更友好的爆炸实现,可以随时间渐进处理:

  • 椭圆形(水平+垂直半径)爆炸
  • 基于刻的处理(或间隔为零时立即执行)
  • 可选的实体伤害和“破坏不可破坏方块”模式
  • 包含停止/内省辅助工具的活跃爆炸中央注册中心

关键包/类:

  • net.unfamily.iskalib.explosion.ExplosionSystem

物品字符串解析与转换工具

用于将“物品参数”字符串转换为 ItemStack(以及反向转换)的辅助工具,匹配 /give 命令接受的格式:

  • 解析 minecraft:item_id 以及带括号的组件语法,如 minecraft:item[component=value,...]
  • 验证用于配置/命令的用户提供的物品字符串
  • 将 ItemStack 格式化为物品参数字符串(ID + 组件补丁)

关键包/类:

  • net.unfamily.iskalib.item.ItemConverter

传输桥接(自动化兼容性)

将旧版物品处理器桥接到 NeoForge 的物品传输能力:

  • 将 IItemHandler 包装为事务性的 ResourceHandler<ItemResource>
  • 在可能的情况下使用快照日志进行回滚(IItemHandlerModifiable)

关键包/类:

  • net.unfamily.iskalib.transfer.LegacyItemHandlerResourceHandler

调试辅助工具与命令

专为开发和故障排查设计的小型、专注的工具:

  • 手持/物品转储辅助工具
  • 用于标记/阶段工作流的调试命令

关键包/类:

  • net.unfamily.iskalib.debug.HandItemDump
  • net.unfamily.iskalib.command.IskaLibDebugCommand
  • net.unfamily.iskalib.command.StageCommand

液体 API:

  • net.unfamily.iskalib.liquid