Mekanism-tilera-Edition/src/main/java/mekanism/common/tile/TileEntityLaser.java

77 lines
1.7 KiB
Java
Raw Normal View History

2014-07-13 03:43:42 +02:00
package mekanism.common.tile;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
2014-07-13 03:43:42 +02:00
import mekanism.api.Coord4D;
import mekanism.api.lasers.LaserManager;
import mekanism.common.Mekanism;
import mekanism.common.network.PacketTileEntity.TileEntityMessage;
import net.minecraft.item.ItemStack;
2014-07-13 03:43:42 +02:00
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityLaser extends TileEntityElectricBlock
{
public static final double LASER_ENERGY = 5000;
2014-07-13 03:43:42 +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);
inventory = new ItemStack[0];
2014-07-13 03:43:42 +02:00
}
@Override
public void onUpdate()
{
super.onUpdate();
if(worldObj.isRemote)
{
if(on)
{
LaserManager.fireLaserClient(Coord4D.get(this), ForgeDirection.getOrientation(facing), worldObj);
}
}
else
2014-07-13 03:43:42 +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
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
}
}
@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
}