140 lines
5.9 KiB
Java
140 lines
5.9 KiB
Java
package zone.oat.supersecretrevival;
|
|
|
|
import net.minecraft.client.MinecraftClient;
|
|
import net.minecraft.client.sound.PositionedSoundInstance;
|
|
import net.minecraft.client.world.ClientWorld;
|
|
import net.minecraft.registry.Registries;
|
|
import net.minecraft.registry.Registry;
|
|
import net.minecraft.registry.entry.RegistryEntry;
|
|
import net.minecraft.sound.SoundCategory;
|
|
import net.minecraft.sound.SoundEvent;
|
|
import net.minecraft.sound.SoundEvents;
|
|
import net.minecraft.util.math.random.Random;
|
|
import net.minecraft.world.World;
|
|
|
|
import java.util.Arrays;
|
|
|
|
public class RandomSoundPlayer {
|
|
|
|
private static final Random RANDOM = Random.create();
|
|
|
|
// prevent these sounds from playing
|
|
//
|
|
// in 1.8 this used to be a list of categories;
|
|
// however sounds no longer have an association
|
|
// to categories so we have to improvise
|
|
|
|
private static SoundEvent[] soundBlocklist = {
|
|
SoundEvents.MUSIC_CREATIVE.value(),
|
|
SoundEvents.MUSIC_CREDITS.value(),
|
|
SoundEvents.MUSIC_DISC_5,
|
|
SoundEvents.MUSIC_DISC_11,
|
|
SoundEvents.MUSIC_DISC_13,
|
|
SoundEvents.MUSIC_DISC_BLOCKS,
|
|
SoundEvents.MUSIC_DISC_CAT,
|
|
SoundEvents.MUSIC_DISC_CHIRP,
|
|
SoundEvents.MUSIC_DISC_FAR,
|
|
SoundEvents.MUSIC_DISC_MALL,
|
|
SoundEvents.MUSIC_DISC_MELLOHI,
|
|
SoundEvents.MUSIC_DISC_PIGSTEP,
|
|
SoundEvents.MUSIC_DISC_STAL,
|
|
SoundEvents.MUSIC_DISC_STRAD,
|
|
SoundEvents.MUSIC_DISC_WAIT,
|
|
SoundEvents.MUSIC_DISC_WARD,
|
|
SoundEvents.MUSIC_DISC_OTHERSIDE,
|
|
SoundEvents.MUSIC_DISC_RELIC,
|
|
SoundEvents.MUSIC_DRAGON.value(),
|
|
SoundEvents.MUSIC_END.value(),
|
|
SoundEvents.MUSIC_GAME.value(),
|
|
SoundEvents.MUSIC_MENU.value(),
|
|
SoundEvents.MUSIC_NETHER_BASALT_DELTAS.value(),
|
|
SoundEvents.MUSIC_NETHER_CRIMSON_FOREST.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_DEEP_DARK.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_DRIPSTONE_CAVES.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_GROVE.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_JAGGED_PEAKS.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_LUSH_CAVES.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_SWAMP.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_FOREST.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_OLD_GROWTH_TAIGA.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_MEADOW.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_CHERRY_GROVE.value(),
|
|
SoundEvents.MUSIC_NETHER_NETHER_WASTES.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_FROZEN_PEAKS.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_SNOWY_SLOPES.value(),
|
|
SoundEvents.MUSIC_NETHER_SOUL_SAND_VALLEY.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_STONY_PEAKS.value(),
|
|
SoundEvents.MUSIC_NETHER_WARPED_FOREST.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_FLOWER_FOREST.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_DESERT.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_BADLANDS.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_JUNGLE.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_SPARSE_JUNGLE.value(),
|
|
SoundEvents.MUSIC_OVERWORLD_BAMBOO_JUNGLE.value(),
|
|
SoundEvents.MUSIC_UNDER_WATER.value(),
|
|
|
|
SoundEvents.AMBIENT_CAVE.value(),
|
|
SoundEvents.AMBIENT_BASALT_DELTAS_ADDITIONS.value(),
|
|
SoundEvents.AMBIENT_BASALT_DELTAS_LOOP.value(),
|
|
SoundEvents.AMBIENT_BASALT_DELTAS_MOOD.value(),
|
|
SoundEvents.AMBIENT_CRIMSON_FOREST_ADDITIONS.value(),
|
|
SoundEvents.AMBIENT_CRIMSON_FOREST_LOOP.value(),
|
|
SoundEvents.AMBIENT_CRIMSON_FOREST_MOOD.value(),
|
|
SoundEvents.AMBIENT_NETHER_WASTES_ADDITIONS.value(),
|
|
SoundEvents.AMBIENT_NETHER_WASTES_LOOP.value(),
|
|
SoundEvents.AMBIENT_NETHER_WASTES_MOOD.value(),
|
|
SoundEvents.AMBIENT_SOUL_SAND_VALLEY_ADDITIONS.value(),
|
|
SoundEvents.AMBIENT_SOUL_SAND_VALLEY_LOOP.value(),
|
|
SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD.value(),
|
|
SoundEvents.AMBIENT_WARPED_FOREST_ADDITIONS.value(),
|
|
SoundEvents.AMBIENT_WARPED_FOREST_LOOP.value(),
|
|
SoundEvents.AMBIENT_WARPED_FOREST_MOOD.value(),
|
|
SoundEvents.AMBIENT_UNDERWATER_ENTER,
|
|
SoundEvents.AMBIENT_UNDERWATER_EXIT,
|
|
SoundEvents.AMBIENT_UNDERWATER_LOOP,
|
|
SoundEvents.AMBIENT_UNDERWATER_LOOP_ADDITIONS,
|
|
SoundEvents.AMBIENT_UNDERWATER_LOOP_ADDITIONS_RARE,
|
|
SoundEvents.AMBIENT_UNDERWATER_LOOP_ADDITIONS_ULTRA_RARE,
|
|
};
|
|
|
|
private static SoundEvent getRandomSound(Random random) {
|
|
SoundEvent event;
|
|
|
|
do {
|
|
Registry<SoundEvent> registry = Registries.SOUND_EVENT;
|
|
int size = registry.size();
|
|
int rand = random.nextInt(size);
|
|
event = registry.get(rand);
|
|
} while (Arrays.asList(soundBlocklist).contains(event));
|
|
|
|
return event;
|
|
}
|
|
|
|
// money back guarantee. Bill mays. Phil swif
|
|
// In this phrase "money-back" is an adjective and needs to be spelled with a hyphen.
|
|
// Incorrect: We offer a 14-day money back guarantee.
|
|
// Correct: We offer a 14-day money-back guarantee.
|
|
public static void guaranteedPlaySound(SoundEvent sound, float volume, float pitch) {
|
|
MinecraftClient client = MinecraftClient.getInstance();
|
|
World world = client.world;
|
|
|
|
if (world instanceof ClientWorld) {
|
|
world.playSound(
|
|
client.player,
|
|
client.player.getBlockPos(),
|
|
sound,
|
|
SoundCategory.MASTER,
|
|
volume,
|
|
pitch
|
|
);
|
|
} else {
|
|
client.getSoundManager().play(PositionedSoundInstance.master(sound, pitch));
|
|
}
|
|
}
|
|
|
|
public static void playRandomSound() {
|
|
SoundEvent sound = getRandomSound(RANDOM);
|
|
guaranteedPlaySound(sound, 1f, 0.5f);
|
|
}
|
|
}
|