diff --git a/src/main/java/gay/pridecraft/joymod/JoyMod.java b/src/main/java/gay/pridecraft/joymod/JoyMod.java index 9ed0be2..fe59285 100644 --- a/src/main/java/gay/pridecraft/joymod/JoyMod.java +++ b/src/main/java/gay/pridecraft/joymod/JoyMod.java @@ -1,24 +1,37 @@ package gay.pridecraft.joymod; import eu.midnightdust.lib.config.MidnightConfig; +import gay.pridecraft.joymod.block.ModBlocks; import gay.pridecraft.joymod.config.Config; import gay.pridecraft.joymod.entity.ModEntities; -import gay.pridecraft.joymod.block.ModBlocks; import gay.pridecraft.joymod.entity.spawn.SpawnModifier; import gay.pridecraft.joymod.item.ModItemGroups; import gay.pridecraft.joymod.item.ModItems; import gay.pridecraft.joymod.painting.ModPaintings; import gay.pridecraft.joymod.particle.ModParticles; import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.minecraft.client.sound.PositionedSoundInstance; +import net.minecraft.client.sound.SoundInstance; import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.mob.MobEntity; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.Identifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Random; + public class JoyMod implements ModInitializer { public static final String MOD_ID = "joymod"; public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); + public static final Identifier MUSIC_GAME = new Identifier(MOD_ID, "music.ambient"); + public static SoundEvent MUSIC_GAME_EVENT = SoundEvent.of(MUSIC_GAME); + private int tickCounter = 0; + private final Random random = new Random(); @Override public void onInitialize() { @@ -35,9 +48,33 @@ public class JoyMod implements ModInitializer { MidnightConfig.init(JoyMod.MOD_ID, Config.class); + Registry.register(Registries.SOUND_EVENT, MUSIC_GAME, MUSIC_GAME_EVENT); + SoundInstance music = PositionedSoundInstance.music(MUSIC_GAME_EVENT); + + + /*ClientTickEvents.END_CLIENT_TICK.register(client -> { + if (!(client.currentScreen instanceof TitleScreen)) return; + if (client.getSoundManager().isPlaying(music)) return; + client.getSoundManager().play(music); + });*/ + + ClientTickEvents.END_CLIENT_TICK.register(client -> { + if (client.world != null && !client.isPaused() && client.player != null) { + tickCounter++; + if (tickCounter >= getRandomInterval()) { + client.getSoundManager().play(music); + tickCounter = 0; + } + } + }); + registerEntityAttributes(); } + private int getRandomInterval() { + return 12000 + random.nextInt(24000); + } + private void registerEntityAttributes() { FabricDefaultAttributeRegistry.register(ModEntities.THIGH_HIGH_FOX, MobEntity.createMobAttributes() .add(EntityAttributes.GENERIC_ATTACK_DAMAGE, 2.0) diff --git a/src/main/resources/assets/joymod/sounds.json b/src/main/resources/assets/joymod/sounds.json new file mode 100644 index 0000000..c0edc6d --- /dev/null +++ b/src/main/resources/assets/joymod/sounds.json @@ -0,0 +1,10 @@ +{ + "music.ambient": { + "sounds": [ + { + "name": "joymod:joy", + "stream": true + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/joymod/sounds/joy.ogg b/src/main/resources/assets/joymod/sounds/joy.ogg new file mode 100644 index 0000000..58defcd Binary files /dev/null and b/src/main/resources/assets/joymod/sounds/joy.ogg differ