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