2014-07-13 03:43:42 +02:00
|
|
|
package mekanism.common.tile;
|
|
|
|
|
2014-07-26 22:45:48 +02:00
|
|
|
import io.netty.buffer.ByteBuf;
|
|
|
|
|
2014-07-22 23:34:19 +02:00
|
|
|
import java.util.ArrayList;
|
|
|
|
|
2014-07-13 03:43:42 +02:00
|
|
|
import mekanism.api.Coord4D;
|
|
|
|
import mekanism.api.lasers.LaserManager;
|
2014-07-22 23:34:19 +02:00
|
|
|
import mekanism.common.Mekanism;
|
|
|
|
import mekanism.common.network.PacketTileEntity.TileEntityMessage;
|
2014-07-14 21:39:34 +02:00
|
|
|
import net.minecraft.item.ItemStack;
|
2014-07-13 03:43:42 +02:00
|
|
|
import net.minecraftforge.common.util.ForgeDirection;
|
|
|
|
|
|
|
|
public class TileEntityLaser extends TileEntityElectricBlock
|
|
|
|
{
|
2014-07-30 23:26:03 +02:00
|
|
|
public static final double LASER_ENERGY = 5000;
|
2014-07-13 03:43:42 +02:00
|
|
|
|
2014-07-22 23:34:19 +02:00
|
|
|
public boolean on;
|
|
|
|
|
2014-07-13 03:43:42 +02:00
|
|
|
public TileEntityLaser()
|
|
|
|
{
|
2014-07-23 02:25:10 +02:00
|
|
|
super("Laser", 2*LASER_ENERGY);
|
2014-07-14 21:39:34 +02:00
|
|
|
inventory = new ItemStack[0];
|
2014-07-13 03:43:42 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onUpdate()
|
|
|
|
{
|
2014-07-14 21:39:34 +02:00
|
|
|
super.onUpdate();
|
|
|
|
|
2014-07-22 23:34:19 +02:00
|
|
|
if(worldObj.isRemote)
|
|
|
|
{
|
|
|
|
if(on)
|
|
|
|
{
|
|
|
|
LaserManager.fireLaserClient(Coord4D.get(this), ForgeDirection.getOrientation(facing), worldObj);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
2014-07-13 03:43:42 +02:00
|
|
|
{
|
2014-07-22 23:34:19 +02:00
|
|
|
if(getEnergy() >= LASER_ENERGY)
|
|
|
|
{
|
|
|
|
if(!on)
|
|
|
|
{
|
|
|
|
on = true;
|
|
|
|
Mekanism.packetHandler.sendToAllAround(new TileEntityMessage(Coord4D.get(this), getNetworkedData(new ArrayList())), Coord4D.get(this).getTargetPoint(50D));
|
|
|
|
}
|
2014-07-23 02:25:10 +02:00
|
|
|
|
2014-07-22 23:34:19 +02:00
|
|
|
LaserManager.fireLaser(Coord4D.get(this), ForgeDirection.getOrientation(facing), LASER_ENERGY, worldObj);
|
|
|
|
setEnergy(getEnergy() - LASER_ENERGY);
|
|
|
|
}
|
|
|
|
else if(on)
|
|
|
|
{
|
|
|
|
on = false;
|
|
|
|
Mekanism.packetHandler.sendToAllAround(new TileEntityMessage(Coord4D.get(this), getNetworkedData(new ArrayList())), Coord4D.get(this).getTargetPoint(50D));
|
|
|
|
}
|
2014-07-13 03:43:42 +02:00
|
|
|
}
|
|
|
|
}
|
2014-07-22 23:34:19 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public ArrayList getNetworkedData(ArrayList data)
|
|
|
|
{
|
|
|
|
super.getNetworkedData(data);
|
|
|
|
|
|
|
|
data.add(on);
|
|
|
|
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void handlePacketData(ByteBuf dataStream)
|
|
|
|
{
|
|
|
|
super.handlePacketData(dataStream);
|
|
|
|
|
|
|
|
on = dataStream.readBoolean();
|
|
|
|
}
|
2014-07-13 03:43:42 +02:00
|
|
|
}
|