mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
129 lines
2.8 KiB
Java
129 lines
2.8 KiB
Java
package com.hbm.tileentity.machine;
|
|
|
|
import com.hbm.tileentity.TileEntityTickingBase;
|
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import io.netty.buffer.ByteBuf;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.AxisAlignedBB;
|
|
import net.minecraft.util.ChunkCoordinates;
|
|
import net.minecraft.world.EnumSkyBlock;
|
|
|
|
public class TileEntitySolarMirror extends TileEntityTickingBase {
|
|
|
|
public int tX;
|
|
public int tY;
|
|
public int tZ;
|
|
public boolean isOn;
|
|
|
|
@Override
|
|
public String getInventoryName() {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void updateEntity() {
|
|
|
|
if(!worldObj.isRemote) {
|
|
|
|
if(worldObj.getTotalWorldTime() % 20 == 0)
|
|
this.networkPackNT(200);
|
|
|
|
if(tY < yCoord) {
|
|
isOn = false;
|
|
return;
|
|
}
|
|
|
|
int sun = worldObj.getSavedLightValue(EnumSkyBlock.Sky, xCoord, yCoord, zCoord) - worldObj.skylightSubtracted - 11;
|
|
|
|
if(sun <= 0 || !worldObj.canBlockSeeTheSky(xCoord, yCoord + 1, zCoord)) {
|
|
isOn = false;
|
|
return;
|
|
}
|
|
|
|
isOn = true;
|
|
|
|
TileEntity te = worldObj.getTileEntity(tX, tY - 1, tZ);
|
|
|
|
if(te instanceof TileEntitySolarBoiler) {
|
|
TileEntitySolarBoiler boiler = (TileEntitySolarBoiler)te;
|
|
boiler.heat += sun;
|
|
}
|
|
} else {
|
|
|
|
TileEntity te = worldObj.getTileEntity(tX, tY - 1, tZ);
|
|
|
|
if(isOn && te instanceof TileEntitySolarBoiler) {
|
|
TileEntitySolarBoiler boiler = (TileEntitySolarBoiler)te;
|
|
boiler.primary.add(new ChunkCoordinates(xCoord, yCoord, zCoord));
|
|
}
|
|
|
|
if(worldObj.getTotalWorldTime() % 20 == 0)
|
|
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
|
|
}
|
|
}
|
|
|
|
@Override public void serialize(ByteBuf buf) {
|
|
buf.writeInt(this.tX);
|
|
buf.writeInt(this.tY);
|
|
buf.writeInt(this.tZ);
|
|
buf.writeBoolean(this.isOn);
|
|
}
|
|
|
|
@Override public void deserialize(ByteBuf buf) {
|
|
this.tX = buf.readInt();
|
|
this.tY = buf.readInt();
|
|
this.tZ = buf.readInt();
|
|
this.isOn = buf.readBoolean();
|
|
}
|
|
|
|
public void setTarget(int x, int y, int z) {
|
|
tX = x;
|
|
tY = y;
|
|
tZ = z;
|
|
this.markDirty();
|
|
this.networkPackNT(200);
|
|
}
|
|
|
|
public void readFromNBT(NBTTagCompound nbt) {
|
|
super.readFromNBT(nbt);
|
|
tX = nbt.getInteger("targetX");
|
|
tY = nbt.getInteger("targetY");
|
|
tZ = nbt.getInteger("targetZ");
|
|
}
|
|
|
|
public void writeToNBT(NBTTagCompound nbt) {
|
|
super.writeToNBT(nbt);
|
|
nbt.setInteger("targetX", tX);
|
|
nbt.setInteger("targetY", tY);
|
|
nbt.setInteger("targetZ", tZ);
|
|
}
|
|
|
|
AxisAlignedBB bb = null;
|
|
|
|
@Override
|
|
public AxisAlignedBB getRenderBoundingBox() {
|
|
|
|
if(bb == null) {
|
|
bb = AxisAlignedBB.getBoundingBox(
|
|
xCoord - 25,
|
|
yCoord - 25,
|
|
zCoord - 25,
|
|
xCoord + 25,
|
|
yCoord + 25,
|
|
zCoord + 25
|
|
);
|
|
}
|
|
|
|
return bb;
|
|
}
|
|
|
|
@Override
|
|
@SideOnly(Side.CLIENT)
|
|
public double getMaxRenderDistanceSquared() {
|
|
return 65536.0D;
|
|
}
|
|
}
|