Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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.

If you search on Google, you will see that this question has been asked 9000+ times on the Forge (Modder Support) forums already.

  • 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 :P

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

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!

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.

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.