2022-09-26 21:13:03 +02:00
|
|
|
package com.minelittlepony.unicopia.util;
|
|
|
|
|
|
|
|
import net.minecraft.entity.Entity;
|
|
|
|
import net.minecraft.sound.SoundCategory;
|
|
|
|
import net.minecraft.sound.SoundEvent;
|
2022-09-29 22:01:56 +02:00
|
|
|
import net.minecraft.util.math.random.Random;
|
2022-09-26 21:13:03 +02:00
|
|
|
import net.minecraft.world.World;
|
|
|
|
|
|
|
|
public interface SoundEmitter {
|
|
|
|
|
|
|
|
World getReferenceWorld();
|
|
|
|
|
|
|
|
Entity getEntity();
|
|
|
|
|
|
|
|
|
|
|
|
default void playSound(SoundEvent sound, float volume, float pitch) {
|
|
|
|
playSoundAt(getEntity(), sound, volume, pitch);
|
|
|
|
}
|
|
|
|
|
|
|
|
default void playSound(SoundEvent sound, float volume) {
|
|
|
|
playSound(sound, volume, getRandomPitch());
|
|
|
|
}
|
|
|
|
|
|
|
|
default float getRandomPitch() {
|
2022-09-29 22:01:56 +02:00
|
|
|
return getRandomPitch(getReferenceWorld().getRandom());
|
2022-09-26 21:13:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static void playSoundAt(Entity entity, SoundEvent sound, float pitch, float volume) {
|
|
|
|
playSoundAt(entity, sound, entity.getSoundCategory(), volume, pitch);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void playSoundAt(Entity entity, SoundEvent sound, SoundCategory category, float pitch, float volume) {
|
|
|
|
entity.world.playSound(null, entity.getX(), entity.getY(), entity.getZ(), sound, category, volume, pitch);
|
|
|
|
}
|
2022-09-29 22:01:56 +02:00
|
|
|
|
|
|
|
static float getRandomPitch(Random rng) {
|
|
|
|
return (float)rng.nextTriangular(0.5F, 0.2F);
|
|
|
|
}
|
2022-09-26 21:13:03 +02:00
|
|
|
}
|