119 lines
3.1 KiB
Java
119 lines
3.1 KiB
Java
|
package net.minecraft.client.resources.sounds;
|
||
|
|
||
|
import net.minecraft.client.sounds.SoundManager;
|
||
|
import net.minecraft.client.sounds.WeighedSoundEvents;
|
||
|
import net.minecraft.resources.ResourceLocation;
|
||
|
import net.minecraft.sounds.SoundEvent;
|
||
|
import net.minecraft.sounds.SoundSource;
|
||
|
import net.minecraft.util.RandomSource;
|
||
|
import net.minecraftforge.api.distmarker.Dist;
|
||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||
|
|
||
|
@OnlyIn(Dist.CLIENT)
|
||
|
public abstract class AbstractSoundInstance implements SoundInstance {
|
||
|
protected Sound sound;
|
||
|
protected final SoundSource source;
|
||
|
protected final ResourceLocation location;
|
||
|
protected float volume = 1.0F;
|
||
|
protected float pitch = 1.0F;
|
||
|
protected double x;
|
||
|
protected double y;
|
||
|
protected double z;
|
||
|
protected boolean looping;
|
||
|
protected int delay;
|
||
|
protected SoundInstance.Attenuation attenuation = SoundInstance.Attenuation.LINEAR;
|
||
|
protected boolean relative;
|
||
|
protected RandomSource random;
|
||
|
|
||
|
protected AbstractSoundInstance(SoundEvent p_235072_, SoundSource p_235073_, RandomSource p_235074_) {
|
||
|
this(p_235072_.location(), p_235073_, p_235074_);
|
||
|
}
|
||
|
|
||
|
protected AbstractSoundInstance(ResourceLocation p_235068_, SoundSource p_235069_, RandomSource p_235070_) {
|
||
|
this.location = p_235068_;
|
||
|
this.source = p_235069_;
|
||
|
this.random = p_235070_;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public ResourceLocation getLocation() {
|
||
|
return this.location;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public WeighedSoundEvents resolve(SoundManager p_119591_) {
|
||
|
if (this.location.equals(SoundManager.INTENTIONALLY_EMPTY_SOUND_LOCATION)) {
|
||
|
this.sound = SoundManager.INTENTIONALLY_EMPTY_SOUND;
|
||
|
return SoundManager.INTENTIONALLY_EMPTY_SOUND_EVENT;
|
||
|
} else {
|
||
|
WeighedSoundEvents weighedsoundevents = p_119591_.getSoundEvent(this.location);
|
||
|
if (weighedsoundevents == null) {
|
||
|
this.sound = SoundManager.EMPTY_SOUND;
|
||
|
} else {
|
||
|
this.sound = weighedsoundevents.getSound(this.random);
|
||
|
}
|
||
|
|
||
|
return weighedsoundevents;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public Sound getSound() {
|
||
|
return this.sound;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public SoundSource getSource() {
|
||
|
return this.source;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean isLooping() {
|
||
|
return this.looping;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public int getDelay() {
|
||
|
return this.delay;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public float getVolume() {
|
||
|
return this.volume * this.sound.getVolume().sample(this.random);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public float getPitch() {
|
||
|
return this.pitch * this.sound.getPitch().sample(this.random);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public double getX() {
|
||
|
return this.x;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public double getY() {
|
||
|
return this.y;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public double getZ() {
|
||
|
return this.z;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public SoundInstance.Attenuation getAttenuation() {
|
||
|
return this.attenuation;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean isRelative() {
|
||
|
return this.relative;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String toString() {
|
||
|
return "SoundInstance[" + this.location + "]";
|
||
|
}
|
||
|
}
|