package net.minecraft.client.sounds; import com.google.common.collect.Lists; import java.util.List; import javax.annotation.Nullable; import net.minecraft.client.resources.sounds.Sound; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.RandomSource; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class WeighedSoundEvents implements Weighted { private final List> list = Lists.newArrayList(); @Nullable private final Component subtitle; public WeighedSoundEvents(ResourceLocation p_120446_, @Nullable String p_120447_) { this.subtitle = p_120447_ == null ? null : Component.translatable(p_120447_); } @Override public int getWeight() { int i = 0; for (Weighted weighted : this.list) { i += weighted.getWeight(); } return i; } public Sound getSound(RandomSource p_235265_) { int i = this.getWeight(); if (!this.list.isEmpty() && i != 0) { int j = p_235265_.nextInt(i); for (Weighted weighted : this.list) { j -= weighted.getWeight(); if (j < 0) { return weighted.getSound(p_235265_); } } return SoundManager.EMPTY_SOUND; } else { return SoundManager.EMPTY_SOUND; } } public void addSound(Weighted p_120452_) { this.list.add(p_120452_); } @Nullable public Component getSubtitle() { return this.subtitle; } @Override public void preloadIfRequired(SoundEngine p_120450_) { for (Weighted weighted : this.list) { weighted.preloadIfRequired(p_120450_); } } }