mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
72 lines
1.9 KiB
Java
72 lines
1.9 KiB
Java
package com.hbm.tileentity;
|
|
|
|
import com.hbm.blocks.BlockDummyable;
|
|
import com.hbm.blocks.IProxyController;
|
|
import com.hbm.util.Compat;
|
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
|
|
public class TileEntityProxyBase extends TileEntityLoadedBase {
|
|
|
|
public BlockPos cachedPosition;
|
|
|
|
public boolean canUpdate() {
|
|
return false;
|
|
}
|
|
|
|
public TileEntity getTE() {
|
|
|
|
if(worldObj == null) return null;
|
|
|
|
if(cachedPosition != null) {
|
|
TileEntity te = Compat.getTileStandard(worldObj, cachedPosition.getX(), cachedPosition.getY(), cachedPosition.getZ());
|
|
if(te != null && !(te instanceof TileEntityProxyBase)) return te;
|
|
cachedPosition = null;
|
|
this.markDirty();
|
|
}
|
|
|
|
if(this.getBlockType() instanceof BlockDummyable) {
|
|
|
|
BlockDummyable dummy = (BlockDummyable) this.getBlockType();
|
|
|
|
int[] pos = dummy.findCore(worldObj, xCoord, yCoord, zCoord);
|
|
|
|
if(pos != null) {
|
|
|
|
TileEntity te = Compat.getTileStandard(worldObj, pos[0], pos[1], pos[2]);
|
|
if(te != null && !(te instanceof TileEntityProxyBase)) return te;
|
|
}
|
|
}
|
|
|
|
if(this.getBlockType() instanceof IProxyController) {
|
|
IProxyController controller = (IProxyController) this.getBlockType();
|
|
TileEntity tile = controller.getCore(worldObj, xCoord, yCoord, zCoord);
|
|
|
|
if(tile != null && !(tile instanceof TileEntityProxyBase)) return tile;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void readFromNBT(NBTTagCompound nbt) {
|
|
super.readFromNBT(nbt);
|
|
|
|
if(nbt.getBoolean("hasPos")) cachedPosition = new BlockPos(nbt.getInteger("pX"), nbt.getInteger("pY"), nbt.getInteger("pZ"));
|
|
}
|
|
|
|
@Override
|
|
public void writeToNBT(NBTTagCompound nbt) {
|
|
super.writeToNBT(nbt);
|
|
|
|
if(this.cachedPosition != null) {
|
|
nbt.setBoolean("hasPos", true);
|
|
nbt.setInteger("pX", this.cachedPosition.getX());
|
|
nbt.setInteger("pY", this.cachedPosition.getY());
|
|
nbt.setInteger("pZ", this.cachedPosition.getZ());
|
|
}
|
|
}
|
|
}
|