public boolean canPlaceBlockAt(World par1World, int par2, int par3, int par4, EntityPlayer player)
{
int i = 0;
byte k = 0;
byte j = 0;
byte flag = 0;
for (k = 0; k < 3; k++)
for (j = 0; j < 3; j++) {
i = par1World.getBlockId(par2 + k - 1, par3, par4 + j - 1);
if (i == 0 || blocksList[i].blockMaterial.isGroundCover())
flag++;
}
return flag == 9;
}
public void onBlockPlacedBy(World world, int i, int j, int k, EntityLiving entityliving)
{
int l = MathHelper.floor_double((double)((entityliving.rotationYaw * 4F) / 360F) + 0.5D) & 3;
world.setBlockMetadataWithNotify(i, j, k, l);
world.setBlockAndMetadataWithNotify(i + 1 , j, k, Block.smelteryCollision.blockID, 0);
world.setBlockAndMetadataWithNotify(i - 1, j, k, Block.smelteryCollision.blockID, 1);
world.setBlockAndMetadataWithNotify(i , j, k + 1, Block.smelteryCollision.blockID, 2);
world.setBlockAndMetadataWithNotify(i , j, k - 1, Block.smelteryCollision.blockID, 3);
world.setBlockAndMetadataWithNotify(i + 1, j, k + 1, Block.smelteryCollision.blockID, 4);
world.setBlockAndMetadataWithNotify(i - 1, j, k + 1, Block.smelteryCollision.blockID, 5);
world.setBlockAndMetadataWithNotify(i + 1, j, k - 1, Block.smelteryCollision.blockID, 6);
world.setBlockAndMetadataWithNotify(i - 1 , j, k - 1, Block.smelteryCollision.blockID, 7);
if (l == 0) // north
world.setBlockMetadata(i, j, k - 1, 8);
else if (l == 1) // east
world.setBlockMetadata(i + 1, j, k, 9);
else if (l == 2) // south
world.setBlockMetadata(i, j, k + 1, 10);
else if (l == 3) // west
world.setBlockMetadata(i - 1, j, k, 11);
}
А это точно также было.Oldestkon написал(а):При разрушении убивали его, а он убивал все вокруг него.
Скажи это моему мозгу, который жалеет лишние такты ЦПУ на обработку ненужных тайл ентити и несколько десятков\сотен байт памяти. Хорошо что тут ещё ГПУ не трогается. У меня с оптимизацией вообще маразм.anti344 написал(а):Но куда проще хранить коорды контрольного тайла, чем так париться, как это делаешь ты.
public class TileEntityGhost extends TileEntity{
public int parentXCoord;
public int parentYCoord;
public int parentZCoord;
public boolean canUpdate(){
return false;
}
public void writeToNBT(NBTTagCompound nbt){
super.writeToNBT(nbt);
nbt.setInteger("parentXCoord", parentXCoord);
nbt.setInteger("parentYCoord", parentYCoord);
nbt.setInteger("parentZCoord", parentZCoord);
}
public void readFromNBT(NBTTagCompound nbt){
super.readFromNBT(nbt);
parentXCoord = nbt.getInteger("parentXCoord");
parentYCoord = nbt.getInteger("parentYCoord");
parentZCoord = nbt.getInteger("parentZCoord");
}
}
public class BlockGhost extends BlockContainerBase{
public BlockGhost(String unlocalizedName, Material material){
super(unlocalizedName, material);
}
public TileEntity createNewTileEntity(World world, int metadata){
return new TileEntityGhost();
}
public boolean renderAsNormalBlock(){
return false;
}
public int getRenderType(){
return -1;
}
public boolean isOpaqueCube(){
return false;
}
}
Мне нужен универсальный блок...laz2727 написал(а):Тот же, что и у оригинала же.