• Forge论坛

导航页

  • 主页
  • 向文档做出贡献
  • 入门
    • 概述
    • 模组文件
    • 规划你的模组结构
    • 版本号
  • 核心概念
    • 注册表
    • 端位(Sides)
    • 事件
    • 模组生命周期
    • 资源
    • 国际化与本地化
  • 方块
    • 概述
    • 方块状态
  • 物品
    • 概述
    • BlockEntityWithoutLevelRenderer
  • 网络
    • 概述
    • SimpleImpl
    • 实体的同步
  • 方块实体
    • 概述
    • BlockEntityRenderer
  • 游戏特效
    • 粒子效果
    • 音效
  • 数据储存
    • Capabilities
    • Saved Data
    • 编解码器(Codecs)
  • 图形用户界面
    • 菜单(Menus)
    • 屏幕(Screens)
  • 渲染
    • 模型扩展
      • 概述
      • 根变换
      • 渲染类型
      • 部分可见度
      • 面数据
    • 模型加载器
      • 概述
      • 烘焙模型
      • 变换
      • 物品重载
  • 资源
    • 客户端资源(Assets)
      • 概述
      • 模型
        • 概述
        • 纹理色调
        • 物品属性
    • 服务端数据(Data)
      • 概述
      • 配方
        • 概述
        • 自定义配方
        • 原料
        • 非数据包配方
      • 战利品表
      • 全局战利品修改器
      • 标签
      • 进度
      • 条件性加载数据
  • 数据生成
    • 概述
    • 客户端资源(Assets)
      • 模型提供者
      • 语言提供者
      • 音效提供者
        • 添加一个音效
    • 服务端数据(Data)
      • 配方提供者
      • 战利品表提供者
      • 标签提供者
      • 进度提供者
      • 全局战利品修改器提供者
      • 数据包注册表对象提供者
  • 杂项功能
    • 配置
    • 键盘布局
    • 游戏测试
    • Forge更新检查器
    • 调试分析器
  • 进阶主题
    • 访问转换器
  • 向Forge做出贡献
    • 概述
    • Pull Request准则
  • 旧版本
    • 概述
    • 移植到当前版本

音效定义生成

通过子类化SoundDefinitionsProvider并实现#registerSounds,可以为模组生成sounds.json文件。实现后,必须将提供者添加到DataGenerator中。

// 在模组事件总线上
@SubscribeEvent
public void gatherData(GatherDataEvent event) {
    event.getGenerator().addProvider(
        // 告诉生成器仅在生成客户端资源时运行
        event.includeClient(),
        output -> new MySoundDefinitionsProvider(output, MOD_ID, event.getExistingFileHelper())
    );
}

添加一个音效

可以通过#add指定音效名称和定义来生成音效定义。音效名称可以从SoundEvent、ResourceLocation或字符串中提供。

警告

提供的音效名称将始终假定命名空间是提供给提供者的构造函数的mod id。没有对音效名称的命名空间执行验证!

SoundDefinition

可以使用#definition创建SoundDefinition。定义包含用于定义音效实例的数据。

定义指定了一些方法:

方法 描述
with 添加选择定义时可能播放的音效。
subtitle 设置定义的翻译键。
replace 当为true时,将删除其他sounds.json为该定义定义的音效,而不是附加到该定义。

SoundDefinition$Sound

提供给SoundDefinition的音效可以使用SoundDefinitionsProvider#sound指定。这些方法采用音效的引用和SoundType(如果已指定)。

SoundType可以是两个值之一:

音效类型 定义
SOUND 指定位于assets/<namespace>/sounds/<path>.ogg的音效的一个引用。
EVENT 指定由sounds.json定义的另一个音效的名称的引用。

从SoundDefinitionsProvider#sound创建的每个Sound都可以指定关于如何加载和播放所提供音效的其他配置:

方法 描述
volume 设置音效的音量大小,必须大于0。
pitch 设置音效的音高大小,必须大于0。
weight 设置音效被选定时播放音效的可能性。
stream 当为true时,从文件中读取音效,而不是将音效加载到内存中。推荐用于长音效:背景音乐、音乐唱片等。
attenuationDistance 设置可以听到音效的所距离的方块数。
preload 当为true时,一旦加载资源包,就会立即将音效加载到内存中。
// 在某个SoundDefinitionsProvider#registerSounds中
this.add(EXAMPLE_SOUND_EVENT, definition()
  .subtitle("sound.examplemod.example_sound") // 设置翻译键
  .with(
    sound(new ResourceLocation(MODID, "example_sound_1")) // 设置第一个音效
      .weight(4) // 具有4 / 5 = 80%的播放机率
      .volume(0.5), // 将调用此音效的所有音量缩放一半
    sound(new ResourceLocation(MODID, "example_sound_2")) // 设置第二个音效
      .stream() // 流播该音效
  )
);

this.add(EXAMPLE_SOUND_EVENT_2, definition()
  .subtitle("sound.examplemod.example_sound") // 设置翻译键
  .with(
    sound(EXAMPLE_SOUND_EVENT.getLocation(), SoundType.EVENT) // 从'EXAMPLE_SOUND_EVENT'添加音效
      .pitch(0.5) // 将调用此音效的所有音高缩放一半
  )
);
Built with MkDocs using a custom theme. Hosted by Read the Docs.
Enable Dark Theme