Jump to content

SirOsirian

Members
  • Posts

    4
  • Joined

  • Last visited

Converted

  • Gender
    Male
  • Location
    Brazil
  • Personal Text
    Creator of Building Expansion

SirOsirian's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. The &7 is used to return the type of slab (stone, brick, etc.) and &8 returns the up or down position. If you remove the bitwise AND you can use the full 16 bits to have 16 different slabs but you won't be able to place them upside down as with vanilla slabs. A bit of a work around using another 'upside-down' slab block class and some placement handling could solve that (ie. if face placed on is bottom face of block, place upside-down slab id. Upside down slabs would drop 'right-side-up' slab id.) And instead of this.setLightOpacity(0); You can use this.useNeighborBrightness[id] = true; to fix the slab and stairs lighting What if i do 2 classes with 8 slabs each, that would make they work fine right? About your solution, if i had 2 slab classes i wouldn't be able to figure out if the player clicked on the up or down half of a normal block to place the slab, so the slabs would only work like vanilla if they were placed on the bottom face or the top face of the blocks, not on the sides, am I right? I decided to split the 16 slabs in 2 classes, but i can't get the placement from top to bottom to work, any help? Code: public void onBlockPlacedBy(World theWorld, int x, int y, int z, EntityLiving par5EntityLiving){ int metadata = theWorld.getBlockMetadata(x, y, z); if (theWorld.getBlockId(x, y - 1, z) == bExpansion.coloredStoneSlabID2 && theWorld.getBlockMetadata(x, y - 1, z) == metadata){ theWorld.setBlockWithNotify(x, y, z, 0); //sets the block below to 0 theWorld.setBlockAndMetadataWithNotify(x, y - 1, z, bExpansion.coloredStoneDoubleSlabID2, metadata & 7); //makes the slab a double-slab of the same metadata type } else { int metadata2 = theWorld.getBlockMetadata(x, y, z); if (theWorld.getBlockId(x, y + 1, z) == bExpansion.coloredStoneSlabID2 && theWorld.getBlockMetadata(x, y + 1, z) == metadata2){ theWorld.setBlockWithNotify(x,y, z, 0); //sets the block below to 0 theWorld.setBlockAndMetadataWithNotify(x, y + 1, z, bExpansion.coloredStoneDoubleSlabID2, metadata2 & 7); //makes the slab a double-slab of the same metadata type } } } Edit: The code is actually working, but only if there's no block under it. Ideas?
  2. Hello, i'm trying to make 16 slabs using metadata, they work fine up to the 8th, after that i get a problem on placement, when i click to place it on the ground it places the top slab and then if i try to complete it by putting another slab under it it won't work, but if i put it on the top of the upper slab it'll turn into a double slab. Also having problems with the dropped item, again, up to 8th metadata block it works just fine but then it goes back to the start (0-7 meta drops 0-7 meta 8-15 meta drops 0-7 meta). Code: Recipes, registry and etc: slab.java: slabItemBlock.java (since i'm using metadata i think i need to render the item for the inventory separately):
  3. I did a bit more research while waiting for an answer and i found out that stairs can't use metadata since they use it to determinate their rotation. Thanks for the help anyway. I guess I'll need to use 16 IDs. D:
  4. In my mod, i have blocks from which i wanna make stair versions of. I tried to use the same metadata code i use on the blocks but it doesn't work. I get thisas result: The pieces of code that matter for this question: code_main private static final int coloredBrickStairID = 2304; public static final Block coloredBrickStair = new coloredBrickStair(coloredBrickStairID, coloredBrick, 0) .setBlockName("coloredBrickStair").setRequiresSelfNotify() .setHardness(1.5F/3.0F).setStepSound(Block.soundStoneFootstep) .setCreativeTab(bExpansionTab); private static final String[] coloredBrickStairNames = { "White Brick Stair", "Orange Brick Stair", "Magenta Brick Stair", "Light Blue Brick Stair", "Yellow Brick Stair", "Light Green Brick Stair", "Pink Brick Stair", "Dark Grey Brick Stair", "Light Grey Brick Stair", "Cyan Brick Stair", "Purple Brick Stair", "Blue Brick Stair", "Brown Brick Stair", "Green Brick Stair", "Red Brick Stair", "Black Brick Stair" }; @Init GameRegistry.registerBlock(coloredBrickStair, coloredItemBrickStair.class); for (int ix = 0; ix<16 ; ix++){ ItemStack coloredBrickStack = new ItemStack(bExpansion.coloredBrick, 1, 0); ItemStack coloredBrickStairStack = new ItemStack(bExpansion.coloredBrickStair, 1); GameRegistry.addRecipe(coloredBrickStairStack, "x ", "xx ","xxx", 'x', coloredBrickStack); LanguageRegistry.addName(coloredBrickStairStack, coloredBrickStairNames[coloredBrickStairStack.getItemDamage()]); } coloredBrickStair: public class coloredBrickStair extends BlockStairs{ private Block modelBlock; public coloredBrickStair (int id, Block modelBlock, int id2) { super(id, modelBlock, id2); this.useNeighborBrightness[id] = true; setBlockName("coloredBrickStair"); } @Override public int getBlockTextureFromSideAndMetadata(int side, int metadata) { return 0 + metadata; } @Override public String getTextureFile () { return CommonProxy.BLOCK_PNG; } @Override public int damageDropped (int metadata) { return metadata; } @SideOnly(Side.CLIENT) public void getSubBlocks(int par1, CreativeTabs tab, List subItems) { for (int ix = 0; ix < 16; ix++) { subItems.add(new ItemStack(this, 1, ix)); } } } coloredItemBrickStack: public class coloredBrick extends Block { public coloredBrick (int id) { super(id, Material.rock); setBlockName("coloredBrick"); } @Override public int getBlockTextureFromSideAndMetadata (int side, int metadata) { return 0 + metadata; } @Override public String getTextureFile () { return CommonProxy.BLOCK_PNG; } @Override public int damageDropped (int metadata) { return metadata; } @SideOnly(Side.CLIENT) public void getSubBlocks(int par1, CreativeTabs tab, List subItems) { for (int ix = 0; ix < 16; ix++) { subItems.add(new ItemStack(this, 1, ix)); } } } *No imports and useless pieces of code for the question are in the codes above but they are present in the real code* The questions are: Can i make stairs using metadata just like wool and my other blocks? Why won't my code work, what do i need to change to make it work like i want. I tought of using one piece of code for each stair but i'm sure there's a compact and better way of doing it, that's why i came here. If you need any extra piece of code to help me just ask and i'll provide it.
×
×
  • Create New...

Important Information

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