2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
4.8 KiB
Java

package com.zivilon.cinder_loe.blocks;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import lotr.common.block.LOTRBlockChandelier;
import lotr.common.block.LOTRBlockOrcChain;
import net.minecraft.block.*;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class ironChain
extends LOTRBlockOrcChain {
public IIcon icon;
@SideOnly(value= Side.CLIENT)
private IIcon iconMiddle;
@SideOnly(value=Side.CLIENT)
private IIcon iconTop;
@SideOnly(value=Side.CLIENT)
private IIcon iconBottom;
@SideOnly(value=Side.CLIENT)
private IIcon iconSingle;
public ironChain() {
this.setHardness(1.0f);
this.setStepSound(Block.soundTypeMetal);
this.textureName = "lotr:ironChain";
setBlockName("lotr:ironChain");
setBlockTextureName("lotr:ironChain");
float f = 0.2f;
this.setBlockBounds(0.5f - f, 0.0f, 0.5f - f, 0.5f + f, 1.0f, 0.5f + f);
}
@SideOnly(value=Side.CLIENT)
public void registerBlockIcons(IIconRegister iconregister) {
this.iconMiddle = iconregister.registerIcon(this.getTextureName() + "_mid");
this.iconTop = iconregister.registerIcon(this.getTextureName() + "_top");
this.iconBottom = iconregister.registerIcon(this.getTextureName() + "_bottom");
this.iconSingle = iconregister.registerIcon(this.getTextureName() + "_single");
this.blockIcon = iconregister.registerIcon(this.getTextureName());
}
@SideOnly(value=Side.CLIENT)
public IIcon getIcon(IBlockAccess world, int i, int j, int k, int side) {
boolean chainBelow;
Block above = world.getBlock(i, j + 1, k);
Block below = world.getBlock(i, j - 1, k);
boolean chainAbove = above instanceof ironChain;
boolean bl = chainBelow = below instanceof ironChain || below instanceof LOTRBlockChandelier;
if (chainAbove && chainBelow) {
return this.iconMiddle;
}
if (chainAbove) {
return this.iconBottom;
}
if (chainBelow) {
return this.iconTop;
}
return this.iconSingle;
}
@SideOnly(value=Side.CLIENT)
public IIcon getIcon(int i, int j) {
return this.iconMiddle;
}
@SideOnly(value=Side.CLIENT)
public String getItemIconName() {
return this.getTextureName();
}
public boolean canPlaceBlockAt(World world, int i, int j, int k) {
Block block = world.getBlock(i, j + 1, k);
int meta = world.getBlockMetadata(i, j + 1, k);
if (block instanceof ironChain) {
return true;
}
if (block instanceof BlockFence || block instanceof BlockWall) {
return true;
}
if (block instanceof BlockSlab && !block.isOpaqueCube() && (meta & 8) == 0) {
return true;
}
if (block instanceof BlockStairs && (meta & 4) == 0) {
return true;
}
return world.getBlock(i, j + 1, k).isSideSolid((IBlockAccess)world, i, j + 1, k, ForgeDirection.DOWN);
}
public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer entityplayer, int side, float f, float f1, float f2) {
ItemStack itemstack = entityplayer.getHeldItem();
if (itemstack != null && itemstack.getItem() == Item.getItemFromBlock((Block)this)) {
Block block;
int j1;
for (j1 = j; j1 >= 0 && j1 < world.getHeight() && (block = world.getBlock(i, j1, k)) == this; --j1) {
}
if (j1 >= 0 && j1 < world.getHeight()) {
block = world.getBlock(i, j1, k);
if (this.canPlaceBlockOnSide(world, i, j1, k, side) && block.isReplaceable((IBlockAccess)world, i, j1, k) && !block.getMaterial().isLiquid()) {
int thisMeta = world.getBlockMetadata(i, j, k);
world.setBlock(i, j1, k, (Block)this, thisMeta, 3);
world.playSoundEffect((double)((float)i + 0.5f), (double)((float)j1 + 0.5f), (double)((float)k + 0.5f), this.stepSound.func_150496_b(), (this.stepSound.getVolume() + 1.0f) / 2.0f, this.stepSound.getPitch() * 0.8f);
if (!entityplayer.capabilities.isCreativeMode) {
--itemstack.stackSize;
}
if (itemstack.stackSize <= 0) {
entityplayer.inventory.setInventorySlotContents(entityplayer.inventory.currentItem, null);
}
return true;
}
}
}
return false;
}
}