package net.minecraft.entity.item;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.audio.SoundManager;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.server.gui.IUpdatePlayerListBox;
import net.minecraft.util.MathHelper;
@SideOnly(Side.CLIENT)
public class SoundUpdaterMinecart implements IUpdatePlayerListBox
{
private final SoundManager theSoundManager;
/** Minecart which sound is being updated. */
private final EntityMinecart theMinecart;
/** The player that is getting the minecart sound updates. */
private final EntityPlayerSP thePlayer;
private boolean field_82473_d = false;
private boolean field_82474_e = false;
private boolean field_82471_f = false;
private boolean field_82472_g = false;
private float field_82480_h = 0.0F;
private float field_82481_i = 0.0F;
private float field_82478_j = 0.0F;
private double field_82479_k = 0.0D;
public SoundUpdaterMinecart(SoundManager par1SoundManager, EntityMinecart par2EntityMinecart, EntityPlayerSP par3EntityPlayerSP)
{
this.theSoundManager = par1SoundManager;
this.theMinecart = par2EntityMinecart;
this.thePlayer = par3EntityPlayerSP;
}
/**
* Updates the JList with a new model.
*/
public void update()
{
boolean var1 = false;
boolean var2 = this.field_82473_d;
boolean var3 = this.field_82474_e;
boolean var4 = this.field_82471_f;
float var5 = this.field_82481_i;
float var6 = this.field_82480_h;
float var7 = this.field_82478_j;
double var8 = this.field_82479_k;
this.field_82473_d = this.thePlayer != null && this.theMinecart.riddenByEntity == this.thePlayer;
this.field_82474_e = this.theMinecart.isDead;
this.field_82479_k = (double)MathHelper.sqrt_double(this.theMinecart.motionX * this.theMinecart.motionX + this.theMinecart.motionZ * this.theMinecart.motionZ);
this.field_82471_f = this.field_82479_k >= 0.01D;
if (var2 && !this.field_82473_d)
{
this.theSoundManager.stopEntitySound(this.thePlayer);
}
if (this.field_82474_e || !this.field_82472_g && this.field_82481_i == 0.0F && this.field_82478_j == 0.0F)
{
if (!var3)
{
this.theSoundManager.stopEntitySound(this.theMinecart);
if (var2 || this.field_82473_d)
{
this.theSoundManager.stopEntitySound(this.thePlayer);
}
}
this.field_82472_g = true;
if (this.field_82474_e)
{
return;
}
}
if (!this.theSoundManager.isEntitySoundPlaying(this.theMinecart) && this.field_82481_i > 0.0F)
{
this.theSoundManager.playEntitySound("minecart.base", this.theMinecart, this.field_82481_i, this.field_82480_h, false);
this.field_82472_g = false;
var1 = true;
}
if (this.field_82473_d && !this.theSoundManager.isEntitySoundPlaying(this.thePlayer) && this.field_82478_j > 0.0F)
{
this.theSoundManager.playEntitySound("minecart.inside", this.thePlayer, this.field_82478_j, 1.0F, true);
this.field_82472_g = false;
var1 = true;
}
if (this.field_82471_f)
{
if (this.field_82480_h < 1.0F)
{
this.field_82480_h += 0.0025F;
}
if (this.field_82480_h > 1.0F)
{
this.field_82480_h = 1.0F;
}
float var10 = MathHelper.clamp_float((float)this.field_82479_k, 0.0F, 4.0F) / 4.0F;
this.field_82478_j = 0.0F + var10 * 0.75F;
var10 = MathHelper.clamp_float(var10 * 2.0F, 0.0F, 1.0F);
this.field_82481_i = 0.0F + var10 * 0.7F;
}
else if (var4)
{
this.field_82481_i = 0.0F;
this.field_82480_h = 0.0F;
this.field_82478_j = 0.0F;
}
if (!this.field_82472_g)
{
if (this.field_82480_h != var6)
{
this.theSoundManager.setEntitySoundPitch(this.theMinecart, this.field_82480_h);
}
if (this.field_82481_i != var5)
{
this.theSoundManager.setEntitySoundVolume(this.theMinecart, this.field_82481_i);
}
if (this.field_82478_j != var7)
{
this.theSoundManager.setEntitySoundVolume(this.thePlayer, this.field_82478_j);
}
}
if (!var1 && (this.field_82481_i > 0.0F || this.field_82478_j > 0.0F))
{
this.theSoundManager.updateSoundLocation(this.theMinecart);
if (this.field_82473_d)
{
this.theSoundManager.updateSoundLocation(this.thePlayer, this.theMinecart);
}
}
else
{
if (this.theSoundManager.isEntitySoundPlaying(this.theMinecart))
{
this.theSoundManager.stopEntitySound(this.theMinecart);
}
if (this.theSoundManager.isEntitySoundPlaying(this.thePlayer))
{
this.theSoundManager.stopEntitySound(this.thePlayer);
}
}
}
}