兄弟懂我的EMI折叠者

兄弟懂我的EMI折叠者

Bro Know My EMI Folder 是 Minecraft NeoForge 的 EMI 附加模组。它为 EMI 的索引侧边栏添加可折叠分组,分组定义由 KubeJS 驱动。

Bro Know My EMI Folder

image

English | 中文

Bro Know My EMI Folder 是一个适用于 Minecraft 1.21.1 / NeoForge 的 EMI 附属模组。它为 EMI 的索引侧边栏添加可折叠分组,并通过 KubeJS 定义分组内容。

折叠行为受到 REI 的可折叠条目的启发。友情链接:RoughlyEnoughItems。

功能

  • 将 EMI 索引条目折叠成由 KubeJS 定义的分组。
  • 折叠后的条目仍可被搜索。搜索被折叠的成员时会显示匹配的物品堆叠。
  • 搜索结果会自动去重。如果一个物品堆叠属于多个折叠组,它只会显示一次,其 tooltip 中会列出它所属的所有组。
  • 在普通 EMI 索引中,一个物品可以属于多个折叠组。
  • 左键点击折叠组可展开它。Alt+左键点击已展开的成员可折叠其所在分组。
  • 折叠预览使用纸牌平铺布局,间距和背景颜色均可配置。
  • 在可行的情况下,KubeJS 的 RecipeViewerEvents.groupEntries 定义也会作为折叠组被使用。

v0.0.2 新增内容

  • 新增 foldMod,可按模组命名空间折叠条目。
  • 新增 foldSpawnEggs,可折叠实现为 Minecraft SpawnEggItem 的物品,不依赖物品 id 命名。
  • 新增 unfold、unfoldFluid、unfoldId、unfoldAll、unfoldAllFluid 和 unfoldAllId,用于将条目从某个分组或所有分组中排除。
  • 新增更完整的 KubeJS API 文档和带注释的客户端脚本示例。
  • 修复了部分情况下折叠预览渲染层级不正确的问题。

使用

添加一个 KubeJS 客户端脚本:

RecipeViewerEvents.fold(event => {
  event.fold('broknowmyemifolder:ores', 'translate:emi_group.broknowmyemifolder.ores', '#c:ores')
  event.fold('broknowmyemifolder:tools', 'translate:emi_group.broknowmyemifolder.tools', ['#c:tools', 'minecraft:shears'])
  event.foldId('broknowmyemifolder:boats', 'translate:emi_group.broknowmyemifolder.boats', ['minecraft:oak_boat', 'minecraft:spruce_boat'], {
    spread: 4,
    color: 'rainbow'
  })
  event.foldMod('broknowmyemifolder:citadel', 'translate:emi_group.broknowmyemifolder.citadel', '@citadel', {
    color: 'random'
  })
  event.foldSpawnEggs('broknowmyemifolder:spawn_eggs', 'Spawn Eggs', {
    spread: 4,
    color: 'random'
  })
  event.unfoldAll('quark:seed_pouch')
})

分组名称可以是普通文本、组件,或带 translate: 前缀的字符串。

可用方法:

event.fold(id, name, filter, options?)
event.fold(name, filter, options?)
event.foldFluid(id, name, filter, options?)
event.foldFluid(name, filter, options?)
event.foldId(id, name, ids, options?)
event.foldId(name, ids, options?)
event.foldMod(id, name, mods, options?)
event.foldMod(name, mods, options?)
event.foldSpawnEggs(id, name, options?)
event.foldSpawnEggs(name, options?)
event.unfold(groupId, filter)
event.unfoldFluid(groupId, filter)
event.unfoldId(groupId, ids)
event.unfoldAll(filter)
event.unfoldAllFluid(filter)
event.unfoldAllId(ids)

unfold 会将匹配的条目从某个折叠组中移除。unfoldAll 会将匹配的条目从所有折叠组中移除。

foldMod 按 EMI stack id 命名空间折叠条目。它接受带或不带前导 @ 的模组 id,例如 '@citadel'。

foldSpawnEggs 会折叠实现为 Minecraft SpawnEggItem 的物品,无论其物品 id 是否以 _spawn_egg 结尾。

选项:

{
  spread: 4,
  color: 'rainbow'
}

spread 控制预览卡片之间的水平像素偏移。color 接受数字、'#RRGGBB'、'rainbow' 或 'random'。

支持的脚本方法和选项请见 GitHub。

中文

English | 中文

Bro Know My EMI Folder 是一个适用于 Minecraft 1.21.1 / NeoForge 的 EMI 附属模组。它为 EMI 的索引侧边栏添加可折叠分组,并通过 KubeJS 定义分组内容。

这个折叠行为受到 REI collapsible entries 的启发。友情链接:RoughlyEnoughItems。

功能

  • 将 EMI 索引侧边栏中的条目折叠成由 KubeJS 定义的分组。
  • 折叠后仍支持正常搜索。搜索组内物品时,会显示匹配到的具体条目。
  • 搜索结果会自动去重。同一个物品属于多个折叠组时,只显示一次,并在 tooltip 中列出它所属的所有组。
  • 普通 EMI 索引中允许同一个物品进入多个折叠组。
  • 左键点击折叠组展开;Alt+左键点击展开后的成员收起对应组。
  • 折叠预览使用扑克牌式平铺,支持自定义间距和背景颜色。
  • 会尽量兼容 KubeJS 原有的 RecipeViewerEvents.groupEntries 定义。

v0.0.2 新增

  • 新增 foldMod,支持按 mod 命名空间折叠条目。
  • 新增 foldSpawnEggs,支持自动折叠底层实现为 Minecraft SpawnEggItem 的刷怪蛋,不依赖物品 id 命名。
  • 新增 unfold、unfoldFluid、unfoldId、unfoldAll、unfoldAllFluid、unfoldAllId,支持从指定折叠组或所有折叠组中排除条目。
  • 补充了更完整的 KubeJS API 文档和带注释的客户端脚本示例。
  • 修复了部分情况下折叠预览渲染层级不正确的问题。

使用

添加一个 KubeJS client script:

RecipeViewerEvents.fold(event => {
  event.fold('broknowmyemifolder:ores', 'translate:emi_group.broknowmyemifolder.ores', '#c:ores')
  event.fold('broknowmyemifolder:tools', 'translate:emi_group.broknowmyemifolder.tools', ['#c:tools', 'minecraft:shears'])
  event.foldId('broknowmyemifolder:boats', 'translate:emi_group.broknowmyemifolder.boats', ['minecraft:oak_boat', 'minecraft:spruce_boat'], {
    spread: 4,
    color: 'rainbow'
  })
  event.foldMod('broknowmyemifolder:citadel', 'translate:emi_group.broknowmyemifolder.citadel', '@citadel', {
    color: 'random'
  })
  event.foldSpawnEggs('broknowmyemifolder:spawn_eggs', '刷怪蛋', {
    spread: 4,
    color: 'random'
  })
  event.unfoldAll('quark:seed_pouch')
})

组名可以是普通文本、文本组件,或带 translate: 前缀的翻译键字符串。

可用方法:

event.fold(id, name, filter, options?)
event.fold(name, filter, options?)
event.foldFluid(id, name, filter, options?)
event.foldFluid(name, filter, options?)
event.foldId(id, name, ids, options?)
event.foldId(name, ids, options?)
event.foldMod(id, name, mods, options?)
event.foldMod(name, mods, options?)
event.foldSpawnEggs(id, name, options?)
event.foldSpawnEggs(name, options?)
event.unfold(groupId, filter)
event.unfoldFluid(groupId, filter)
event.unfoldId(groupId, ids)
event.unfoldAll(filter)
event.unfoldAllFluid(filter)
event.unfoldAllId(ids)

unfold 会把匹配条目从指定折叠组里拿出来。unfoldAll 会把匹配条目从所有折叠组里拿出来。

foldMod 会按 EMI stack id 的命名空间折叠条目。它接受带或不带 @ 前缀的 mod id,例如 '@citadel'。

foldSpawnEggs 会折叠底层实现为 Minecraft SpawnEggItem 的物品,不依赖物品 id 是否以 _spawn_egg 结尾。

可选参数:

{
  spread: 4,
  color: 'rainbow'
}

spread 控制预览卡片之间的横向像素偏移。color 支持数字、'#RRGGBB'、'rainbow' 或 'random'。

支持的脚本方法和参数见 GitHub。