Posted March 9, 201411 yr I'm starting to feel like an idiot for posting so many help threads. But there's not many places I can go to learn about 1.7's code. Well, I've created a custom slab, and it works...Kinda. Normally I'd be able to stack them up, and make them look like a full block. Instead, they do this. http://puu.sh/7pkr0.png Here's the code for the slabs. public class NegativeWoodSlabs extends BlockSlab { public static final String[] field_150005_b = new String[] {"negative"}; public NegativeWoodSlabs(boolean p_i45437_1_) { super(p_i45437_1_, Material.wood); } /** * Gets the block's texture. Args: side, meta */ @SideOnly(Side.CLIENT) public IIcon getIcon(int p_149691_1_, int p_149691_2_) { return Mod1.NegativeOakPlanks.getIcon(p_149691_1_, p_149691_2_ & 7); } public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { return Item.getItemFromBlock(Mod1.NegativeOakSlab); } /** * Returns an item stack containing a single instance of the current block type. 'i' is the block's subtype/damage * and is ignored for blocks which do not support subtypes. Blocks which cannot be harvested should return null. */ protected ItemStack createStackedBlock(int p_149644_1_) { return new ItemStack(Item.getItemFromBlock(Blocks.wooden_slab), 2, p_149644_1_ & 7); } public String func_150002_b(int p_150002_1_) { if (p_150002_1_ < 0 || p_150002_1_ >= field_150005_b.length) { p_150002_1_ = 0; } return super.getUnlocalizedName() + "." + field_150005_b[p_150002_1_]; } @SideOnly(Side.CLIENT) public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_) { if (p_149666_1_ != Item.getItemFromBlock(Mod1.NegativeOakDoubleSlab)) { for (int i = 0; i < field_150005_b.length; ++i) { p_149666_3_.add(new ItemStack(p_149666_1_, 1, i)); } } } @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister p_149651_1_) {} } And the code for registering the slabs. NegativeOakSlab = new NegativeWoodSlabs(false).setHardness(2.0F).setResistance(5.0F).setCreativeTab(tabNegative).setBlockName("NegativeOakSlab"); NegativeOakDoubleSlab = new NegativeWoodSlabs(true).setHardness(2.0F).setResistance(5.0F).setCreativeTab(tabNegative).setBlockName("NegativeOakDoubleSlab"); Not sure what I'm doing wrong, everything looks fine, it's similar to vanilla's code, so I don't see the problem... I may ask questions asking for help, but I know what I'm doing. If my post is helpful in any way, give a "Thank You" in return, I'd really appreciate it.
March 10, 201411 yr Author Sorry if bumping is against some rule or anything. But I had to. >_> Le Bump. I may ask questions asking for help, but I know what I'm doing. If my post is helpful in any way, give a "Thank You" in return, I'd really appreciate it.
March 10, 201411 yr protected ItemStack createStackedBlock(int p_149644_1_) { return new ItemStack(Item.getItemFromBlock(Blocks.wooden_slab), 2, p_149644_1_ & 7); } I'd say Blocks.wooden_slab isn't the one you'd want.
March 10, 201411 yr Author ...Huh. I didn't even notice I sent that mistake in the code. Cause that's already fixed, and it still doesn't work. ._. I'll just...repost the code...in case there are more mistakes I've already fixed from then and now. public class NegativeWoodSlabs extends BlockSlab { public static final String[] field_150005_b = new String[] {"negative"}; private static final String __OBFID = "CL_00000337"; public NegativeWoodSlabs(boolean p_i45437_1_) { super(p_i45437_1_, Material.wood); this.setCreativeTab(Mod1.tabNegative); } /** * Gets the block's texture. Args: side, meta */ @SideOnly(Side.CLIENT) public IIcon getIcon(int p_149691_1_, int p_149691_2_) { return Mod1.NegativeOakPlanks.getIcon(p_149691_1_, p_149691_2_ & 7); } public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { return Item.getItemFromBlock(Mod1.NegativeOakSlab); } /** * Returns an item stack containing a single instance of the current block type. 'i' is the block's subtype/damage * and is ignored for blocks which do not support subtypes. Blocks which cannot be harvested should return null. */ protected ItemStack createStackedBlock(int p_149644_1_) { return new ItemStack(Item.getItemFromBlock(Mod1.NegativeOakSlab), 2, p_149644_1_ & 7); } public String func_150002_b(int p_150002_1_) { if (p_150002_1_ < 0 || p_150002_1_ >= field_150005_b.length) { p_150002_1_ = 0; } return super.getUnlocalizedName() + "." + field_150005_b[p_150002_1_]; } /** * returns a list of blocks with the same ID, but different meta (eg: wood returns 4 blocks) */ @SideOnly(Side.CLIENT) public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_) { if (p_149666_1_ != Item.getItemFromBlock(Mod1.NegativeOakSlabDouble)) { for (int i = 0; i < field_150005_b.length; ++i) { p_149666_3_.add(new ItemStack(p_149666_1_, 1, i)); } } } @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister p_149651_1_) {} } I may ask questions asking for help, but I know what I'm doing. If my post is helpful in any way, give a "Thank You" in return, I'd really appreciate it.
March 10, 201411 yr I don't see what is going on in the texture you posted, so i'll assume this is a rendering issue. You should override "shouldSideBeRendered" method, there is hardcoded wooden slabs and stone slabs in BlockSlab.
March 12, 201411 yr Author ._. I just looked at the photo, and now I feel like an idiot. This is what's going on. http://puu.sh/7sc5L.png The slab doesn't stack up like normal slabs, but instead gets placed .5 blocks higher than usual. As if the slab was a full block. I may ask questions asking for help, but I know what I'm doing. If my post is helpful in any way, give a "Thank You" in return, I'd really appreciate it.
March 13, 201411 yr Author Oh, and there's also this glitch. http://puu.sh/7ukA3.png Vanilla slabs don't cast shadows on full blocks, while my custom slab does. Again, acting like a full block. I may ask questions asking for help, but I know what I'm doing. If my post is helpful in any way, give a "Thank You" in return, I'd really appreciate it.
March 17, 201411 yr Just a guess (Not by any means an expert, or even know what I'm doing), but does adding the following help? this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
March 18, 201411 yr Take a look at BlockSlab#func150003_a(Block) is private and specific to vanilla slabs. So, you have to override the two functions that call it in your class. boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) Look at the code in BlockSlab and modify -S- (if I helped, please click Thank and applaud) http://6upnqa.dm2301.livefilestore.com/y2mtf-vG7Tqq1TiiVpIm53KWj7294NDPoHfSHHb4PzZiMAUfRCfK0UY0MwOu7Q3zTBNVTKqWjr2-xgBfFRpQT5p-QivtvknPpoABMNUw9br9WuZcBFkjePhnAbW500gVm-P/sequiturian.png[/img]
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.