Posted March 17, 201312 yr So, I managed to create a half slab that works nicely, but when I try to put another one on top of it, it doesn't create a double slab; instead it creates a new slab above it. It inherits from BlockHalfSlab, and I used that class as well as BlockWoodSlab as examples, but I can't seem to figure this out. Here's what I have so far: public class SlabHay extends BlockHalfSlab { protected static Icon iconSide; public SlabHay(int id, boolean doubleslab) { super(id, doubleslab, Material.wood); setHardness(1.5f); setResistance(4.0f); setStepSound(Block.soundGrassFootstep); setUnlocalizedName("haySlab"); useNeighborBrightness[id] = true; } public int idDropped(int par1, Random par2Random, int par3) { return HayMod.haySlab.blockID; } public String getFullSlabName(int i) { if (!isDoubleSlab) return super.getUnlocalizedName() + "haySlab"; else return super.getUnlocalizedName() + "hayDoubleSlab"; } @Override public void func_94332_a(IconRegister par1IconRegister) { iconSide = par1IconRegister.func_94245_a("hvh:hay_side"); field_94336_cN = par1IconRegister.func_94245_a("hvh:hay_top"); } @SideOnly(Side.CLIENT) public Icon getBlockTextureFromSideAndMetadata(int par1, int par2) { if (par1 == 0 || par1 == 1) return field_94336_cN; else return iconSide; } } Is there a method that I missed? Am I supposed to register it with something?
March 17, 201312 yr It's because of the slab is an itemblock,you need a custom itemblock for it,but a more simple thing is to put a line in the FMLPostInitializationEvent : Item.itemsList[YourSingleSlab.blockID] = (new ItemSlab(YourSingleSlab.blockID - 256, (BlockHalfSlab)YourSingleSlab, (BlockHalfSlab)YourDoubleSlab, false)).setItemName("YourSlabName");
March 17, 201312 yr Author It works great (I had to use setUnlocalizedName() instead of setItemName()), but now I have working double slabs. Problem is, now my double slab has a name, but my single slabs have a blank tooltip. Here's some bits of code that might be relevant: public static BlockHalfSlab haySlab = (BlockHalfSlab) new SlabHay(505, false) .setUnlocalizedName("haySlab") .setCreativeTab(CreativeTabs.tabBlock); public static BlockHalfSlab hayDoubleSlab = (BlockHalfSlab) new SlabHay(506, true) .setUnlocalizedName("hayDoubleSlab"); @Init public void load(FMLInitializationEvent event) { proxy.registerRenderers(); //// Register the block, it's name, and it's harvest level // Hay Double Slab GameRegistry.registerBlock(hayDoubleSlab, "hayDoubleSlab"); LanguageRegistry.addName(hayDoubleSlab, "Hay Double Slab"); MinecraftForge.setBlockHarvestLevel(hayDoubleSlab, "hatchet", 0); // Hay Slab GameRegistry.registerBlock(haySlab, "haySlab"); LanguageRegistry.addName(haySlab, "Hay Slab"); MinecraftForge.setBlockHarvestLevel(haySlab, "hatchet", 0); //// Register the recipes // Hay Slab GameRegistry.addRecipe(new ItemStack(haySlab, 6), "xxx", 'x', new ItemStack(hayBlock)); } @PostInit public void postInit(FMLPostInitializationEvent event) { Item.itemsList[haySlab.blockID] = new ItemSlab(haySlab.blockID - 256, (BlockHalfSlab)haySlab, (BlockHalfSlab)hayDoubleSlab, false) .setUnlocalizedName("haySlab"); } Any idea why my single slab has no name? I tried using LanguageRegistry.addName(Item.itemsList[haySlab.blockID], "Hay Slab"); to no avail.
March 17, 201312 yr For registering name,i have used: LanguageRegistry.instance().addStringLocalization(((BlockStoneSlabs)YourSingleSlab).getFullSlabName(0)+".name", "Your Slab");
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.