001 package net.minecraft.entity.item; 002 003 import cpw.mods.fml.relauncher.Side; 004 import cpw.mods.fml.relauncher.SideOnly; 005 import net.minecraft.client.audio.SoundManager; 006 import net.minecraft.client.entity.EntityPlayerSP; 007 import net.minecraft.server.gui.IUpdatePlayerListBox; 008 import net.minecraft.util.MathHelper; 009 010 @SideOnly(Side.CLIENT) 011 public class SoundUpdaterMinecart implements IUpdatePlayerListBox 012 { 013 private final SoundManager theSoundManager; 014 015 /** Minecart which sound is being updated. */ 016 private final EntityMinecart theMinecart; 017 018 /** The player that is getting the minecart sound updates. */ 019 private final EntityPlayerSP thePlayer; 020 private boolean field_82473_d = false; 021 private boolean field_82474_e = false; 022 private boolean field_82471_f = false; 023 private boolean field_82472_g = false; 024 private float field_82480_h = 0.0F; 025 private float field_82481_i = 0.0F; 026 private float field_82478_j = 0.0F; 027 private double field_82479_k = 0.0D; 028 029 public SoundUpdaterMinecart(SoundManager par1SoundManager, EntityMinecart par2EntityMinecart, EntityPlayerSP par3EntityPlayerSP) 030 { 031 this.theSoundManager = par1SoundManager; 032 this.theMinecart = par2EntityMinecart; 033 this.thePlayer = par3EntityPlayerSP; 034 } 035 036 /** 037 * Updates the JList with a new model. 038 */ 039 public void update() 040 { 041 boolean var1 = false; 042 boolean var2 = this.field_82473_d; 043 boolean var3 = this.field_82474_e; 044 boolean var4 = this.field_82471_f; 045 float var5 = this.field_82481_i; 046 float var6 = this.field_82480_h; 047 float var7 = this.field_82478_j; 048 double var8 = this.field_82479_k; 049 this.field_82473_d = this.thePlayer != null && this.theMinecart.riddenByEntity == this.thePlayer; 050 this.field_82474_e = this.theMinecart.isDead; 051 this.field_82479_k = (double)MathHelper.sqrt_double(this.theMinecart.motionX * this.theMinecart.motionX + this.theMinecart.motionZ * this.theMinecart.motionZ); 052 this.field_82471_f = this.field_82479_k >= 0.01D; 053 054 if (var2 && !this.field_82473_d) 055 { 056 this.theSoundManager.stopEntitySound(this.thePlayer); 057 } 058 059 if (this.field_82474_e || !this.field_82472_g && this.field_82481_i == 0.0F && this.field_82478_j == 0.0F) 060 { 061 if (!var3) 062 { 063 this.theSoundManager.stopEntitySound(this.theMinecart); 064 065 if (var2 || this.field_82473_d) 066 { 067 this.theSoundManager.stopEntitySound(this.thePlayer); 068 } 069 } 070 071 this.field_82472_g = true; 072 073 if (this.field_82474_e) 074 { 075 return; 076 } 077 } 078 079 if (!this.theSoundManager.isEntitySoundPlaying(this.theMinecart) && this.field_82481_i > 0.0F) 080 { 081 this.theSoundManager.playEntitySound("minecart.base", this.theMinecart, this.field_82481_i, this.field_82480_h, false); 082 this.field_82472_g = false; 083 var1 = true; 084 } 085 086 if (this.field_82473_d && !this.theSoundManager.isEntitySoundPlaying(this.thePlayer) && this.field_82478_j > 0.0F) 087 { 088 this.theSoundManager.playEntitySound("minecart.inside", this.thePlayer, this.field_82478_j, 1.0F, true); 089 this.field_82472_g = false; 090 var1 = true; 091 } 092 093 if (this.field_82471_f) 094 { 095 if (this.field_82480_h < 1.0F) 096 { 097 this.field_82480_h += 0.0025F; 098 } 099 100 if (this.field_82480_h > 1.0F) 101 { 102 this.field_82480_h = 1.0F; 103 } 104 105 float var10 = MathHelper.clamp_float((float)this.field_82479_k, 0.0F, 4.0F) / 4.0F; 106 this.field_82478_j = 0.0F + var10 * 0.75F; 107 var10 = MathHelper.clamp_float(var10 * 2.0F, 0.0F, 1.0F); 108 this.field_82481_i = 0.0F + var10 * 0.7F; 109 } 110 else if (var4) 111 { 112 this.field_82481_i = 0.0F; 113 this.field_82480_h = 0.0F; 114 this.field_82478_j = 0.0F; 115 } 116 117 if (!this.field_82472_g) 118 { 119 if (this.field_82480_h != var6) 120 { 121 this.theSoundManager.setEntitySoundPitch(this.theMinecart, this.field_82480_h); 122 } 123 124 if (this.field_82481_i != var5) 125 { 126 this.theSoundManager.setEntitySoundVolume(this.theMinecart, this.field_82481_i); 127 } 128 129 if (this.field_82478_j != var7) 130 { 131 this.theSoundManager.setEntitySoundVolume(this.thePlayer, this.field_82478_j); 132 } 133 } 134 135 if (!var1 && (this.field_82481_i > 0.0F || this.field_82478_j > 0.0F)) 136 { 137 this.theSoundManager.updateSoundLocation(this.theMinecart); 138 139 if (this.field_82473_d) 140 { 141 this.theSoundManager.updateSoundLocation(this.thePlayer, this.theMinecart); 142 } 143 } 144 else 145 { 146 if (this.theSoundManager.isEntitySoundPlaying(this.theMinecart)) 147 { 148 this.theSoundManager.stopEntitySound(this.theMinecart); 149 } 150 151 if (this.theSoundManager.isEntitySoundPlaying(this.thePlayer)) 152 { 153 this.theSoundManager.stopEntitySound(this.thePlayer); 154 } 155 } 156 } 157 }