Jump to content

Furnace only faces one direction


yanksrock1019

Recommended Posts

When I place the furnace down while looking any direction, it always faces the same direction, but the particles are the correct direction

 

 
package com.puplet.blocks;

import java.util.Random;

import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;

import com.puplet.lib.Strings;
import com.puplet.main.MainClass;
import com.puplet.tile_entity.TileEntityPupletFurnace;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class PupletFurnace extends BlockContainer {

@SideOnly(Side.CLIENT)
private IIcon top;
@SideOnly(Side.CLIENT)
private IIcon front;

private static boolean isBurning;
private final boolean isBurning2;
private final Random random = new Random();

protected PupletFurnace(boolean isActive) {
	super(Material.rock);
	isBurning2 = isActive;
}

@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconregister) {
	this.blockIcon = iconregister.registerIcon(Strings.modid + ":PupletFurnaceSide");
	this.front = iconregister.registerIcon(this.isBurning2 ? Strings.modid + ":PupletFurnaceActive" : Strings.modid + ":PupletFurnaceIdle");
	this.top = iconregister.registerIcon(Strings.modid + ":PupletFurnaceTop");
}

public IIcon getIcon(int side, int meta) {
	if (side == 1) {
		return top;
	} else if (side == 3) {
		return front;
	} else {
		return this.blockIcon;
	}
}

public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) {
	player.openGui(MainClass.modInstance, 0, world, x, y, z);
	return true;
}

public Item getItemDropped(int par1, Random random, int par3) {
	return Item.getItemFromBlock(PupletBlocks.blockPupletFurnaceIdle);
}

public Item getItem(World world, int par2, int par3, int par4) {
	return Item.getItemFromBlock(PupletBlocks.blockPupletFurnaceIdle);
}


    public TileEntity createNewTileEntity(World world, int par2)
    {
        return new TileEntityPupletFurnace();
    }



public void onBlockAdded(World world, int x, int y, int z) {
	super.onBlockAdded(world, x, y, z);
	this.direction(world, x, y, z);
}

private void direction(World world, int x, int y, int z) {
	if (!world.isRemote) {
		Block direction = world.getBlock(x, y, z - 1);
		Block direction1 = world.getBlock(x, y, z + 1);
		Block direction2 = world.getBlock(x - 1, y, z);
		Block direction3 = world.getBlock(x + 1, y, z);
		byte byte0 = 3;

		if (direction.func_149730_j() && direction.func_149730_j()) {
			byte0 = 3;
		}

		if (direction1.func_149730_j() && direction1.func_149730_j()) {
			byte0 = 2;
		}

		if (direction2.func_149730_j() && direction2.func_149730_j()) {
			byte0 = 5;
		}

		if (direction3.func_149730_j() && direction3.func_149730_j()) {
			byte0 = 4;
		}

		world.setBlockMetadataWithNotify(x, y, z, byte0, 2);
	}
}

public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack itemstack) {
	int direction = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;

	if (direction == 0) {
		world.setBlockMetadataWithNotify(x, y, z, 2, 2);
	}

	if (direction == 1) {
		world.setBlockMetadataWithNotify(x, y, z, 5, 2);
	}

	if (direction == 2) {
		world.setBlockMetadataWithNotify(x, y, z, 3, 2);
	}

	if (direction == 3) {
		world.setBlockMetadataWithNotify(x, y, z, 4, 2);
	}

	if (itemstack.hasDisplayName()) {
		((TileEntityPupletFurnace) world.getTileEntity(x, y, z)).furnaceName(itemstack.getDisplayName());
	}
}

public static void updateBlockState(boolean burning, World world, int x, int y, int z) {
	int direction = world.getBlockMetadata(x, y, z);
	TileEntity tileentity = world.getTileEntity(x, y, z);
	isBurning = true;

	if (burning) {
		world.setBlock(x, y, z, PupletBlocks.blockPupletFurnaceActive);
	} else {
		world.setBlock(x, y, z, PupletBlocks.blockPupletFurnaceIdle);
	}

	isBurning = false;
	world.setBlockMetadataWithNotify(x, y, z, direction, 2);

	if (tileentity != null) {
		tileentity.validate();
		world.setTileEntity(x, y, z, tileentity);
	}
}

public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
	if (!isBurning) {
		TileEntityPupletFurnace tileentitytutfurnace = (TileEntityPupletFurnace) world.getTileEntity(x, y, z);

		if (tileentitytutfurnace != null) {
			for (int i = 0; i < tileentitytutfurnace.getSizeInventory(); ++i) {
				ItemStack itemstack = tileentitytutfurnace.getStackInSlot(i);

				if (itemstack != null) {
					float f = this.random.nextFloat() * 0.6F + 0.1F;
					float f1 = this.random.nextFloat() * 0.6F + 0.1F;
					float f2 = this.random.nextFloat() * 0.6F + 0.1F;

					while (itemstack.stackSize > 0) {
						int j = this.random.nextInt(21) + 10;

						if (j > itemstack.stackSize) {
							j = itemstack.stackSize;
						}

						itemstack.stackSize -= j;
						EntityItem entityitem = new EntityItem(world, (double) ((float) x + f), (double) ((float) y + f1), (double) ((float) z + f2), new ItemStack(itemstack.getItem(), j, itemstack.getItemDamage()));

						if (itemstack.hasTagCompound()) {
							entityitem.getEntityItem().setTagCompound(((NBTTagCompound) itemstack.getTagCompound().copy()));
						}

						float f3 = 0.025F;
						entityitem.motionX = (double) ((float) this.random.nextGaussian() * f3);
						entityitem.motionY = (double) ((float) this.random.nextGaussian() * f3 + 0.2F);
						entityitem.motionZ = (double) ((float) this.random.nextGaussian() * f3);
						world.spawnEntityInWorld(entityitem);
					}
				}
			}
			world.func_147453_f(x, y, z, block);
		}
	}
	super.breakBlock(world, x, y, z, block, meta);
}

@SideOnly(Side.CLIENT)
    public void randomDisplayTick(World p_149734_1_, int p_149734_2_, int p_149734_3_, int p_149734_4_, Random p_149734_5_)
    {
        if (this.isBurning2)
        {
            int l = p_149734_1_.getBlockMetadata(p_149734_2_, p_149734_3_, p_149734_4_);
            float f = (float)p_149734_2_ + 0.5F;
            float f1 = (float)p_149734_3_ + 0.0F + p_149734_5_.nextFloat() * 6.0F / 16.0F;
            float f2 = (float)p_149734_4_ + 0.5F;
            float f3 = 0.52F;
            float f4 = p_149734_5_.nextFloat() * 0.6F - 0.3F;

            if (l == 4)
            {
                p_149734_1_.spawnParticle("smoke", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
                p_149734_1_.spawnParticle("flame", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
            }
            else if (l == 5)
            {
                p_149734_1_.spawnParticle("smoke", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
                p_149734_1_.spawnParticle("flame", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
            }
            else if (l == 2)
            {
                p_149734_1_.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D);
                p_149734_1_.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D);
            }
            else if (l == 3)
            {
                p_149734_1_.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D);
                p_149734_1_.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D);
            }
        }
    }



}

Don't tell me to learn the basics of java, I already know.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.