package matteroverdrive.client.sound; import cpw.mods.fml.client.FMLClientHandler; import net.minecraft.client.audio.ITickableSound; import net.minecraft.client.audio.PositionedSound; import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Vec3; /** * Created by Simeon on 5/12/2015. */ public class GravitationalAnomalySound extends PositionedSound implements ITickableSound { boolean donePlaying = false; double range; public GravitationalAnomalySound(ResourceLocation sound, int x, int y, int z, float volume, double range) { super(sound); setPosition(x, y, z); this.volume = volume; this.range = range; field_147666_i = AttenuationType.NONE; this.repeat = true; } @Override public boolean isDonePlaying() { return donePlaying; } public void stopPlaying() { donePlaying = true; } public void startPlaying() { donePlaying = false; } public void setRepeat(boolean repeat) { this.repeat = repeat; } public void setVolume(float volume) { this.volume = volume; } public void setRange(double range) { this.range = range; } public void setPosition(float x,float y,float z) { this.xPosF = x; this.yPosF = y; this.zPosF = z; } @Override public void update() { EntityClientPlayerMP mp = FMLClientHandler.instance().getClient().thePlayer; double distance = Vec3.createVectorHelper(xPosF, yPosF, zPosF).distanceTo(mp.getPosition(0)); volume = 1 - (float)(distance / range); } }