157 lines
4.9 KiB
Java

package com.hbm.tileentity.machine;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.machine.SoyuzLauncher;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.init.Blocks;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntitySoyuzStruct extends TileEntity {
int age;
@Override
public void updateEntity() {
if(worldObj.isRemote)
return;
age++;
if(age < 20)
return;
age = 0;
/// CHECK PAD ///
for(int i = -6; i <= 6; i++)
for(int j = 3; j <= 4; j++)
for(int k = -6; k <= 6; k++)
if(worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.struct_launcher)
return;
for(int i = -1; i <= 1; i++)
for(int j = 3; j <= 4; j++)
for(int k = -8; k <= -7; k++)
if(worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.struct_launcher)
return;
for(int i = -2; i <= 2; i++)
for(int j = 3; j <= 4; j++)
for(int k = 7; k <= 9; k++)
if(worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.struct_launcher)
return;
for(int i = -2; i <= 2; i++)
for(int k = 5; k <= 9; k++)
if(worldObj.getBlock(xCoord + i, yCoord + 51, zCoord + k) != ModBlocks.struct_launcher)
return;
for(int i = -1; i <= 1; i++)
for(int k = -8; k <= -6; k++)
if(worldObj.getBlock(xCoord + i, yCoord + 38, zCoord + k) != ModBlocks.struct_launcher)
return;
/// CHECK LEGS ///
for(int i = 3; i <= 6; i++)
for(int j = 0; j <= 2; j++)
for(int k = 3; k <= 6; k++)
if(worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.concrete &&
worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.concrete_smooth)
return;
for(int i = -6; i <= -3; i++)
for(int j = 0; j <= 2; j++)
for(int k = 3; k <= 6; k++)
if(worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.concrete &&
worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.concrete_smooth)
return;
for(int i = -6; i <= -3; i++)
for(int j = 0; j <= 2; j++)
for(int k = -6; k <= -3; k++)
if(worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.concrete &&
worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.concrete_smooth)
return;
for(int i = 3; i <= 6; i++)
for(int j = 0; j <= 2; j++)
for(int k = -6; k <= -3; k++)
if(worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.concrete &&
worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.concrete_smooth)
return;
for(int i = -1; i <= 1; i++)
for(int j = 0; j <= 2; j++)
for(int k = -8; k <= -6; k++)
if(worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.concrete &&
worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.concrete_smooth)
return;
for(int i = -2; i <= 2; i++)
for(int j = 0; j <= 2; j++)
for(int k = 5; k <= 9; k++)
if(worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.concrete &&
worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.concrete_smooth)
return;
/// CHECK SCAFFOLDING ///
for(int i = -1; i <= 1; i++)
for(int j = 5; j <= 50; j++)
for(int k = 6; k <= 8; k++)
if(worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k) != ModBlocks.struct_scaffold)
return;
for(int j = 5; j <= 37; j++)
if(worldObj.getBlock(xCoord, yCoord + j, zCoord - 7) != ModBlocks.struct_scaffold)
return;
/// CHECKS COMPLETE ///
/// DELETE SCAFFOLDING ///
for(int i = -2; i <= 2; i++)
for(int k = 5; k <= 9; k++)
worldObj.setBlock(xCoord + i, yCoord + 51, zCoord + k, Blocks.air);
for(int i = -1; i <= 1; i++)
for(int k = -8; k <= -6; k++)
worldObj.setBlock(xCoord + i, yCoord + 38, zCoord + k, Blocks.air);
for(int i = -2; i <= 2; i++)
for(int j = 0; j <= 2; j++)
for(int k = 5; k <= 9; k++)
worldObj.setBlock(xCoord + i, yCoord + j, zCoord + k, Blocks.air);
for(int i = -1; i <= 1; i++)
for(int j = 5; j <= 50; j++)
for(int k = 6; k <= 8; k++)
worldObj.setBlock(xCoord + i, yCoord + j, zCoord + k, Blocks.air);
for(int j = 5; j <= 37; j++)
worldObj.setBlock(xCoord, yCoord + j, zCoord - 7, Blocks.air);
/// GENERATE LAUNCHER ///
ForgeDirection dir = ForgeDirection.EAST;
worldObj.setBlock(xCoord, yCoord, zCoord, Blocks.air);
worldObj.setBlock(xCoord , yCoord + SoyuzLauncher.height, zCoord, ModBlocks.soyuz_launcher, dir.ordinal() + SoyuzLauncher.offset, 3);
((SoyuzLauncher)ModBlocks.soyuz_launcher).fillSpace(worldObj, xCoord, yCoord, zCoord, dir, 0);
}
@Override
public AxisAlignedBB getRenderBoundingBox() {
return TileEntity.INFINITE_EXTENT_AABB;
}
@Override
@SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared() {
return 65536.0D;
}
}