package emasher.items;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import emasher.api.ModuleRegistry;
import emasher.api.SocketModule;
import emasher.tileentities.TileSocket;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import java.util.List;
public class ItemBlockSocket extends ItemBlock {
public ItemBlockSocket( Block block ) {
super( block );
setHasSubtypes( false );
}
@Override
public int getMetadata( int damage ) {
return 0;
}
@Override
@SideOnly( Side.CLIENT )
public boolean hasEffect( ItemStack par1ItemStack, int pass ) {
return par1ItemStack.getTagCompound() != null && pass == 0;
}
@Override
@SideOnly( Side.CLIENT )
public boolean requiresMultipleRenderPasses() {
return true;
}
/*@Override
@SideOnly(Side.CLIENT)
public boolean hasEffect(ItemStack par1ItemStack, int pass)
{
return par1ItemStack.getTagCompound() != null;
}*/
@Override
public void addInformation( ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4 ) {
NBTTagCompound data = par1ItemStack.getTagCompound();
if( data != null ) for( int i = 0; i < 6; i++ ) {
if( data.hasKey( "side" + i ) ) {
int index = data.getInteger( "side" + i );
if( index != 0 ) {
SocketModule m = ModuleRegistry.getModule( index );
par3List.add( EnumChatFormatting.AQUA + "- " + m.getLocalizedName() );
}
}
}
}
@Override
public boolean onItemUse( ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10 ) {
Block b1 = par3World.getBlock( par4, par5, par6 );
if( b1 == Blocks.snow_layer && ( par3World.getBlockMetadata( par4, par5, par6 ) & 7 ) < 1 ) {
par7 = 1;
} else if( b1 != Blocks.vine && b1 != Blocks.tallgrass && b1 != Blocks.deadbush
&& !b1.isReplaceable( par3World, par4, par5, par6 ) ) {
if( par7 == 0 ) {
--par5;
}
if( par7 == 1 ) {
++par5;
}
if( par7 == 2 ) {
--par6;
}
if( par7 == 3 ) {
++par6;
}
if( par7 == 4 ) {
--par4;
}
if( par7 == 5 ) {
++par4;
}
}
if( par1ItemStack.stackSize == 0 ) {
return false;
} else if( !par2EntityPlayer.canPlayerEdit( par4, par5, par6, par7, par1ItemStack ) ) {
return false;
} else if( par5 == 255 && emasher.blocks.Blocks.socket().getMaterial().isSolid() ) {
return false;
} else if( par3World.canPlaceEntityOnSide( emasher.blocks.Blocks.socket(), par4, par5, par6, false, par7, par2EntityPlayer, par1ItemStack ) ) {
Block block = emasher.blocks.Blocks.socket();
int j1 = this.getMetadata( par1ItemStack.getItemDamage() );
int k1 = emasher.blocks.Blocks.socket().onBlockPlaced( par3World, par4, par5, par6, par7, par8, par9, par10, j1 );
if( placeBlockAt( par1ItemStack, par2EntityPlayer, par3World, par4, par5, par6, par7, par8, par9, par10, k1 ) ) {
par3World.playSoundEffect( ( double ) ( ( float ) par4 + 0.5F ), ( double ) ( ( float ) par5 + 0.5F ), ( double ) ( ( float ) par6 + 0.5F ), block.stepSound.getBreakSound(), ( block.stepSound.getVolume() + 1.0F ) / 2.0F, block.stepSound.getPitch() * 0.8F );
--par1ItemStack.stackSize;
TileEntity t = par3World.getTileEntity( par4, par5, par6 );
if( t != null && t instanceof TileSocket ) {
TileSocket ts = ( TileSocket ) t;
if( par1ItemStack.getTagCompound() != null ) ts.readFromNBT( par1ItemStack.getTagCompound() );
ts.xCoord = par4;
ts.yCoord = par5;
ts.zCoord = par6;
ts.setWorldObj( par3World );
for( int i = 0; i < 6; i++ ) {
SocketModule m = ts.getSide( ForgeDirection.getOrientation( i ) );
m.onSocketPlaced( ts.getConfigForSide( ForgeDirection.getOrientation( i ) ), ts, ForgeDirection.getOrientation( i ) );
}
}
}
par3World.notifyBlockChange( par4, par5, par6, emasher.blocks.Blocks.socket() );
return true;
} else {
return false;
}
}
}