package emasher.items;
import emasher.EngineersToolbox;
import emasher.packethandling.PipeColourMessage;
import emasher.blocks.BlockPipeBase;
import emasher.tileentities.TilePipeBase;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;
import java.util.Random;
public class ItemPaintCan extends Item {
private static final double[][] colourTransforms = new double[][] {{0, 0, 0}, {1, 0, 0}, {0, 0.5, 0}, {0.5, 0.25, 0}, {0, 0, 1}, {0.5, 0, 1}, {0, 0.5, 1}, {0.8, 0.8, 0.8}, {1, 0.75, 1}, {0, 1, 0}, {1, 1, 0}, {0, 1, 1}, {1, 0, 1}, {1, 0.5, 0}, {1, 1, 1}};
private int paintColour;
public ItemPaintCan( int paintColour ) {
super();
this.paintColour = paintColour;
this.setMaxDamage( 64 );
this.setCreativeTab( EngineersToolbox.tabItems() );
this.setUnlocalizedName( "paintCan" );
this.setHasSubtypes( true );
this.setMaxStackSize( 1 );
}
public void registerIcons( IIconRegister registry ) {
this.itemIcon = registry.registerIcon( "eng_toolbox:item" + ( 32 + paintColour ) );
}
public boolean getIsRepairable( ItemStack par1ItemStack, ItemStack par2ItemStack ) {
return false;
}
@Override
public ItemStack onItemRightClick( ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer ) {
Random rand = new Random( System.nanoTime() );
float var4 = 1.0F;
double var5 = par3EntityPlayer.prevPosX + ( par3EntityPlayer.posX - par3EntityPlayer.prevPosX ) * ( double ) var4;
double var7 = par3EntityPlayer.prevPosY + ( par3EntityPlayer.posY - par3EntityPlayer.prevPosY ) * ( double ) var4 + 1.62D - ( double ) par3EntityPlayer.yOffset;
double var9 = par3EntityPlayer.prevPosZ + ( par3EntityPlayer.posZ - par3EntityPlayer.prevPosZ ) * ( double ) var4;
MovingObjectPosition var12 = this.getMovingObjectPositionFromPlayer( par2World, par3EntityPlayer, true );
if( var12 == null ) {
return par1ItemStack;
} else if( var12.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK ) {
int var13 = var12.blockX;
int var14 = var12.blockY;
int var15 = var12.blockZ;
//System.out.println(var12.blockX + ", " + var12.blockY + ", " + var12.blockZ);
//int BlockID = par2World.getBlockId(var13, var14, var15);
Block b = par2World.getBlock( var13, var14, var15 );
ItemStack stack = new ItemStack( b, par2World.getBlockMetadata( var12.blockX, var12.blockY, var12.blockZ ) );
int oreIDReq = OreDictionary.getOreID( "plankWood" );
int oreIDThis = OreDictionary.getOreID( stack );
if( oreIDReq == oreIDThis ) {
if( b != emasher.blocks.Blocks.paintedPlanks() || ( b == emasher.blocks.Blocks.paintedPlanks() && par2World.getBlockMetadata( var13, var14, var15 ) != this.paintColour ) ) {
par2World.playSoundEffect( ( double ) var13 + 0.5D, ( double ) var14 + 0.5D, ( double ) var15 + 0.5D, "step.cloth", 1.0F, itemRand.nextFloat() * 0.4F + 0.8F );
for( int i = 0; i < 16; i++ ) {
int met = 15 - this.paintColour;
String id = "" + Block.getIdFromBlock( Blocks.wool );
par2World.spawnParticle( "tilecrack_" + id + "_" + met, ( double ) var13 + rand.nextDouble() - 0.5, var14 + rand.nextDouble() - 0.5, var15 + rand.nextDouble() - 0.5, 0, 0, 0 );
}
par2World.setBlock( var13, var14, var15, emasher.blocks.Blocks.paintedPlanks(), paintColour, 2 );
par1ItemStack.damageItem( 1, par3EntityPlayer );
}
}
if( b == Blocks.wool && par2World.getBlockMetadata( var13, var14, var15 ) != 15 - this.paintColour ) {
par2World.playSoundEffect( ( double ) var13 + 0.5D, ( double ) var14 + 0.5D, ( double ) var15 + 0.5D, "step.cloth", 1.0F, itemRand.nextFloat() * 0.4F + 0.8F );
for( int i = 0; i < 16; i++ ) {
int met = 15 - this.paintColour;
String id = "" + Block.getIdFromBlock( Blocks.wool );
par2World.spawnParticle( "tilecrack_" + id + "_" + met, ( double ) var13 + rand.nextDouble() - 0.5, var14 + rand.nextDouble() - 0.5, var15 + rand.nextDouble() - 0.5, 0, 0, 0 );
}
//par2World.setBlock(var13, var14, var15, SocketsMod.paintedPlanks.blockID, paintColour, 2);
par2World.setBlockMetadataWithNotify( var13, var14, var15, 15 - this.paintColour, 2 );
par1ItemStack.damageItem( 1, par3EntityPlayer );
}
if( b == Blocks.hardened_clay || ( b == Blocks.stained_hardened_clay && par2World.getBlockMetadata( var13, var14, var15 ) != 15 - this.paintColour ) ) {
par2World.playSoundEffect( ( double ) var13 + 0.5D, ( double ) var14 + 0.5D, ( double ) var15 + 0.5D, "step.cloth", 1.0F, itemRand.nextFloat() * 0.4F + 0.8F );
for( int i = 0; i < 16; i++ ) {
int met = 15 - this.paintColour;
String id = "" + Block.getIdFromBlock( Blocks.wool );
par2World.spawnParticle( "tilecrack_" + id + "_" + met, ( double ) var13 + rand.nextDouble() - 0.5, var14 + rand.nextDouble() - 0.5, var15 + rand.nextDouble() - 0.5, 0, 0, 0 );
}
//par2World.setBlock(var13, var14, var15, SocketsMod.paintedPlanks.blockID, paintColour, 2);
if( b == Blocks.hardened_clay ) {
par2World.setBlock( var13, var14, var15, Blocks.stained_hardened_clay, 15 - this.paintColour, 2 );
} else {
par2World.setBlockMetadataWithNotify( var13, var14, var15, 15 - this.paintColour, 2 );
}
par1ItemStack.damageItem( 1, par3EntityPlayer );
}
if( b instanceof BlockPipeBase && par2World.getTileEntity( var13, var14, var15 ) != null && par2World.getTileEntity( var13, var14, var15 ) instanceof TilePipeBase ) {
if( !par2World.isRemote ) {
( ( TilePipeBase ) par2World.getTileEntity( var13, var14, var15 ) ).colour = this.paintColour;
EngineersToolbox.network().sendToDimension(new PipeColourMessage((TilePipeBase) par2World.getTileEntity(var13, var14, var15)), par2World.provider.dimensionId);
}
par2World.playSoundEffect( ( double ) var13 + 0.5D, ( double ) var14 + 0.5D, ( double ) var15 + 0.5D, "step.cloth", 1.0F, itemRand.nextFloat() * 0.4F + 0.8F );
for( int i = 0; i < 16; i++ ) {
int met = 15 - this.paintColour;
String id = "" + Block.getIdFromBlock( Blocks.wool );
par2World.spawnParticle( "tilecrack_" + id + "_" + met, ( double ) var13 + rand.nextDouble() - 0.5, var14 + rand.nextDouble() - 0.5, var15 + rand.nextDouble() - 0.5, 0, 0, 0 );
}
}
}
return par1ItemStack;
}
@Override
public String getUnlocalizedName( ItemStack itemstack ) {
String name = "";
switch(this.paintColour) {
case 0:
name = "Black";
break;
case 1:
name = "Red";
break;
case 2:
name = "Green";
break;
case 3:
name = "Brown";
break;
case 4:
name = "Blue";
break;
case 5:
name = "Purple";
break;
case 6:
name = "Cyan";
break;
case 7:
name = "Light Gray";
break;
case 8:
name = "Gray";
break;
case 9:
name = "Pink";
break;
case 10:
name = "Lime";
break;
case 11:
name = "Yellow";
break;
case 12:
name = "Light Blue";
break;
case 13:
name = "Magenta";
break;
case 14:
name = "Orange";
break;
case 15:
name = "White";
break;
}
//System.out.println(getItemName() + "." + name);
return getUnlocalizedName() + "." + name;
}
}