2013-07-26 21:18:53 -07:00
package tconstruct.blocks ;
import java.util.List ;
import tconstruct.TConstruct ;
import tconstruct.blocks.logic.DryingRackLogic ;
import tconstruct.client.block.DryingRackRender ;
import tconstruct.library.TConstructRegistry ;
2013-12-01 12:19:43 +00:00
import mantle.blocks.abstracts.InventoryBlock ;
2013-07-26 21:18:53 -07:00
import tconstruct.library.tools.AbilityHelper ;
import net.minecraft.block.material.Material ;
import net.minecraft.entity.Entity ;
import net.minecraft.entity.EntityLiving ;
import net.minecraft.entity.player.EntityPlayer ;
2013-12-31 15:30:34 -05:00
import net.minecraft.init.Blocks ;
2013-07-26 21:18:53 -07:00
import net.minecraft.item.ItemStack ;
import net.minecraft.tileentity.TileEntity ;
import net.minecraft.util.AxisAlignedBB ;
2013-12-31 11:26:08 -05:00
import net.minecraft.util.IIcon ;
2013-07-26 21:18:53 -07:00
import net.minecraft.util.MathHelper ;
import net.minecraft.world.IBlockAccess ;
import net.minecraft.world.World ;
public class DryingRack extends InventoryBlock
{
2013-12-31 11:26:08 -05:00
public DryingRack ()
2013-07-26 21:18:53 -07:00
{
2014-01-09 04:08:38 -05:00
super ( Material . field_151575_d );
2014-01-16 01:36:18 -05:00
this . func_149647_a ( TConstructRegistry . blockTab );
2014-01-15 23:19:27 -05:00
func_149711_c ( 2 . 0f );
2014-01-29 22:58:29 -05:00
field_149762_H = field_149777_j ;
2013-07-26 21:18:53 -07:00
}
@Override
2014-01-15 00:34:19 -05:00
public TileEntity func_149915_a ( World world , int metadata )
2013-07-26 21:18:53 -07:00
{
return new DryingRackLogic ();
}
@Override
2014-02-01 14:18:17 -05:00
public int func_149701_w ()
2013-07-26 21:18:53 -07:00
{
return 1 ;
}
@Override
public Integer getGui ( World world , int x , int y , int z , EntityPlayer entityplayer )
{
return null ;
}
@Override
public Object getModInstance ()
{
return TConstruct . instance ;
}
public int onBlockPlaced ( World world , int x , int y , int z , int side , float hitX , float hitY , float hitZ , int meta )
{
if ( side > 1 )
return side ;
return meta ;
}
public void onBlockPlacedBy ( World world , int x , int y , int z , EntityLiving living , ItemStack stack )
{
int meta = world . getBlockMetadata ( x , y , z );
if ( meta == 0 )
{
int l = MathHelper . floor_double (( double ) ( living . rotationYaw * 4 . 0F / 360 . 0F ) + 0 . 5D ) & 3 ;
int direction = l % 2 ;
if ( direction == 1 )
world . setBlockMetadataWithNotify ( x , y , z , 1 , 2 );
}
}
/* Activation */
@Override
2014-02-01 14:18:17 -05:00
public boolean func_149727_a ( World world , int x , int y , int z , EntityPlayer player , int side , float clickX , float clickY , float clickZ )
2013-07-26 21:18:53 -07:00
{
return activateDryingRack ( world , x , y , z , player );
}
boolean activateDryingRack ( World world , int x , int y , int z , EntityPlayer player )
{
if ( ! world . isRemote )
{
2014-01-09 04:08:38 -05:00
DryingRackLogic logic = ( DryingRackLogic ) world . func_147438_o ( x , y , z );
2013-07-26 21:18:53 -07:00
if ( ! logic . isStackInSlot ( 0 ))
{
ItemStack stack = player . getCurrentEquippedItem ();
if ( stack != null )
{
stack = player . inventory . decrStackSize ( player . inventory . currentItem , 1 );
logic . setInventorySlotContents ( 0 , stack );
}
}
else
{
if ( logic . isStackInSlot ( 0 ))
{
ItemStack decrStack = logic . decrStackSize ( 0 , 1 );
if ( decrStack != null )
addItemToInventory ( player , world , x , y , z , decrStack );
}
}
2014-02-01 17:28:41 +11:00
world . func_147471_g ( x , y , z );
2013-07-26 21:18:53 -07:00
}
return true ;
}
public void addItemToInventory ( EntityPlayer player , World world , int x , int y , int z , ItemStack stack )
{
AbilityHelper . spawnItemAtPlayer ( player , stack );
}
public AxisAlignedBB getSelectedBoundingBoxFromPool ( World world , int x , int y , int z )
{
int metadata = world . getBlockMetadata ( x , y , z );
float xMin = 0F ;
float yMin = 0F ;
float zMin = 0F ;
float xMax = 1F ;
float yMax = 1F ;
float zMax = 1F ;
switch ( metadata )
{
case 0 :
zMin = 0 . 375F ;
yMax = 0 . 25F ;
zMax = 0 . 625F ;
break ;
case 1 :
xMin = 0 . 375F ;
yMax = 0 . 25F ;
xMax = 0 . 625F ;
break ;
case 2 :
zMin = 0 . 75F ;
yMin = 0 . 75F ;
break ;
case 3 :
zMax = 0 . 25F ;
yMin = 0 . 75F ;
break ;
case 4 :
xMin = 0 . 75F ;
yMin = 0 . 75F ;
break ;
case 5 :
xMax = 0 . 25F ;
yMin = 0 . 75F ;
break ;
}
return AxisAlignedBB . getAABBPool (). getAABB (( double ) x + xMin , ( double ) y + yMin , ( double ) z + zMin , ( double ) x + xMax , ( double ) y + yMax , ( double ) z + zMax );
}
public void setBlockBoundsBasedOnState ( IBlockAccess world , int x , int y , int z )
{
int metadata = world . getBlockMetadata ( x , y , z );
float xMin = 0F ;
float yMin = 0F ;
float zMin = 0F ;
float xMax = 1F ;
float yMax = 1F ;
float zMax = 1F ;
switch ( metadata )
{
case 0 :
zMin = 0 . 375F ;
yMax = 0 . 25F ;
zMax = 0 . 625F ;
break ;
case 1 :
xMin = 0 . 375F ;
yMax = 0 . 25F ;
xMax = 0 . 625F ;
break ;
case 2 :
zMin = 0 . 75F ;
yMin = 0 . 75F ;
break ;
case 3 :
zMax = 0 . 25F ;
yMin = 0 . 75F ;
break ;
case 4 :
xMin = 0 . 75F ;
yMin = 0 . 75F ;
break ;
case 5 :
xMax = 0 . 25F ;
yMin = 0 . 75F ;
break ;
}
2014-01-16 01:36:18 -05:00
this . func_149676_a ( xMin , yMin , zMin , xMax , yMax , zMax );
2013-07-26 21:18:53 -07:00
}
public void addCollisionBoxesToList ( World world , int x , int y , int z , AxisAlignedBB aabb , List list , Entity entity )
{
this . setBlockBoundsBasedOnState ( world , x , y , z );
2014-02-01 14:18:17 -05:00
super . func_149743_a ( world , x , y , z , aabb , list , entity );
2013-07-26 21:18:53 -07:00
}
/* Rendering */
@Override
2014-02-01 14:18:17 -05:00
public int func_149645_b ()
2013-07-26 21:18:53 -07:00
{
return DryingRackRender . model ;
}
@Override
public String [] getTextureNames ()
{
String [] textureNames = { "castingtable_top" , "castingtable_side" , "castingtable_bottom" , "faucet" , "blockcast_top" , "blockcast_side" , "blockcast_bottom" };
return textureNames ;
}
@Override
2014-02-01 14:18:17 -05:00
public IIcon func_149691_a ( int side , int meta )
2013-07-26 21:18:53 -07:00
{
2014-02-01 14:18:17 -05:00
return Blocks . planks . func_149691_a ( side , 0 );
2013-07-26 21:18:53 -07:00
}
public int getTextureIndex ( int side )
{
if ( side == 0 )
return 2 ;
if ( side == 1 )
return 0 ;
return 1 ;
}
@Override
2014-01-16 01:46:21 -05:00
public boolean func_149686_d ()
2013-07-26 21:18:53 -07:00
{
return false ;
}
@Override
2014-02-01 14:18:17 -05:00
public boolean func_149662_c ()
2013-07-26 21:18:53 -07:00
{
return false ;
}
2014-01-15 23:19:27 -05:00
@Override
public TileEntity createTileEntity ( World world , int metadata )
{
return new DryingRackLogic ();
}
2013-07-26 21:18:53 -07:00
/*@Override
public boolean shouldSideBeRendered (IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
{
return true;
}*/
/*@Override
public void getSubBlocks (int id, CreativeTabs tab, List list)
{
for (int iter = 0; iter < 3; iter++)
{
list.add(new ItemStack(id, 1, iter));
}
}*/
/*@Override
public void setBlockBoundsBasedOnState (IBlockAccess world, int x, int y, int z)
{
int meta = world.getBlockMetadata(x, y, z);
if (meta != 1)
{
this.setBlockBounds(0, 0, 0, 1, 1, 1);
}
else
{
FaucetLogic logic = (FaucetLogic) world.getBlockTileEntity(x, y, z);
float xMin = 0.25F;
float xMax = 0.75F;
float zMin = 0.25F;
float zMax = 0.75F;
switch (logic.getRenderDirection())
{
case 2:
zMin = 0.625F;
zMax = 1.0F;
break;
case 3:
zMax = 0.375F;
zMin = 0F;
break;
case 4:
xMin = 0.625F;
xMax = 1.0F;
break;
case 5:
xMax = 0.375F;
xMin = 0F;
break;
}
this.setBlockBounds(xMin, 0.25F, zMin, xMax, 0.625F, zMax);
}
}*/
/*@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool (World world, int x, int y, int z)
{
int meta = world.getBlockMetadata(x, y, z);
if (meta != 1)
{
return AxisAlignedBB.getAABBPool().getAABB(x, y, z, x + 1, y + 1, z + 1);
}
else
{
FaucetLogic logic = (FaucetLogic) world.getBlockTileEntity(x, y, z);
if (logic != null)
{
float xMin = 0.25F;
float xMax = 0.75F;
float zMin = 0.25F;
float zMax = 0.75F;
switch (logic.getRenderDirection())
{
case 2:
zMin = 0.625F;
zMax = 1.0F;
break;
case 3:
zMax = 0.375F;
zMin = 0F;
break;
case 4:
xMin = 0.625F;
xMax = 1.0F;
break;
case 5:
xMax = 0.375F;
xMin = 0F;
break;
}
return AxisAlignedBB.getAABBPool().getAABB((double) ((float) x + xMin), (double) y + 0.25, (double) ((float) z + zMin), (double) ((float) x + xMax), (double) y + 0.625, (double) ((float) z + zMax));
}
}
return super.getCollisionBoundingBoxFromPool(world, x, y, z);
}*/
/* Redstone */
}