From 9e31242f0d538537849fbf59a551b105a603bdc5 Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 22:18:01 +0100 Subject: [PATCH 1/7] Created sound registry. --- .../micle/firefly_bush_backport/proxy/Proxy.java | 2 ++ .../firefly_bush_backport/sound/ModSounds.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 src/main/java/dev/micle/firefly_bush_backport/sound/ModSounds.java diff --git a/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java b/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java index 23ab063..af50851 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java +++ b/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java @@ -5,6 +5,7 @@ import dev.micle.firefly_bush_backport.block.ModBlocks; import dev.micle.firefly_bush_backport.config.Config; import dev.micle.firefly_bush_backport.creative_mode_tab.ModCreativeModeTabs; import dev.micle.firefly_bush_backport.item.ModItems; +import dev.micle.firefly_bush_backport.sound.ModSounds; import net.minecraft.client.Minecraft; import net.minecraft.server.MinecraftServer; import net.minecraft.world.entity.player.Player; @@ -29,6 +30,7 @@ public class Proxy implements IProxy { ModBlocks.register(modEventBus); ModItems.register(modEventBus); ModCreativeModeTabs.register(modEventBus); + ModSounds.register(modEventBus); // Register mod event bus listeners modEventBus.addListener(Proxy::setup); diff --git a/src/main/java/dev/micle/firefly_bush_backport/sound/ModSounds.java b/src/main/java/dev/micle/firefly_bush_backport/sound/ModSounds.java new file mode 100644 index 0000000..84ef311 --- /dev/null +++ b/src/main/java/dev/micle/firefly_bush_backport/sound/ModSounds.java @@ -0,0 +1,15 @@ +package dev.micle.firefly_bush_backport.sound; + +import dev.micle.firefly_bush_backport.FireflyBushBackport; +import net.minecraft.sounds.SoundEvent; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +public class ModSounds { + public static final DeferredRegister SOUNDS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, FireflyBushBackport.MOD_ID); + + public static void register(IEventBus modEventBus) { + SOUNDS.register(modEventBus); + } +} From 219a06157fa15ec729a52f39dcccb5430f4365f1 Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:06:58 +0100 Subject: [PATCH 2/7] Added firefly idle sound event. --- .../micle/firefly_bush_backport/sound/ModSounds.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/micle/firefly_bush_backport/sound/ModSounds.java b/src/main/java/dev/micle/firefly_bush_backport/sound/ModSounds.java index 84ef311..a4dcb42 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/sound/ModSounds.java +++ b/src/main/java/dev/micle/firefly_bush_backport/sound/ModSounds.java @@ -1,15 +1,23 @@ package dev.micle.firefly_bush_backport.sound; import dev.micle.firefly_bush_backport.FireflyBushBackport; +import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; public class ModSounds { - public static final DeferredRegister SOUNDS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, FireflyBushBackport.MOD_ID); + public static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, FireflyBushBackport.MOD_ID); + + public static final RegistryObject FIREFLY_BUSH_IDLE = registerSoundEvent("block.firefly_bush.idle"); public static void register(IEventBus modEventBus) { - SOUNDS.register(modEventBus); + SOUND_EVENTS.register(modEventBus); + } + + private static RegistryObject registerSoundEvent(String name) { + return SOUND_EVENTS.register(name, () -> SoundEvent.createVariableRangeEvent(ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, name))); } } From 69b6893f39cf18487409ec7917f90b2bb1e4faa6 Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:07:31 +0100 Subject: [PATCH 3/7] Created mod sound definition provider and added it to data generators. Defined firefly bush sounds. --- .../data/DataGenerators.java | 6 ++- .../client/ModSoundDefinitionsProvider.java | 49 +++++++++++++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 src/main/java/dev/micle/firefly_bush_backport/data/client/ModSoundDefinitionsProvider.java diff --git a/src/main/java/dev/micle/firefly_bush_backport/data/DataGenerators.java b/src/main/java/dev/micle/firefly_bush_backport/data/DataGenerators.java index 18c0024..3e682b4 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/data/DataGenerators.java +++ b/src/main/java/dev/micle/firefly_bush_backport/data/DataGenerators.java @@ -3,6 +3,7 @@ package dev.micle.firefly_bush_backport.data; import dev.micle.firefly_bush_backport.FireflyBushBackport; import dev.micle.firefly_bush_backport.data.client.ModBlockStateProvider; import dev.micle.firefly_bush_backport.data.client.ModItemModelProvider; +import dev.micle.firefly_bush_backport.data.client.ModSoundDefinitionsProvider; import net.minecraft.data.DataGenerator; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; @@ -16,7 +17,8 @@ public class DataGenerators { DataGenerator generator = event.getGenerator(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(event.includeServer(), new ModBlockStateProvider(generator, existingFileHelper)); - generator.addProvider(event.includeServer(), new ModItemModelProvider(generator, existingFileHelper)); + generator.addProvider(event.includeClient(), new ModBlockStateProvider(generator, existingFileHelper)); + generator.addProvider(event.includeClient(), new ModItemModelProvider(generator, existingFileHelper)); + generator.addProvider(event.includeClient(), new ModSoundDefinitionsProvider(generator, existingFileHelper)); } } diff --git a/src/main/java/dev/micle/firefly_bush_backport/data/client/ModSoundDefinitionsProvider.java b/src/main/java/dev/micle/firefly_bush_backport/data/client/ModSoundDefinitionsProvider.java new file mode 100644 index 0000000..a508d28 --- /dev/null +++ b/src/main/java/dev/micle/firefly_bush_backport/data/client/ModSoundDefinitionsProvider.java @@ -0,0 +1,49 @@ +package dev.micle.firefly_bush_backport.data.client; + +import dev.micle.firefly_bush_backport.FireflyBushBackport; +import dev.micle.firefly_bush_backport.sound.ModSounds; +import net.minecraft.data.DataGenerator; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.common.data.SoundDefinitionsProvider; + +public class ModSoundDefinitionsProvider extends SoundDefinitionsProvider { + public ModSoundDefinitionsProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { + super(generator.getPackOutput(), FireflyBushBackport.MOD_ID, existingFileHelper); + } + + @Override + public void registerSounds() { + add(ModSounds.FIREFLY_BUSH_IDLE, definition() + .subtitle("sound." + FireflyBushBackport.MOD_ID + ".block.firefly_bush.idle") + .with( + sound(ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, "block/firefly_bush/firefly_bush1")) + .volume(4), + sound(ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, "block/firefly_bush/firefly_bush2")) + .volume(4), + sound(ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, "block/firefly_bush/firefly_bush3")) + .volume(4), + sound(ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, "block/firefly_bush/firefly_bush4")) + .volume(4), + sound(ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, "block/firefly_bush/firefly_bush5")) + .volume(4), + sound(ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, "block/firefly_bush/firefly_bush6")) + .volume(4), + sound(ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, "block/firefly_bush/firefly_bush7")) + .volume(4) + .weight(2), + sound(ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, "block/firefly_bush/firefly_bush8")) + .volume(4) + .weight(2), + sound(ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, "block/firefly_bush/firefly_bush9")) + .volume(4) + .weight(2), + sound(ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, "block/firefly_bush/firefly_bush10")) + .volume(4) + .weight(2), + sound(ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, "block/firefly_bush/firefly_bush11")) + .volume(4) + ) + ); + } +} From ad8cf966ed28b36c893d625d2df7a63ee382ddc3 Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:07:51 +0100 Subject: [PATCH 4/7] Generated new data and added subtitle entry to language file. --- .../assets/firefly_bush_backport/sounds.json | 55 +++++++++++++++++++ .../firefly_bush_backport/lang/en_us.json | 3 +- 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 src/generated/resources/assets/firefly_bush_backport/sounds.json diff --git a/src/generated/resources/assets/firefly_bush_backport/sounds.json b/src/generated/resources/assets/firefly_bush_backport/sounds.json new file mode 100644 index 0000000..751894d --- /dev/null +++ b/src/generated/resources/assets/firefly_bush_backport/sounds.json @@ -0,0 +1,55 @@ +{ + "block.firefly_bush.idle": { + "sounds": [ + { + "name": "firefly_bush_backport:block/firefly_bush/firefly_bush1", + "volume": 4.0 + }, + { + "name": "firefly_bush_backport:block/firefly_bush/firefly_bush2", + "volume": 4.0 + }, + { + "name": "firefly_bush_backport:block/firefly_bush/firefly_bush3", + "volume": 4.0 + }, + { + "name": "firefly_bush_backport:block/firefly_bush/firefly_bush4", + "volume": 4.0 + }, + { + "name": "firefly_bush_backport:block/firefly_bush/firefly_bush5", + "volume": 4.0 + }, + { + "name": "firefly_bush_backport:block/firefly_bush/firefly_bush6", + "volume": 4.0 + }, + { + "name": "firefly_bush_backport:block/firefly_bush/firefly_bush7", + "volume": 4.0, + "weight": 2 + }, + { + "name": "firefly_bush_backport:block/firefly_bush/firefly_bush8", + "volume": 4.0, + "weight": 2 + }, + { + "name": "firefly_bush_backport:block/firefly_bush/firefly_bush9", + "volume": 4.0, + "weight": 2 + }, + { + "name": "firefly_bush_backport:block/firefly_bush/firefly_bush10", + "volume": 4.0, + "weight": 2 + }, + { + "name": "firefly_bush_backport:block/firefly_bush/firefly_bush11", + "volume": 4.0 + } + ], + "subtitle": "sound.firefly_bush_backport.block.firefly_bush.idle" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/firefly_bush_backport/lang/en_us.json b/src/main/resources/assets/firefly_bush_backport/lang/en_us.json index 33d8437..247ba5a 100644 --- a/src/main/resources/assets/firefly_bush_backport/lang/en_us.json +++ b/src/main/resources/assets/firefly_bush_backport/lang/en_us.json @@ -1,4 +1,5 @@ { "itemGroup.firefly_bush_backport.main": "Firefly Bush Backport", - "block.firefly_bush_backport.firefly_bush": "Firefly Bush" + "block.firefly_bush_backport.firefly_bush": "Firefly Bush", + "sound.firefly_bush_backport.block.firefly_bush": "Fireflies buzz" } \ No newline at end of file From dfb32387fde0c05ff58eaeb290225e7f3751a375 Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:23:53 +0100 Subject: [PATCH 5/7] Implemented sounds into the block animateTick method. Implemented missing isMoonVisible method. Updated parameter names. --- .../block/FireflyBushBlock.java | 39 ++++++++++++++----- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java b/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java index 3d1f952..00f2247 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java +++ b/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java @@ -1,15 +1,19 @@ package dev.micle.firefly_bush_backport.block; +import dev.micle.firefly_bush_backport.sound.ModSounds; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.BonemealableBlock; import net.minecraft.world.level.block.BushBlock; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.Heightmap; +import javax.annotation.ParametersAreNonnullByDefault; import java.util.List; import java.util.Optional; @@ -20,28 +24,45 @@ public class FireflyBushBlock extends BushBlock implements BonemealableBlock { private static final int FIREFLY_SPAWN_MAX_BRIGHTNESS_LEVEL = 13; private static final int FIREFLY_AMBIENT_SOUND_CHANCE_ONE_IN = 30; - public FireflyBushBlock(Properties pProperties) { - super(pProperties); + public FireflyBushBlock(Properties properties) { + super(properties); } @Override - public void animateTick(BlockState pState, Level pLevel, BlockPos pPos, RandomSource pRandom) { - super.animateTick(pState, pLevel, pPos, pRandom); + @ParametersAreNonnullByDefault + public void animateTick(BlockState blockState, Level level, BlockPos blockPos, RandomSource randomSource) { + if (randomSource.nextInt(30) == 0 + && isMoonVisible(level) + && level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, blockPos.getX(), blockPos.getZ()) <= blockPos.getY()) { + level.playLocalSound(blockPos, ModSounds.FIREFLY_BUSH_IDLE.get(), SoundSource.AMBIENT, 1.0F, 1.0F, false); + } + } + + public boolean isMoonVisible(Level level) { + if (!level.dimensionType().natural()) { + return false; + } else { + int i = (int) (level.getDayTime() % 24000L); + return i >= 12600 && i <= 23400; + } } @Override - public boolean isValidBonemealTarget(LevelReader pLevel, BlockPos pPos, BlockState pState, boolean pIsClient) { - return hasSpreadableNeighbourPos(pLevel, pPos, pState); + @ParametersAreNonnullByDefault + public boolean isValidBonemealTarget(LevelReader level, BlockPos blockPos, BlockState blockState, boolean isClient) { + return hasSpreadableNeighbourPos(level, blockPos, blockState); } @Override - public boolean isBonemealSuccess(Level pLevel, RandomSource pRandom, BlockPos pPos, BlockState pState) { + @ParametersAreNonnullByDefault + public boolean isBonemealSuccess(Level level, RandomSource randomSource, BlockPos blockPos, BlockState blockState) { return true; } @Override - public void performBonemeal(ServerLevel pLevel, RandomSource pRandom, BlockPos pPos, BlockState pState) { - findSpreadableNeighbourPos(pLevel, pPos, pState).ifPresent(x -> pLevel.setBlockAndUpdate(x, this.defaultBlockState())); + @ParametersAreNonnullByDefault + public void performBonemeal(ServerLevel level, RandomSource randomSource, BlockPos blockPos, BlockState blockState) { + findSpreadableNeighbourPos(level, blockPos, blockState).ifPresent(x -> level.setBlockAndUpdate(x, this.defaultBlockState())); } static boolean hasSpreadableNeighbourPos(LevelReader levelReader, BlockPos blockPos, BlockState blockState) { From c57f72c9647c7068eef489ccca6ba972bf3d7c2a Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:24:24 +0100 Subject: [PATCH 6/7] Fixed lang entry key. --- src/main/resources/assets/firefly_bush_backport/lang/en_us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/firefly_bush_backport/lang/en_us.json b/src/main/resources/assets/firefly_bush_backport/lang/en_us.json index 247ba5a..8b726fa 100644 --- a/src/main/resources/assets/firefly_bush_backport/lang/en_us.json +++ b/src/main/resources/assets/firefly_bush_backport/lang/en_us.json @@ -1,5 +1,5 @@ { "itemGroup.firefly_bush_backport.main": "Firefly Bush Backport", "block.firefly_bush_backport.firefly_bush": "Firefly Bush", - "sound.firefly_bush_backport.block.firefly_bush": "Fireflies buzz" + "sound.firefly_bush_backport.block.firefly_bush.idle": "Fireflies buzz" } \ No newline at end of file From 4d55e636b2632d4808dccf28cf5b8114a9a6097d Mon Sep 17 00:00:00 2001 From: Micle Date: Thu, 5 Jun 2025 23:26:03 +0100 Subject: [PATCH 7/7] Using field. --- .../dev/micle/firefly_bush_backport/block/FireflyBushBlock.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java b/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java index 00f2247..0d05009 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java +++ b/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java @@ -31,7 +31,7 @@ public class FireflyBushBlock extends BushBlock implements BonemealableBlock { @Override @ParametersAreNonnullByDefault public void animateTick(BlockState blockState, Level level, BlockPos blockPos, RandomSource randomSource) { - if (randomSource.nextInt(30) == 0 + if (randomSource.nextInt(FIREFLY_AMBIENT_SOUND_CHANCE_ONE_IN) == 0 && isMoonVisible(level) && level.getHeight(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, blockPos.getX(), blockPos.getZ()) <= blockPos.getY()) { level.playLocalSound(blockPos, ModSounds.FIREFLY_BUSH_IDLE.get(), SoundSource.AMBIENT, 1.0F, 1.0F, false);