音效

在这节中,我们讲学习如何向给我的Mod添加音效,非常的简单,就让我开始吧。

public class SoundEventRegistry { public static final DeferredRegister<SoundEvent> SOUNDS = new DeferredRegister<>(ForgeRegistries.SOUND_EVENTS, "neutrino"); public static RegistryObject<SoundEvent> meaSound = SOUNDS.register("mea", () -> { return new SoundEvent(new ResourceLocation("neutrino", "mea")); }); }

就这两句话,就可以注册我们的音效了。

接下来我们来添加音效,在你的Resource目录下创建如下的文件和目录。

resources ├── META-INF │   └── mods.toml ├── assets │   └── neutrino │   ├── blockstates │   ├── lang │   ├── models │   ├── sounds │   ├── sounds.json │   └── textures ├── data └── pack.mcmeta

在这里我们创建了一个sounds.json,这个文件的具体格式请参照Wiki。

内容如下

{ "mea": { "subtitle": "mea", "replace": "true", "sounds": [ { "name": "neutrino:mea", "steam": true } ] } }

请注意,最外面的键名和你之前ResourceLocation中第二个参数应该是一样的。然后我们在name中指定了具体的声音文件。请注意,Minecraft只允许载入ogg格式的音频文件。

接下来,我们将制作好的音频文件放入sounds文件内。

resources ├── META-INF │   └── mods.toml ├── assets │   └── neutrino │   ├── blockstates │   ├── lang │   ├── models │   ├── sounds │   │   └── mea.ogg │   ├── sounds.json │   └── textures ├── data └── pack.mcmeta

放置好的目录如上。

接下来就可创建物品来使用我们的音效了

public class SoundTestItem extends Item { public SoundTestItem() { super(new Properties().group(ModGroup.itemGroup)); } @Override public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) { if (worldIn.isRemote) { worldIn.playSound(playerIn, playerIn.getPosition(), SoundEventRegistry.meaSound.get(), SoundCategory.AMBIENT, 10f, 1f); } return super.onItemRightClick(worldIn, playerIn, handIn); } }

打开游戏试试吧,我们应该成功添加了音效。

源代码