Package tconstruct.armor.blocks

Source Code of tconstruct.armor.blocks.DryingRack

package tconstruct.armor.blocks;

import cpw.mods.fml.relauncher.*;
import java.util.List;
import mantle.blocks.abstracts.InventoryBlock;
import net.minecraft.block.material.Material;
import net.minecraft.entity.*;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.*;
import net.minecraft.world.*;
import tconstruct.TConstruct;
import tconstruct.armor.modelblock.DryingRackRender;
import tconstruct.blocks.logic.DryingRackLogic;
import tconstruct.library.TConstructRegistry;
import tconstruct.library.tools.AbilityHelper;

public class DryingRack extends InventoryBlock
{

    public DryingRack()
    {
        super(Material.wood);
        this.setCreativeTab(TConstructRegistry.blockTab);
        setHardness(2.0f);
        stepSound = soundTypeMetal;
    }

    @Override
    public TileEntity createNewTileEntity (World world, int metadata)
    {
        return new DryingRackLogic();
    }

    @Override
    public int getRenderBlockPass ()
    {
        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;
    }

    @Override
    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
    public boolean onBlockActivated (World world, int x, int y, int z, EntityPlayer player, int side, float clickX, float clickY, float clickZ)
    {
        return activateDryingRack(world, x, y, z, player);
    }

    boolean activateDryingRack (World world, int x, int y, int z, EntityPlayer player)
    {
        if (!world.isRemote)
        {
            DryingRackLogic logic = (DryingRackLogic) world.getTileEntity(x, y, z);

            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);
                }
            }

            world.markBlockForUpdate(x, y, z);
        }
        return true;
    }

    public void addItemToInventory (EntityPlayer player, World world, int x, int y, int z, ItemStack stack)
    {
        AbilityHelper.spawnItemAtPlayer(player, stack);
    }

    @Override
    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.getBoundingBox((double) x + xMin, (double) y + yMin, (double) z + zMin, (double) x + xMax, (double) y + yMax, (double) z + zMax);
    }

    @Override
    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;
        }
        this.setBlockBounds(xMin, yMin, zMin, xMax, yMax, zMax);
    }

    @Override
    public void addCollisionBoxesToList (World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity entity)
    {
        this.setBlockBoundsBasedOnState(world, x, y, z);
        super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity);
    }

    /* Rendering */
    @Override
    public int getRenderType ()
    {
        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
    public String getTextureDomain (int textureNameIndex)
    {
        return "tinker";
    }

    @Override
    @SideOnly(Side.CLIENT)
    public IIcon getIcon (int side, int meta)
    {
        return Blocks.planks.getIcon(side, 0);
    }

    public int getTextureIndex (int side)
    {
        if (side == 0)
            return 2;
        if (side == 1)
            return 0;

        return 1;
    }

    @Override
    public boolean renderAsNormalBlock ()
    {
        return false;
    }

    @Override
    public boolean isOpaqueCube ()
    {
        return false;
    }

    @Override
    public TileEntity createTileEntity (World world, int metadata)
    {
        return new DryingRackLogic();
    }

    /*
     * @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.getBoundingBox(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.getBoundingBox((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 */
TOP

Related Classes of tconstruct.armor.blocks.DryingRack

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.