Posted June 23, 201312 yr (I've read the post on the forums about textures) But I still don't know how I can set textures for multiple sides, I already followed a tutorial on it. That was using Deprecated code. I want my block to have 4 different textures Normal front Activated (front) Side(s) Top and bottom public class Furnace extends Block { private Icon top; private Icon bottom; private Icon side; private Icon front; private Icon burnFront; public Furnace (int id) { super(id, Material.iron); } }
June 23, 201312 yr The pumpkin could have helped you. Anyways, there is a method you can override. It's called Block.getIcon(int side, int meta); and takes the side for which to retrieve the texture and the metadata of the block in case you need it as parameters. Example: public Icon getIcon( int side, int meta ) { ForgeDirection dir = ForgeDirection.getOrientation(side); if( dir == ForgeDirection.UP ) { return meta == 0 ? iconTopUnpowered : iconTopPowered; } else if( dir == ForgeDirection.DOWN ) { return iconBottom; } else { return iconSide; } }
June 23, 201312 yr Author How can I use to front, because the things you've done can only use the sides and bottom and top. (That is working) But how can I use the front (the side the player places it), as a seperate texture? And how can I use the activation and change the texture.
June 23, 201312 yr Whoa! this guy want's to get real crazy with his textures how about a furnace: public Icon getIcon(int par1, int par2) { return par1 == 1 ? this.furnaceIconTop : (par1 == 0 ? this.furnaceIconTop : (par1 != par2 ? this.blockIcon : this.furnaceIconFront)); } the metadata on the furnace is its rotation github
June 23, 201312 yr Author I still don't get it. This is what I have right now public Icon getIcon(int side, int meta) { ForgeDirection dir = ForgeDirection.getOrientation(side); if( dir == ForgeDirection.UP ) { return this.top; } else if( dir == ForgeDirection.DOWN ) { return this.bottom; } else { if (Need to check if this other side is turned towards the player){ return front; }else{ return this.side; } } }
June 24, 201312 yr if (Need to check if this other side is turned towards the player){ return front; }else{ return this.side; } That would be using the metadata. if(side == meta) {return front } Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
June 24, 201312 yr using the furnace code, setting the front the default direction seems to work private void setDefaultDirection(World par1World, int par2, int par3, int par4) { if (!par1World.isRemote) { int l = par1World.getBlockId(par2, par3, par4 - 1); int i1 = par1World.getBlockId(par2, par3, par4 + 1); int j1 = par1World.getBlockId(par2 - 1, par3, par4); int k1 = par1World.getBlockId(par2 + 1, par3, par4); byte b0 = 3; if (Block.opaqueCubeLookup[l] && !Block.opaqueCubeLookup[i1]) { b0 = 3; } if (Block.opaqueCubeLookup[i1] && !Block.opaqueCubeLookup[l]) { b0 = 2; } if (Block.opaqueCubeLookup[j1] && !Block.opaqueCubeLookup[k1]) { b0 = 5; } if (Block.opaqueCubeLookup[k1] && !Block.opaqueCubeLookup[j1]) { b0 = 4; } par1World.setBlockMetadataWithNotify(par2, par3, par4, b0, 2); } } @SideOnly(Side.CLIENT) /** * From the specified side and block metadata retrieves the blocks texture. Args: side, metadata */ public Icon getIcon(int par1, int par2) { return par1 == 1 ? this.GUIBlockTop : (par1 == 0 ? this.GUIBlockTop : (par1 != par2 ? this.blockIcon : this.GUIBlockFront)); }
June 24, 201312 yr Author Ok, it works with the setDefaultDirection method. This is the class now: public class Furnace extends Block { @SideOnly(Side.CLIENT) private Icon top; @SideOnly(Side.CLIENT) private Icon bottom; @SideOnly(Side.CLIENT) private Icon side; @SideOnly(Side.CLIENT) private Icon front; public Furnace (int id) { super(id, Material.iron); } public Icon getIcon(int side, int meta) { ForgeDirection dir = ForgeDirection.getOrientation(side); if( dir == ForgeDirection.UP ) { return this.top; } else if( dir == ForgeDirection.DOWN ) { return this.bottom; } else { if (side == meta){ return front; }else{ return this.side; } } } @Override public void registerIcons(IconRegister ir){ this.side = ir.registerIcon("Furnace_side"); this.bottom = ir.registerIcon("Furnace_top"); this.top = ir.registerIcon("Furnace_top"); this.front = ir.registerIcon("Furnace_front"); } private void setDefaultDirection(World par1World, int par2, int par3, int par4) { if (!par1World.isRemote) { int l = par1World.getBlockId(par2, par3, par4 - 1); int i1 = par1World.getBlockId(par2, par3, par4 + 1); int j1 = par1World.getBlockId(par2 - 1, par3, par4); int k1 = par1World.getBlockId(par2 + 1, par3, par4); byte b0 = 3; if (Block.opaqueCubeLookup[l] && !Block.opaqueCubeLookup[i1]) { b0 = 3; } if (Block.opaqueCubeLookup[i1] && !Block.opaqueCubeLookup[l]) { b0 = 2; } if (Block.opaqueCubeLookup[j1] && !Block.opaqueCubeLookup[k1]) { b0 = 5; } if (Block.opaqueCubeLookup[k1] && !Block.opaqueCubeLookup[j1]) { b0 = 4; } par1World.setBlockMetadataWithNotify(par2, par3, par4, b0, 2); } } public void onBlockAdded(World par1World, int par2, int par3, int par4) { super.onBlockAdded(par1World, par2, par3, par4); this.setDefaultDirection(par1World, par2, par3, par4); } }
June 24, 201312 yr You don't need to declare @SideOnly for every variable, the annotation carries on until the next method is called.
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.