音乐唱片 1.20 Fabric 长线教程计划
本篇教程的视频
本篇教程的源代码
GitHub地址:TutorialMod-MusicDisc-1.20.1
本篇教程目标
- 理解原版音乐唱片的注册
- 为模组添加自定义音乐唱片
查看源代码
我们来看看音乐唱片的注册方法,其实就是和前面一篇教程差不多的
1 | public static final SoundEvent MUSIC_DISC_5 = register("music_disc.5"); |
后面的注册方法也是之前讲过的
在1.20
中的话,音乐唱片的添加还算简单,而1.21
就复杂了
然后还有音乐唱片这个物品
的注册,我们可以在Items
中找到
1 | public static final Item MUSIC_DISC_5 = register( |
它实例化的是MusicDiscItem
,它有4个参数
第一个是输出的红石信号强度
第二个是对应的声音事件
第三个是物品
设置,这里我们设置为最大堆叠数为1
,稀有度为稀有
最后一个参数是音乐唱片的时长
,单位是秒
添加音乐唱片
这里我们直接来添加音乐唱片
注册声音事件
那么首先是进行声音事件的注册
1 | public static final SoundEvent A_MOMENT_APART_MUSIC_DISC = register("a_moment_apart_music_disc"); |
这个音乐的话,其实就是地平线4
的开场音乐
注册音乐唱片物品
那么接下来来注册音乐唱片这个物品
1 | public static final Item A_MOMENT_APART_MUSIC_DISC = registerItems("a_moment_apart_music_disc", |
这里我们设置最大堆叠数为1
,时长为234秒
数据文件
物品标签
音乐唱片是要写一个物品标签
的,让它可以放到唱片机里播放
1 | getOrCreateTagBuilder(ItemTags.MUSIC_DISCS) |
这里同样在数据生成类中写一下
音频文件
一样的,我们还是将音频文件放在<modid>/sounds
下
注意文件格式为ogg
,然后音频得是单声道的,双声道将会导致声音没有衰减,即你在加载出来的区块中,都能听到唱片机的声音
sounds.json
然后是sounds.json,这里我们添加一个音乐唱片的映射
1 | "a_moment_apart_music_disc": { |
和其他的声音事件不一样的是,这里就没有subtitle
了
然后在sounds
里面,指向声音文件,stream
设置为true
,即流式播放
语言文件
语言文件主要写的是唱片物品的名字,还有放到唱片机中,弹出来的那一串彩色的字幕
1 | translationBuilder.add(ModItems.A_MOMENT_APART_MUSIC_DISC, "A Moment Apart Music Disc"); |
彩色字幕的那一块加上.desc
即可
测试
那么最后我们就可以进入游戏进行测试了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Tomorrow-Land!