mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
76 lines
2.1 KiB
Java
76 lines
2.1 KiB
Java
package com.hbm.blocks.machine;
|
|
|
|
import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight;
|
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
|
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.world.World;
|
|
|
|
public class FloodlightBeam extends BlockBeamBase {
|
|
|
|
@Override
|
|
public TileEntity createNewTileEntity(World world, int meta) {
|
|
return new TileEntityFloodlightBeam();
|
|
}
|
|
|
|
public static class TileEntityFloodlightBeam extends TileEntity {
|
|
|
|
public TileEntityFloodlight cache;
|
|
public int sourceX;
|
|
public int sourceY;
|
|
public int sourceZ;
|
|
public int index;
|
|
|
|
@Override
|
|
public void updateEntity() {
|
|
|
|
if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 5 == 0) {
|
|
|
|
if(cache == null) {
|
|
|
|
if(worldObj.getChunkProvider().chunkExists(sourceX >> 4, sourceZ >> 4)) {
|
|
TileEntity tile = worldObj.getTileEntity(sourceX, sourceY, sourceZ);
|
|
if(tile instanceof TileEntityFloodlight) {
|
|
cache = (TileEntityFloodlight) tile; // chunk is loaded, tile exists -> cache
|
|
} else {
|
|
worldObj.setBlock(xCoord, yCoord, zCoord, Blocks.air, 0, 2); // chunk is loaded, tile does not exist -> delete self
|
|
}
|
|
}
|
|
}
|
|
|
|
if((cache != null && (cache.isInvalid() || !cache.isOn || !new BlockPos(xCoord, yCoord, zCoord).equals(cache.lightPos[index]))) || sourceY == 0) {
|
|
worldObj.setBlock(xCoord, yCoord, zCoord, Blocks.air, 0, 2);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void setSource(TileEntityFloodlight floodlight, int x, int y, int z, int i) {
|
|
cache = floodlight;
|
|
sourceX = x;
|
|
sourceY = y;
|
|
sourceZ = z;
|
|
index = i;
|
|
}
|
|
|
|
@Override
|
|
public void readFromNBT(NBTTagCompound nbt) {
|
|
super.readFromNBT(nbt);
|
|
this.sourceX = nbt.getInteger("sourceX");
|
|
this.sourceY = nbt.getInteger("sourceY");
|
|
this.sourceZ = nbt.getInteger("sourceZ");
|
|
this.index = nbt.getInteger("index");
|
|
}
|
|
|
|
@Override
|
|
public void writeToNBT(NBTTagCompound nbt) {
|
|
super.writeToNBT(nbt);
|
|
nbt.setInteger("sourceX", sourceX);
|
|
nbt.setInteger("sourceY", sourceY);
|
|
nbt.setInteger("sourceZ", sourceZ);
|
|
nbt.setInteger("index", index);
|
|
}
|
|
}
|
|
}
|