package com.flansmod.apocalypse.common.blocks;
import com.flansmod.apocalypse.common.FlansModApocalypse;
import com.flansmod.apocalypse.common.entity.EntityTeleporter;
import com.flansmod.common.FlansMod;
import com.flansmod.common.TileEntityItemHolder;
import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class BlockPowerCube extends Block implements ITileEntityProvider
{
public BlockPowerCube(Material material)
{
super(material);
}
@Override
public TileEntity createNewTileEntity(World worldIn, int meta)
{
return new TileEntityPowerCube();
}
public boolean shouldSideBeRendered(IBlockAccess iblockaccess, int i, int j, int k, int l)
{
return false;
}
@Override
public boolean isOpaqueCube()
{
return false;
}
@Override
public boolean canPlaceBlockAt(World par1World, BlockPos pos)
{
return par1World.doesBlockHaveSolidTopSurface(par1World, pos.add(0, -1, 0));
}
@Override
public void onEntityCollidedWithBlock(World par1World, BlockPos pos, Entity par5Entity)
{
}
@Override
public void setBlockBoundsBasedOnState(IBlockAccess access, BlockPos pos)
{
setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1F, 1.0F);
}
@Override
public void setBlockBoundsForItemRender()
{
float var1 = 0.5F;
float var2 = 0.5F;
float var3 = 0.5F;
this.setBlockBounds(0.0F, 0.5F - var2, 0.0F, 1F, 0.5F + var2, 1F);
}
@Override
public int getMobilityFlag()
{
return 1;
}
@Override
public int getRenderType()
{
return -1;
}
@Override
public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
{
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 2; j++)
{
if(world.provider.getDimensionId() == FlansModApocalypse.dimensionID && isPortal(world, pos.add(-3 * i, 0, -3 * j)))
{
world.spawnEntityInWorld(new EntityTeleporter(world, pos.add(-3 * i, 0, -3 * j)));
}
}
}
}
private boolean isPortal(World world, BlockPos pos)
{
if(world.getBlockState(pos).getBlock() != FlansModApocalypse.blockPowerCube || world.getBlockState(pos.add(3, 0, 0)).getBlock() != FlansModApocalypse.blockPowerCube
|| world.getBlockState(pos.add(0, 0, 3)).getBlock() != FlansModApocalypse.blockPowerCube || world.getBlockState(pos.add(3, 0, 3)).getBlock() != FlansModApocalypse.blockPowerCube)
return false;
for(int i = 0; i < 2; i++)
for(int j = 0; j < 2; j++)
if(world.getBlockState(pos.add(i * 3, -1, j * 3)).getBlock() != Blocks.obsidian || world.getBlockState(pos.add(1 + i, -1, 1 + j)).getBlock() != Blocks.obsidian)
return false;
return true;
}
}