infinote

infinote

服务端可配置的音符盒拓展模组

游戏机制

无限音符

服务端可配置的音符盒扩展模组。音符盒应该是可配置的!


📖 概述

无限音符 是一个 Fabric 平台的服务端音符盒扩展模组。

它允许你添加自定义音符盒音效,并实现近乎无限的音高偏移和完全可自定义的音量控制。

与传统的客户端模组(如 Notebetter)不同,无限音符在服务端处理音效逻辑,因此特别适合协作使用。

由于服务端管理音效,它在多人游戏中运行稳定。

客户端需求

  • 若客户端未安装本模组:

    • 模组仍可工作。
    • 只要提供了有效的资源包,自定义音效即可生效。
    • 但音高偏移可能受原版限制。
  • 若客户端已安装本模组:

    • 音高限制被扩展。
    • 扩展后的音高范围可正常工作。
    • 全部功能可用。

对于原版 Minecraft 中不存在的音效,必须通过资源包提供额外资源,否则音效将被静音。

通过使用服务端资源包,所有客户端无需手动安装资源包即可听到相同的自定义音效。


⭐ 特性

  • 完全可配置的音符盒音效
  • 基于下方方块的音效扩展
  • 配置文件驱动
  • 主要基于服务端逻辑
  • 支持多人游戏
  • 多版本兼容

📸 演示


🛠️ 使用方法

点击展开命令用法

命令

/infinote add <方块> <音效> <类别> <音高偏移> <音量>

为指定方块添加或更新音效映射。

  • <方块>: 目标方块 ID(例如 minecraft:stone)
  • <音效>: 任意有效的音效 ID(不限于内置音效)
  • <类别>: 音效类别(例如 master、music、record、block 等)
  • <音高偏移>: 以半音为单位的音高偏移(接受浮点数)
  • <音量>: 音量倍率(浮点数)
/infinote remove <方块>

移除指定方块的音效映射。

/infinote reload

重新加载配置文件。

/infinote import notebetterfabric <json>

从 NotebetterFabric 风格的 JSON 文件导入配置, 并将其转换为无限音符格式。

  • <json>: NotebetterFabric 配置文件的路径

此命令可让你轻松地从 NotebetterFabric 迁移到无限音符。


🎵 关于 音高偏移

音高偏移 以半音为单位表示音高变化。

  • 12 = +12 半音 = +1 八度
  • -12 = -12 半音 = -1 八度
  • 0 = 无音高变化

与原版音符盒不同,音高偏移:

  • 接受浮点数
  • 不限于 12 平均律
  • 允许微音程调整(例如 0.5、-2.3 等)

📏 音高限制行为

Minecraft 内部会限制音高值。

未安装客户端模组时

应用原版音高限制。 如果计算出的音高超出原版限制,客户端会将其限制。

已安装客户端模组时

音高限制范围扩展为:[0.03125, 32.0],这意味着你可以在 -5 个八度 ~ +5 个八度范围内改变音高。

请注意,要获得完整的扩展音高范围,需要安装客户端。


🔊 关于 <音效>

<音效> 参数不限于原版音效事件。

你可以使用:

  • 自定义命名空间
  • 自定义路径
  • 资源包中定义的任意 ID

它不需要以 minecraft: 开头。

有效 ID 示例:

minecraft:block.note_block.harp
custom:piano
my_music:grand.piano

你不能使用嵌套的命名空间,例如 infinote.custom:piano 或 smoe:namespace:your_path。

<音效> 可以包含:

  • 小写字母(a-z)
  • 数字(0-9)
  • 下划线(_)
  • 仅一个冒号(:)
  • 点号(.)

格式:

<命名空间>:<路径>

只允许一个冒号。

🎵 资源包(原版结构)

遵循标准 Minecraft 资源包结构:

点击展开资源包结构
resourcepack/
└─ assets/
    └─ <命名空间>/
        ├─ sounds.json
        └─ sounds/
            ├─ example_sound.ogg
            └─ smth_ur_folder/
               └─ nested/
                  └─ your_sound.ogg
            

sounds.json 示例:

{
  "your_sound": {
    "category": "record",
    "replace": false,
    "sounds": [
      "example_sound"
    ]
  },
  "sound_id_in_the_command": {
    "category": "record",
    "replace": false,
    "sounds": [
      "smth_ur_folder/nested/your_sound"
    ]
  }
}

在 sounds.json 中定义音效后,在命令中使用其完整 ID:

/infinote add minecraft:stone <命名空间>:custom.sound block 0 3

在上面的示例中,你应该发送命令:

/infinote add minecraft:stone <命名空间>:your_sound records 0 3
/infinote add minecraft:white_concrete <命名空间>:sound_id_in_the_command records 0 3

🔄 从 NotebetterFabric 迁移

无限音符为来自 NotebetterFabric 的用户提供了内置的迁移命令。

你可以直接导入现有的 NotebetterFabric 配置文件:

/infinote import notebetterfabric <json>
  • <json>: 你现有的 NotebetterFabric 配置文件的路径

该命令会读取 JSON 文件并自动将其转换为无限音符格式。

为什么要迁移?

与 NotebetterFabric 相比,无限音符:

  • 主要在服务端运行
  • 支持扩展音高范围(需安装客户端模组)
  • 允许浮点数半音音高偏移
  • 兼容多人游戏

导入后,使用:

/infinote reload

以应用转换后的配置。

在导入之前,请始终备份原始的 JSON 文件。

迁移旨在让你无缝切换,同时保留现有的音效映射。


📜 许可证

本项目基于 MIT 许可证 开源。

你可以自由地:

  • 使用
  • 修改
  • 分发
  • 包含在整合包中

需要注明出处。