Package org.spoutcraft.client.item

Source Code of org.spoutcraft.client.item.SpoutItem

/*
* This file is part of Spoutcraft.
*
* Copyright (c) 2011 SpoutcraftDev <http://spoutcraft.org/>
* Spoutcraft is licensed under the GNU Lesser General Public License.
*
* Spoutcraft is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Spoutcraft is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.spoutcraft.client.item;

import net.minecraft.src.Block;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.EnumAction;
import net.minecraft.src.Item;
import net.minecraft.src.ItemStack;
import net.minecraft.src.World;

import org.spoutcraft.api.Spoutcraft;
import org.spoutcraft.api.material.CustomBlock;
import org.spoutcraft.api.material.CustomItem;
import org.spoutcraft.api.material.Food;
import org.spoutcraft.api.material.MaterialData;

public class SpoutItem extends Item {
  public SpoutItem(int blockId) {
    super(blockId);
    this.setHasSubtypes(true);
  }

  @Override
  public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player) {
    CustomItem customItem = MaterialData.getCustomItem(item.getItemDamage());
    if (customItem instanceof Food) {
      if (player.canEat(false)) {
        player.setItemInUse(item, 32);
      } else {
        player.setEating(true);
      }
    }
    return item;
  }

  @Override
  public EnumAction getItemUseAction(ItemStack item) {
    CustomItem customItem = MaterialData.getCustomItem(item.getItemDamage());
    if (customItem instanceof Food) {
      return EnumAction.eat;
    }
    return EnumAction.none;
  }

  @Override
  public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int face, float xOffset, float yOffset, float zOffset) {
    if (stack.itemID == MaterialData.flint.getRawId()) {
      int damage = stack.getItemDamage();
      if (damage >= 1024) {
        CustomBlock block = MaterialData.getCustomBlock(damage);
        // Item with no block component, return success
        if (block == null) {
          return true;
        }
        if (onItemUse(stack, block, player, world, x, y, z, face, xOffset, yOffset, zOffset)) {
          return true;
        }
        return false;
      }
    }
    return super.onItemUse(stack, player, world, x, y, z, face, xOffset, yOffset, zOffset);
  }

  // From ItemBlock.onItemUse class
  public boolean onItemUse(ItemStack item, CustomBlock block, EntityPlayer player, World world, int x, int y, int z, int side, float xOffset, float yOffset, float zOffset) {
    int var11 = world.getBlockId(x, y, z);

    if (var11 == Block.snow.blockID && (world.getBlockMetadata(x, y, z) & 7) < 1) {
      side = 1;
    } else if (var11 != Block.vine.blockID && var11 != Block.tallGrass.blockID && var11 != Block.deadBush.blockID) {
      if (side == 0) {
        --y;
      }

      if (side == 1) {
        ++y;
      }

      if (side == 2) {
        --z;
      }

      if (side == 3) {
        ++z;
      }

      if (side == 4) {
        --x;
      }

      if (side == 5) {
        ++x;
      }
    }

    int id = block.getBlockId();

    if (item.stackSize == 0) {
      return false;
    } else if (!player.canPlayerEdit(x, y, z, side, item)) {
      return false;
    } else if (y == 255) {
      return false;
    } else if (world.canPlaceEntityOnSide(id, x, y, z, false, side, player, item)) {
      Block var12 = Block.blocksList[id];
      int var13 = this.getMetadata(item.getItemDamage());
      int var14 = Block.blocksList[id].onBlockPlaced(world, x, y, z, side, xOffset, yOffset, zOffset, var13);

      if (world.setBlock(x, y, z, id, var14, 3)) {
        if (world.getBlockId(x, y, z) == id) {
          Block.blocksList[id].onBlockPlacedBy(world, x, y, z, player, item);
          Block.blocksList[id].onPostBlockPlaced(world, x, y, z, var14);
        }
        Spoutcraft.getChunkAt(world, x, y, z).setCustomBlockId(x, y, z, (short) block.getCustomId());

        world.playSoundEffect((double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), var12.stepSound.getPlaceSound(), (var12.stepSound.getVolume() + 1.0F) / 2.0F, var12.stepSound.getPitch() * 0.8F);
        --item.stackSize;
      }

      return true;
    } else {
      return false;
    }

  }

  @Override
  public boolean hasEffect(ItemStack par1ItemStack) {
    return itemID == MaterialData.flint.getRawId() ? false : super.hasEffect(par1ItemStack);
  }
}
TOP

Related Classes of org.spoutcraft.client.item.SpoutItem

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.