Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.miorg.scarysounds;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.resources.sounds.SoundInstance;
- import net.minecraft.client.sounds.MusicManager;
- import net.minecraft.client.sounds.SoundManager;
- import net.minecraft.resources.ResourceLocation;
- import net.minecraft.sounds.Music;
- import net.minecraft.sounds.Musics;
- import net.minecraft.sounds.SoundEvent;
- import net.minecraft.sounds.SoundSource;
- import net.minecraft.util.profiling.jfr.event.WorldLoadFinishedEvent;
- import net.minecraft.world.effect.MobEffectInstance;
- import net.minecraft.world.effect.MobEffects;
- import net.minecraftforge.client.ClientCommandHandler;
- import net.minecraft.world.level.Level;
- import net.minecraft.core.BlockPos;
- import net.minecraftforge.api.distmarker.Dist;
- import net.minecraftforge.event.TickEvent;
- import net.minecraftforge.event.entity.EntityJoinLevelEvent;
- import net.minecraftforge.event.level.LevelEvent;
- import net.minecraftforge.eventbus.api.SubscribeEvent;
- import net.minecraftforge.fml.common.Mod;
- import net.minecraftforge.fml.util.ObfuscationReflectionHelper;
- import net.minecraftforge.registries.ForgeRegistries;
- import net.minecraftforge.registries.RegistryObject;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Field;
- import java.util.Random;
- @Mod.EventBusSubscriber(modid = "scarysounds", value = Dist.CLIENT)
- public class SoundHandler {
- private static Field currentMusicField;
- static {
- try {
- currentMusicField = MusicManager.class.getDeclaredField("currentMusic");
- currentMusicField.setAccessible(true);
- } catch (NoSuchFieldException e) {
- e.printStackTrace();
- }
- }
- private static final Random random = new Random();
- static int ticksUntilNextSound = 0;
- static int ticksRestantes = 0;
- static int espera;
- static boolean flag = false;
- static boolean flagLoad = false;
- static String soundName;
- private static final String[] SOUND_NAMES = {
- "sound1", "sound2", "sound3", "sound4",
- "sound5", "sound6", "sound7", "sound8",
- "sound9", "sound10", "sound11", "sound12",
- "sound13", "sound14", "sound15"
- };
- @SubscribeEvent
- public static void onWorldLoad(LevelEvent.Load event) {
- ticksUntilNextSound = getRandomTicks();
- flagLoad = true;
- }
- @SubscribeEvent
- public static void onWorldTick(TickEvent.PlayerTickEvent event) throws InterruptedException {
- if (flagLoad) {
- try {
- MusicManager musicManager = Minecraft.getInstance().getMusicManager();
- Object currentMusic = currentMusicField.get(musicManager);
- Level world = (Level) event.player.level;
- BlockPos playerPos = event.player.blockPosition(); //Coordenadas del jugador
- if (!world.isClientSide && event.phase == TickEvent.Phase.END) {
- long dayTime = world.getDayTime() % 24000L;
- if ((dayTime >= 13000L && dayTime <= 23000L) && !flag) { // De noche
- if (ticksUntilNextSound > 0) {
- ticksUntilNextSound--;
- if (ticksUntilNextSound == 75)
- Minecraft.getInstance().getMusicManager().stopPlaying();
- if (ticksUntilNextSound == 110) {
- if (currentMusic != null) {
- event.player.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 200, 4, true, true));
- event.player.addEffect(new MobEffectInstance(MobEffects.CONFUSION, 200, 10, true, true));
- event.player.addEffect(new MobEffectInstance(MobEffects.DARKNESS, 200, 10, true, true));
- world.playSound(null, playerPos, ScarySounds.FX.get(), SoundSource.MUSIC, 1.0F, 1.0F);
- }
- }
- System.out.println(ticksUntilNextSound);
- } else {
- soundName = SOUND_NAMES[random.nextInt(SOUND_NAMES.length)];
- ResourceLocation resourceLocation = new ResourceLocation("scarysounds", soundName);
- SoundEvent soundEvent = ForgeRegistries.SOUND_EVENTS.getValue(resourceLocation);
- switch (soundName) {
- case "sound1": {
- soundEvent = ScarySounds.SOUND1.get();
- espera = 112;
- break;
- }
- case "sound2": {
- soundEvent = ScarySounds.SOUND2.get();
- espera = 164;
- break;
- }
- case "sound3": {
- soundEvent = ScarySounds.SOUND3.get();
- espera = 70;
- break;
- }
- case "sound4": {
- soundEvent = ScarySounds.SOUND4.get();
- espera = 184;
- break;
- }
- case "sound5": {
- soundEvent = ScarySounds.SOUND5.get();
- espera = 135;
- break;
- }
- case "sound6": {
- soundEvent = ScarySounds.SOUND6.get();
- espera = 255;
- break;
- }
- case "sound7": {
- soundEvent = ScarySounds.SOUND7.get();
- espera = 151;
- break;
- }
- case "sound8": {
- soundEvent = ScarySounds.SOUND8.get();
- espera = 107;
- break;
- }
- case "sound9": {
- soundEvent = ScarySounds.SOUND9.get();
- espera = 304;
- break;
- }
- case "sound10": {
- soundEvent = ScarySounds.SOUND10.get();
- espera = 48;
- break;
- }
- case "sound11": {
- soundEvent = ScarySounds.SOUND11.get();
- espera = 181;
- break;
- }
- case "sound12": {
- soundEvent = ScarySounds.SOUND12.get();
- espera = 11;
- break;
- }
- case "sound13": {
- soundEvent = ScarySounds.SOUND13.get();
- espera = 216;
- break;
- }
- case "sound14": {
- soundEvent = ScarySounds.SOUND14.get();
- espera = 52;
- break;
- }
- case "sound15": {
- soundEvent = ScarySounds.SOUND15.get();
- espera = 120;
- break;
- }
- }
- if (soundEvent != null) {
- ticksRestantes = espera * 20;
- world.playSound(null, playerPos, soundEvent, SoundSource.MUSIC, 1.0F, 1.0F);
- flag = true;
- } else {
- System.out.println("SoundEvent es nulo para: " + resourceLocation);
- }
- }
- } else {
- if (ticksRestantes > 0) {
- ticksRestantes--;
- Minecraft.getInstance().getMusicManager().stopPlaying();
- System.out.println("Ticks restantes: " + ticksRestantes);
- } else {
- flag = false;
- ticksUntilNextSound = getRandomTicks();
- }
- }
- }
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- }
- static int getRandomTicks() {
- return 500 + random.nextInt(1500);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment