diff options
| author | Maxim <maxim235@gmx.de> | 2023-03-22 23:45:59 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-22 22:45:59 +0000 |
| commit | b0843b032452d07a50847b33c436d374a6e973bd (patch) | |
| tree | 6d773dc4440f3d3f344670ec43ab145c7bc85796 /src/main/java/gregtech/client | |
| parent | 3681f2f989cb0b3c9f3d7649d2561d77fb8cfe4f (diff) | |
| download | GT5-Unofficial-b0843b032452d07a50847b33c436d374a6e973bd.tar.gz GT5-Unofficial-b0843b032452d07a50847b33c436d374a6e973bd.tar.bz2 GT5-Unofficial-b0843b032452d07a50847b33c436d374a6e973bd.zip | |
Activity Sound (#1811)
* Added activity sound
* Added acitivity sound to DTPF
* Added missing annotation
* Missed one
Diffstat (limited to 'src/main/java/gregtech/client')
| -rw-r--r-- | src/main/java/gregtech/client/GT_SoundLoop.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/main/java/gregtech/client/GT_SoundLoop.java b/src/main/java/gregtech/client/GT_SoundLoop.java new file mode 100644 index 0000000000..6b6546ced5 --- /dev/null +++ b/src/main/java/gregtech/client/GT_SoundLoop.java @@ -0,0 +1,60 @@ +package gregtech.client; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.MovingSound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; + +@SideOnly(Side.CLIENT) +public class GT_SoundLoop extends MovingSound { + + private static final float VOLUME_RAMP = 0.0625f; + private final boolean whileActive; + private final boolean whileInactive; + private final int worldID; + private boolean fadeMe = false; + + public GT_SoundLoop(ResourceLocation p_i45104_1_, IGregTechTileEntity base, boolean stopWhenActive, + boolean stopWhenInactive) { + super(p_i45104_1_); + this.whileActive = stopWhenActive; + this.whileInactive = stopWhenInactive; + xPosF = base.getXCoord(); + yPosF = base.getYCoord(); + zPosF = base.getZCoord(); + worldID = base.getWorld().provider.dimensionId; + repeat = true; + volume = VOLUME_RAMP; + } + + @Override + public void update() { + if (donePlaying) { + return; + } + if (fadeMe) { + volume -= VOLUME_RAMP; + if (volume <= 0) { + volume = 0; + donePlaying = true; + } + } else if (volume < 1) { + volume += VOLUME_RAMP; + } + World world = Minecraft.getMinecraft().thePlayer.worldObj; + donePlaying = world.provider.dimensionId != worldID || !world + .checkChunksExist((int) xPosF, (int) yPosF, (int) zPosF, (int) xPosF, (int) yPosF, (int) zPosF); + if (donePlaying) return; + TileEntity tile = world.getTileEntity((int) xPosF, (int) yPosF, (int) zPosF); + if (!(tile instanceof IGregTechTileEntity)) { + donePlaying = true; + return; + } + fadeMe |= ((IGregTechTileEntity) tile).isActive() ? whileActive : whileInactive; + } +} |
