Package mekanism.client.sound

Source Code of mekanism.client.sound.TileSound

package mekanism.client.sound;

import mekanism.api.Pos3D;
import mekanism.client.HolidayManager;
import mekanism.common.IActiveState;

import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

/**
* Sound -- an object that is created in SoundHandler. A 'Sound' object runs off of
* PaulsCode's SoundSystem. It has several methods; play(), for looping the clip,
* stop(), for stopping the loop, remove(), for removing the sound from PaulsCode,
* and updateVolume() for updating the volume based on where the player is.
* @author AidanBrady
*
*/
@SideOnly(Side.CLIENT)
public class TileSound extends Sound
{
  /** The TileEntity this sound is associated with. */
  public TileEntity tileEntity;

  /**
   * A sound that runs off of the PaulsCode sound system.
   * @param id - unique identifier
   * @param sound - bundled path to the sound
   * @param tileentity - the tile this sound is playing from.
   */
  public TileSound(String id, String sound, TileEntity tileentity)
  {
    super(id, sound, tileentity, new Pos3D(tileentity));

    tileEntity = tileentity;
  }

  @Override
  public float getMultiplier()
  {
    return super.getMultiplier()*((IHasSound)tileEntity).getVolumeMultiplier();
  }

  @Override
  public Pos3D getLocation()
  {
    return new Pos3D(tileEntity);
  }

  @Override
  public boolean update(World world)
  {
    if(!(tileEntity instanceof IHasSound))
    {
      return false;
    }
    else if(world.getTileEntity(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord) != tileEntity)
    {
      return false;
    }
    else if(!HolidayManager.filterSound(((IHasSound)tileEntity).getSoundPath()).equals(soundPath))
    {
      return false;
    }
    else if(tileEntity instanceof IActiveState)
    {
      if(((IActiveState)tileEntity).getActive() != isPlaying)
      {
        if(((IActiveState)tileEntity).getActive())
        {
          play();
        }
        else {
          stopLoop();
        }
      }
    }

    if(isPlaying)
    {
      ticksSincePlay++;
    }

    return true;
  }
}
TOP

Related Classes of mekanism.client.sound.TileSound

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.