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.