Posted April 30, 201411 yr 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.
April 30, 201411 yr If you search on Google, you will see that this question has been asked 9000+ times on the Forge (Modder Support) forums already.
April 30, 201411 yr Author If you search on Google, you will see that this question has been asked 9000+ times on the Forge (Modder Support) forums already. Not finding anything Don't tell me to learn the basics of java, I already know.
April 30, 201411 yr Lel. Dat exaggeration. Here's one: http://www.minecraftforge.net/forum/index.php?topic=17688.0
May 1, 201411 yr just import the BlockFurnace. then look at that code. use that to make your own code. delete the import for BlockFurnace. This is the best methode to mimic Block of vanilla Minecraft. Coding, Testing, Smiling, Publishing!
May 1, 201411 yr Your getIcon method has side 3 as always having the front of the furnace. You must check with rotational metadata to determine on which side to render the front icon, otherwise, it will always render on the same block face. Good luck to ya!
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.