diff --git a/src/generated/resources/assets/minecraft/sounds.json b/src/generated/resources/assets/minecraft/sounds.json new file mode 100644 index 0000000000..f6907dbda7 --- /dev/null +++ b/src/generated/resources/assets/minecraft/sounds.json @@ -0,0 +1,22 @@ +{ + "item.bucket.empty_milk": { + "sounds": [ + "item/bucket/empty1", + { + "name": "item/bucket/empty1", + "pitch": 0.9 + }, + "item/bucket/empty2", + "item/bucket/empty3" + ], + "subtitle": "subtitles.item.bucket.empty" + }, + "item.bucket.fill_milk": { + "sounds": [ + "item/bucket/fill1", + "item/bucket/fill2", + "item/bucket/fill3" + ], + "subtitle": "subtitles.item.bucket.fill" + } +} \ No newline at end of file diff --git a/src/main/java/net/minecraftforge/common/ForgeMod.java b/src/main/java/net/minecraftforge/common/ForgeMod.java index ca00ecdebd..3063bb5517 100644 --- a/src/main/java/net/minecraftforge/common/ForgeMod.java +++ b/src/main/java/net/minecraftforge/common/ForgeMod.java @@ -49,6 +49,7 @@ import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.common.data.ForgeBiomeTagsProvider; import net.minecraftforge.common.data.ForgeFluidTagsProvider; import net.minecraftforge.common.data.ForgeSpriteSourceProvider; +import net.minecraftforge.common.data.VanillaSoundDefinitionsProvider; import net.minecraftforge.common.extensions.IForgeEntity; import net.minecraftforge.common.extensions.IForgePlayer; import net.minecraftforge.common.loot.CanToolPerformAction; @@ -389,6 +390,8 @@ public class ForgeMod }); private static boolean enableMilkFluid = false; + public static final RegistryObject BUCKET_EMPTY_MILK = RegistryObject.create(new ResourceLocation("item.bucket.empty_milk"), ForgeRegistries.SOUND_EVENTS); + public static final RegistryObject BUCKET_FILL_MILK = RegistryObject.create(new ResourceLocation("item.bucket.fill_milk"), ForgeRegistries.SOUND_EVENTS); public static final RegistryObject MILK_TYPE = RegistryObject.createOptional(new ResourceLocation("milk"), ForgeRegistries.Keys.FLUID_TYPES.location(), "minecraft"); public static final RegistryObject MILK = RegistryObject.create(new ResourceLocation("milk"), ForgeRegistries.FLUIDS); public static final RegistryObject FLOWING_MILK = RegistryObject.create(new ResourceLocation("flowing_milk"), ForgeRegistries.FLUIDS); @@ -504,6 +507,7 @@ public class ForgeMod gen.addProvider(event.includeServer(), new ForgeBiomeTagsProvider(packOutput, lookupProvider, existingFileHelper)); gen.addProvider(event.includeClient(), new ForgeSpriteSourceProvider(packOutput, existingFileHelper)); + gen.addProvider(event.includeClient(), new VanillaSoundDefinitionsProvider(packOutput, existingFileHelper)); } public void missingSoundMapping(MissingMappingsEvent event) @@ -533,8 +537,18 @@ public class ForgeMod { if (enableMilkFluid) { + // register milk fill, empty sounds (delegates to water fill, empty sounds) + event.register(ForgeRegistries.Keys.SOUND_EVENTS, helper -> { + helper.register(BUCKET_EMPTY_MILK.getId(), SoundEvent.createVariableRangeEvent(BUCKET_EMPTY_MILK.getId())); + helper.register(BUCKET_FILL_MILK.getId(), SoundEvent.createVariableRangeEvent(BUCKET_FILL_MILK.getId())); + }); + // register fluid type - event.register(ForgeRegistries.Keys.FLUID_TYPES, helper -> helper.register(MILK_TYPE.getId(), new FluidType(FluidType.Properties.create().density(1024).viscosity(1024)) + event.register(ForgeRegistries.Keys.FLUID_TYPES, helper -> helper.register(MILK_TYPE.getId(), new FluidType( + FluidType.Properties.create().density(1024).viscosity(1024) + .sound(SoundActions.BUCKET_FILL, BUCKET_FILL_MILK.get()) + .sound(SoundActions.BUCKET_EMPTY, BUCKET_EMPTY_MILK.get()) + ) { @Override public void initializeClient(Consumer consumer) diff --git a/src/main/java/net/minecraftforge/common/data/VanillaSoundDefinitionsProvider.java b/src/main/java/net/minecraftforge/common/data/VanillaSoundDefinitionsProvider.java new file mode 100644 index 0000000000..9894f89e27 --- /dev/null +++ b/src/main/java/net/minecraftforge/common/data/VanillaSoundDefinitionsProvider.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) Forge Development LLC and contributors + * SPDX-License-Identifier: LGPL-2.1-only + */ + +package net.minecraftforge.common.data; + + +import net.minecraft.data.PackOutput; +import net.minecraftforge.common.ForgeMod; + +public class VanillaSoundDefinitionsProvider extends SoundDefinitionsProvider { + + public VanillaSoundDefinitionsProvider(PackOutput output, ExistingFileHelper helper) { + super(output, "minecraft", helper); + } + + @Override + public void registerSounds() { + this.add(ForgeMod.BUCKET_EMPTY_MILK.getId(), definition().subtitle("subtitles.item.bucket.empty") + .with(sound("item/bucket/empty1"), sound("item/bucket/empty1").pitch(0.9), + sound("item/bucket/empty2"), sound("item/bucket/empty3"))); + this.add(ForgeMod.BUCKET_FILL_MILK.getId(), definition().subtitle("subtitles.item.bucket.fill") + .with(sound("item/bucket/fill1"), sound("item/bucket/fill2"), sound("item/bucket/fill3"))); + } +}