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.

107 lines
3.5 KiB
Java

package com.zivilon.cinder_loe.blocks;
import com.zivilon.cinder_loe.LoECreativeTabs;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import lotr.common.LOTRCreativeTabs;
import lotr.common.block.LOTRBlockOrcChain;
import com.zivilon.cinder_loe.util.Utilities;
public abstract class ChandelierBase extends Block {
public String textureName;
public IIcon icon;
public ChandelierBase(String blockName) {
super(Material.circuits);
this.textureName = Utilities.toSnakeCase(blockName);
this.setBlockName(blockName);
this.setCreativeTab(LoECreativeTabs.tabBlockLoE);
setHardness(0.0F);
setResistance(2.0F);
setStepSound(Block.soundTypeMetal);
setLightLevel(0.9375F);
setBlockBounds(0.0625F, 0.1875F, 0.0625F, 0.9375F, 1.0F, 0.9375F);
}
public IIcon getIcon(int i, int j) {
return this.icon;
}
@Override
public void registerBlockIcons(IIconRegister reg) {
icon = reg.registerIcon(this.textureName);
}
public boolean isOpaqueCube() {
return false;
}
public boolean renderAsNormalBlock() {
return false;
}
public int getRenderType() {
return 1;
}
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int i, int j, int k) {
return null;
}
public boolean canBlockStay(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 net.minecraft.block.BlockFence || block instanceof net.minecraft.block.BlockWall)
return true;
if (block instanceof net.minecraft.block.BlockSlab && !block.isOpaqueCube() && (meta & 0x8) == 0)
return true;
if (block instanceof net.minecraft.block.BlockStairs && (meta & 0x4) == 0)
return true;
if (block instanceof LOTRBlockOrcChain)
return true;
return world.getBlock(i, j + 1, k).isSideSolid((IBlockAccess)world, i, j + 1, k, ForgeDirection.DOWN);
}
public boolean canPlaceBlockAt(World world, int i, int j, int k) {
return canBlockStay(world, i, j, k);
}
public void onNeighborBlockChange(World world, int i, int j, int k, Block block) {
if (!canBlockStay(world, i, j, k)) {
dropBlockAsItem(world, i, j, k, world.getBlockMetadata(i, j, k), 0);
world.setBlockToAir(i, j, k);
}
}
@SideOnly(Side.CLIENT)
public void randomDisplayTick(World world, int i, int j, int k, Random random) {
double d = 0.13D;
double d1 = 1.0D - d;
double d2 = 0.6875D;
spawnChandelierParticles(world, i + d, j + d2, k + d);
spawnChandelierParticles(world, i + d1, j + d2, k + d1);
spawnChandelierParticles(world, i + d, j + d2, k + d1);
spawnChandelierParticles(world, i + d1, j + d2, k + d);
}
private void spawnChandelierParticles(World world, double d, double d1, double d2) {
world.spawnParticle("smoke", d, d1, d2, 0.0D, 0.0D, 0.0D);
world.spawnParticle("flame", d, d1, d2, 0.0D, 0.0D, 0.0D);
}
}