Guest User

Untitled

a guest
Jun 17th, 2024
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.41 KB | None | 0 0
  1. package com.miorg.scarysounds;
  2.  
  3. import net.minecraft.client.Minecraft;
  4. import net.minecraft.client.resources.sounds.SoundInstance;
  5. import net.minecraft.client.sounds.MusicManager;
  6. import net.minecraft.client.sounds.SoundManager;
  7. import net.minecraft.resources.ResourceLocation;
  8. import net.minecraft.sounds.Music;
  9. import net.minecraft.sounds.Musics;
  10. import net.minecraft.sounds.SoundEvent;
  11. import net.minecraft.sounds.SoundSource;
  12. import net.minecraft.util.profiling.jfr.event.WorldLoadFinishedEvent;
  13. import net.minecraft.world.effect.MobEffectInstance;
  14. import net.minecraft.world.effect.MobEffects;
  15. import net.minecraftforge.client.ClientCommandHandler;
  16. import net.minecraft.world.level.Level;
  17. import net.minecraft.core.BlockPos;
  18. import net.minecraftforge.api.distmarker.Dist;
  19. import net.minecraftforge.event.TickEvent;
  20. import net.minecraftforge.event.entity.EntityJoinLevelEvent;
  21. import net.minecraftforge.event.level.LevelEvent;
  22. import net.minecraftforge.eventbus.api.SubscribeEvent;
  23. import net.minecraftforge.fml.common.Mod;
  24. import net.minecraftforge.fml.util.ObfuscationReflectionHelper;
  25. import net.minecraftforge.registries.ForgeRegistries;
  26. import net.minecraftforge.registries.RegistryObject;
  27. import java.lang.reflect.Constructor;
  28. import java.lang.reflect.Field;
  29. import java.util.Random;
  30.  
  31. @Mod.EventBusSubscriber(modid = "scarysounds", value = Dist.CLIENT)
  32. public class SoundHandler {
  33.     private static Field currentMusicField;
  34.     static {
  35.         try {
  36.             currentMusicField = MusicManager.class.getDeclaredField("currentMusic");
  37.             currentMusicField.setAccessible(true);
  38.         } catch (NoSuchFieldException e) {
  39.             e.printStackTrace();
  40.         }
  41.     }
  42.     private static final Random random = new Random();
  43.     static int ticksUntilNextSound = 0;
  44.     static int ticksRestantes = 0;
  45.     static int espera;
  46.     static boolean flag = false;
  47.     static boolean flagLoad = false;
  48.     static String soundName;
  49.     private static final String[] SOUND_NAMES = {
  50.             "sound1", "sound2", "sound3", "sound4",
  51.             "sound5", "sound6", "sound7", "sound8",
  52.             "sound9", "sound10", "sound11", "sound12",
  53.             "sound13", "sound14", "sound15"
  54.     };
  55.     @SubscribeEvent
  56.     public static void onWorldLoad(LevelEvent.Load event) {
  57.         ticksUntilNextSound = getRandomTicks();
  58.         flagLoad = true;
  59.     }
  60.     @SubscribeEvent
  61.     public static void onWorldTick(TickEvent.PlayerTickEvent event) throws InterruptedException {
  62.         if (flagLoad) {
  63.             try {
  64.                 MusicManager musicManager = Minecraft.getInstance().getMusicManager();
  65.                 Object currentMusic = currentMusicField.get(musicManager);
  66.                 Level world = (Level) event.player.level;
  67.                 BlockPos playerPos = event.player.blockPosition(); //Coordenadas del jugador
  68.                 if (!world.isClientSide && event.phase == TickEvent.Phase.END) {
  69.                     long dayTime = world.getDayTime() % 24000L;
  70.                     if ((dayTime >= 13000L && dayTime <= 23000L) && !flag) { // De noche
  71.                         if (ticksUntilNextSound > 0) {
  72.                             ticksUntilNextSound--;
  73.                             if (ticksUntilNextSound == 75)
  74.                                 Minecraft.getInstance().getMusicManager().stopPlaying();
  75.                             if (ticksUntilNextSound == 110) {
  76.                                 if (currentMusic != null) {
  77.                                     event.player.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 200, 4, true, true));
  78.                                     event.player.addEffect(new MobEffectInstance(MobEffects.CONFUSION, 200, 10, true, true));
  79.                                     event.player.addEffect(new MobEffectInstance(MobEffects.DARKNESS, 200, 10, true, true));
  80.                                     world.playSound(null, playerPos, ScarySounds.FX.get(), SoundSource.MUSIC, 1.0F, 1.0F);
  81.                                 }
  82.                             }
  83.                             System.out.println(ticksUntilNextSound);
  84.                         } else {
  85.                             soundName = SOUND_NAMES[random.nextInt(SOUND_NAMES.length)];
  86.                             ResourceLocation resourceLocation = new ResourceLocation("scarysounds", soundName);
  87.                             SoundEvent soundEvent = ForgeRegistries.SOUND_EVENTS.getValue(resourceLocation);
  88.                             switch (soundName) {
  89.                                 case "sound1": {
  90.                                     soundEvent = ScarySounds.SOUND1.get();
  91.                                     espera = 112;
  92.                                     break;
  93.                                 }
  94.                                 case "sound2": {
  95.                                     soundEvent = ScarySounds.SOUND2.get();
  96.                                     espera = 164;
  97.                                     break;
  98.                                 }
  99.                                 case "sound3": {
  100.                                     soundEvent = ScarySounds.SOUND3.get();
  101.                                     espera = 70;
  102.                                     break;
  103.                                 }
  104.                                 case "sound4": {
  105.                                     soundEvent = ScarySounds.SOUND4.get();
  106.                                     espera = 184;
  107.                                     break;
  108.                                 }
  109.                                 case "sound5": {
  110.                                     soundEvent = ScarySounds.SOUND5.get();
  111.                                     espera = 135;
  112.                                     break;
  113.                                 }
  114.                                 case "sound6": {
  115.                                     soundEvent = ScarySounds.SOUND6.get();
  116.                                     espera = 255;
  117.                                     break;
  118.                                 }
  119.                                 case "sound7": {
  120.                                     soundEvent = ScarySounds.SOUND7.get();
  121.                                     espera = 151;
  122.                                     break;
  123.                                 }
  124.                                 case "sound8": {
  125.                                     soundEvent = ScarySounds.SOUND8.get();
  126.                                     espera = 107;
  127.                                     break;
  128.                                 }
  129.                                 case "sound9": {
  130.                                     soundEvent = ScarySounds.SOUND9.get();
  131.                                     espera = 304;
  132.                                     break;
  133.                                 }
  134.                                 case "sound10": {
  135.                                     soundEvent = ScarySounds.SOUND10.get();
  136.                                     espera = 48;
  137.                                     break;
  138.                                 }
  139.                                 case "sound11": {
  140.                                     soundEvent = ScarySounds.SOUND11.get();
  141.                                     espera = 181;
  142.                                     break;
  143.                                 }
  144.                                 case "sound12": {
  145.                                     soundEvent = ScarySounds.SOUND12.get();
  146.                                     espera = 11;
  147.                                     break;
  148.                                 }
  149.                                 case "sound13": {
  150.                                     soundEvent = ScarySounds.SOUND13.get();
  151.                                     espera = 216;
  152.                                     break;
  153.                                 }
  154.                                 case "sound14": {
  155.                                     soundEvent = ScarySounds.SOUND14.get();
  156.                                     espera = 52;
  157.                                     break;
  158.                                 }
  159.                                 case "sound15": {
  160.                                     soundEvent = ScarySounds.SOUND15.get();
  161.                                     espera = 120;
  162.                                     break;
  163.                                 }
  164.                             }
  165.                             if (soundEvent != null) {
  166.                                 ticksRestantes = espera * 20;
  167.                                 world.playSound(null, playerPos, soundEvent, SoundSource.MUSIC, 1.0F, 1.0F);
  168.                                 flag = true;
  169.                             } else {
  170.                                 System.out.println("SoundEvent es nulo para: " + resourceLocation);
  171.                             }
  172.                         }
  173.                     } else {
  174.                         if (ticksRestantes > 0) {
  175.                             ticksRestantes--;
  176.                             Minecraft.getInstance().getMusicManager().stopPlaying();
  177.                             System.out.println("Ticks restantes: " + ticksRestantes);
  178.                         } else {
  179.                             flag = false;
  180.                             ticksUntilNextSound = getRandomTicks();
  181.                         }
  182.                     }
  183.                 }
  184.             } catch (IllegalAccessException e) {
  185.                 e.printStackTrace();
  186.             }
  187.         }
  188.     }
  189.  
  190.     static int getRandomTicks() {
  191.         return 500 + random.nextInt(1500);
  192.     }
  193. }
Advertisement
Add Comment
Please, Sign In to add comment