Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.minecraft.src;
- import java.util.Random;
- public class BlockFlare extends Block {
- protected BlockFlare(int i, int j, boolean lit, long ID) {
- super(i, j, Material.ground);
- setTickOnLoad(true);
- flareLit = lit;
- time = 6;
- this.ID = ID;
- }
- @Override
- public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int i,
- int j, int k) {
- return null;
- }
- @Override
- public boolean isOpaqueCube() {
- return false;
- }
- @Override
- public boolean renderAsNormalBlock() {
- return false;
- }
- @Override
- public int getRenderType() {
- return 2;
- }
- private boolean func_31032_h(World world, int i, int j, int k) {
- return world.isBlockNormalCube(i, j, k)
- || world.getBlockId(i, j, k) == Block.fence.blockID;
- }
- @Override
- public boolean canPlaceBlockAt(World world, int i, int j, int k) {
- if (world.isBlockNormalCube(i - 1, j, k)) {
- return true;
- }
- if (world.isBlockNormalCube(i + 1, j, k)) {
- return true;
- }
- if (world.isBlockNormalCube(i, j, k - 1)) {
- return true;
- }
- if (world.isBlockNormalCube(i, j, k + 1)) {
- return true;
- }
- return func_31032_h(world, i, j - 1, k);
- }
- @Override
- public void onBlockPlaced(World world, int i, int j, int k, int l) {
- this.worldObj = world;
- this.i = i;
- this.j = j;
- this.k = l;
- int i1 = world.getBlockMetadata(i, j, k);
- if (l == 1 && func_31032_h(world, i, j - 1, k)) {
- i1 = 5;
- }
- if (l == 2 && world.isBlockNormalCube(i, j, k + 1)) {
- i1 = 4;
- }
- if (l == 3 && world.isBlockNormalCube(i, j, k - 1)) {
- i1 = 3;
- }
- if (l == 4 && world.isBlockNormalCube(i + 1, j, k)) {
- i1 = 2;
- }
- if (l == 5 && world.isBlockNormalCube(i - 1, j, k)) {
- i1 = 1;
- }
- world.setBlockMetadataWithNotify(i, j, k, i1);
- if (flareLit) {
- mod_DefenceCraft.addFlareToList(this);
- }
- }
- @Override
- public void onBlockAdded(World world, int i, int j, int k) {
- if (world.isBlockNormalCube(i - 1, j, k)) {
- world.setBlockMetadataWithNotify(i, j, k, 1);
- } else if (world.isBlockNormalCube(i + 1, j, k)) {
- world.setBlockMetadataWithNotify(i, j, k, 2);
- } else if (world.isBlockNormalCube(i, j, k - 1)) {
- world.setBlockMetadataWithNotify(i, j, k, 3);
- } else if (world.isBlockNormalCube(i, j, k + 1)) {
- world.setBlockMetadataWithNotify(i, j, k, 4);
- } else if (func_31032_h(world, i, j - 1, k)) {
- world.setBlockMetadataWithNotify(i, j, k, 5);
- }
- dropFlareIfCantStay(world, i, j, k);
- }
- @Override
- public void onNeighborBlockChange(World world, int i, int j, int k, int l) {
- if (dropFlareIfCantStay(world, i, j, k)) {
- int i1 = world.getBlockMetadata(i, j, k);
- boolean flag = false;
- if (!world.isBlockNormalCube(i - 1, j, k) && i1 == 1) {
- flag = true;
- }
- if (!world.isBlockNormalCube(i + 1, j, k) && i1 == 2) {
- flag = true;
- }
- if (!world.isBlockNormalCube(i, j, k - 1) && i1 == 3) {
- flag = true;
- }
- if (!world.isBlockNormalCube(i, j, k + 1) && i1 == 4) {
- flag = true;
- }
- if (!func_31032_h(world, i, j - 1, k) && i1 == 5) {
- flag = true;
- }
- if (flag) {
- dropBlockAsItem(world, i, j, k, world.getBlockMetadata(i, j, k));
- world.setBlockWithNotify(i, j, k, 0);
- }
- }
- }
- private boolean dropFlareIfCantStay(World world, int i, int j, int k) {
- if (!canPlaceBlockAt(world, i, j, k)) {
- dropBlockAsItem(world, i, j, k, world.getBlockMetadata(i, j, k));
- world.setBlockWithNotify(i, j, k, 0);
- return false;
- } else {
- return true;
- }
- }
- @Override
- public MovingObjectPosition collisionRayTrace(World world, int i, int j,
- int k, Vec3D vec3d, Vec3D vec3d1) {
- int l = world.getBlockMetadata(i, j, k) & 7;
- float f = 0.15F;
- if (l == 1) {
- setBlockBounds(0.0F, 0.2F, 0.5F - f, f * 2.0F, 0.8F, 0.5F + f);
- } else if (l == 2) {
- setBlockBounds(1.0F - f * 2.0F, 0.2F, 0.5F - f, 1.0F, 0.8F,
- 0.5F + f);
- } else if (l == 3) {
- setBlockBounds(0.5F - f, 0.2F, 0.0F, 0.5F + f, 0.8F, f * 2.0F);
- } else if (l == 4) {
- setBlockBounds(0.5F - f, 0.2F, 1.0F - f * 2.0F, 0.5F + f, 0.8F,
- 1.0F);
- } else {
- float f1 = 0.1F;
- setBlockBounds(0.5F - f1, 0.0F, 0.5F - f1, 0.5F + f1, 0.6F,
- 0.5F + f1);
- }
- return super.collisionRayTrace(world, i, j, k, vec3d, vec3d1);
- }
- @Override
- public void randomDisplayTick(World world, int i, int j, int k,
- Random random) {
- if (!flareLit) {
- return;
- } else if (flareLit) {
- double d = (float) i + 0.9F;
- double d1 = (float) j + 0.7F;
- double d2 = (float) k + 0.5F;
- double d3 = 0.2199999988079071D;
- double d4 = 0.27000001072883606D;
- world.spawnParticle("smoke", d - d4, d1 + d3, d2, 0.0D, 0.0D, 0.0D);
- world.spawnParticle("smoke", d + d4, d1 + d3, d2, 0.0D, 0.0D, 0.0D);
- world.spawnParticle("smoke", d, d1 + d3, d2 - d4, 0.0D, 0.0D, 0.0D);
- world.spawnParticle("smoke", d, d1 + d3, d2 + d4, 0.0D, 0.0D, 0.0D);
- world.spawnParticle("smoke", d - d4, d1 - d3, d2, 0.0D, 0.0D, 0.0D);
- world.spawnParticle("smoke", d + d4, d1 + d3, d2, 0.0D, 0.0D, 0.0D);
- world.spawnParticle("smoke", d - d1, d2 - d3, d4, 0.0D, 0.0D, 0.0D);
- world.spawnParticle("smoke", d + d1, d2 + d3, d4, 0.0D, 0.0D, 0.0D);
- world.spawnParticle("smoke", d + d4, d1 + d3, d2, 0.0D, 0.0D, 0.0D);
- world.spawnParticle("smoke", d - d4, d1 - d3, d2, 0.0D, 0.0D, 0.0D);
- world.spawnParticle("smoke", d + d1, d2 + d3, d4, 0.0D, 0.0D, 0.0D);
- world.spawnParticle("smoke", d - d1, d2 - d3, d4, 0.0D, 0.0D, 0.0D);
- // I know, it's a bit overdone but oh well lmao
- }
- }
- public void burnOut() {
- if (flareLit) {
- mod_DefenceCraft.addNewFlare(worldObj, i, j, k, false);
- }
- }
- private boolean flareLit;
- public int time;
- public long ID;
- private World worldObj;
- private int i;
- private int j;
- private int k;
- }
Add Comment
Please, Sign In to add comment