Jump to content

Recommended Posts

Posted

It's pretty much at the top of the BlockSlab.java file:

public static final PropertyEnum<BlockSlab.EnumBlockHalf> HALF = PropertyEnum.<BlockSlab.EnumBlockHalf>create("half", BlockSlab.EnumBlockHalf.class);
    protected static final AxisAlignedBB AABB_BOTTOM_HALF = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.5D, 1.0D);
    protected static final AxisAlignedBB AABB_TOP_HALF = new AxisAlignedBB(0.0D, 0.5D, 0.0D, 1.0D, 1.0D, 1.0D);

    public BlockSlab(Material materialIn)
    {
        super(materialIn);
        this.fullBlock = this.isDouble();
        this.setLightOpacity(255);
    }

    protected boolean canSilkHarvest()
    {
        return false;
    }

    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
    {
        return this.isDouble() ? FULL_BLOCK_AABB : (state.getValue(HALF) == BlockSlab.EnumBlockHalf.TOP ? AABB_TOP_HALF : AABB_BOTTOM_HALF);
    }

I would think that all you would have to do to change the bounding box of a block to be like a slab would be to create an AxisAlignedBB with the same params as AABB_BOTTOM_HALF and use that in your own block class by overriding the vanilla getBoundingBox method. It would look something like this:

 

protected static final AxisAlignedBB CUSTOM_BLOCK_AABB = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.5D, 1.0D);

public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
    {
        return CUSTOM_BLOCK_AABB;
    }

 

The 6 numbers represent the xyz coordinates within the shape of a full cube for 2 corners which can be used to define any given rectangular/cubic shape. (See the AxisAlignedBB constructor.) The values used are doubles, not integers, hence the Ds at the end of the numbers. 1.0 is the full length from one end of a standard Minecraft cube to the other. As you can see, the bottom half slab's shape is defined by a corner at x=0.0, y=0.0, z=0.0 and a corner at x=1.0, y=0.5, z=1.0. Stairs (and various other blocks) are actually made of several bounding boxes combined. I'm assuming that you're only trying to create a block that has the shape of a half slab, and not an actual "slab", complete with all the slab properties like stacking into double slabs, having the ability to be placed in either the top or bottom half of a block, and dropping 2 slabs when broken as a double slab. If you are, I recommend doing some research on metadata and blockstates if you haven't already, as a good understanding of those will make modding a whole lot easier, and you should also take a look at the BlockSlab, BlockSlabHalf, BlockSlabDouble, and ItemSlab classes for a complete understanding of how they work.

 

So basically, go look at the slab classes again because one of the first things in the BlockSlab class is the answer to your question.

Colore - The mod that adds monochrome blocks in every color of the rainbow!

http://www.minecraftforge.net/forum/index.php?topic=35149

 

If you're looking to learn how to make mods for 1.9.4, I wrote a helpful article with links to a lot of useful resources for learning Minecraft 1.9.4 modding!

 

http://supergeniuszeb.com/mods/a-helpful-list-of-minecraft-1-9-4-modding-resources/

Posted

I used [embed=425,349]    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)

    {

        return this.isDouble() ? FULL_BLOCK_AABB : (state.getValue(HALF) == BlockSlab.EnumBlockHalf.TOP ? AABB_TOP_HALF : AABB_BOTTOM_HALF);

    }[/embed] and I cant remember if the game just would'nt load or if it crashed when I placed the box but it did one of the two.

Posted

If you're making new slabs, then why didn't you simply extend slab?

 

If you're not making new slabs, then you need to be careful how much of slab's code you copy-paste. For instance, if your class does not have a method called isDouble(), then you can't use it. If your block is designed to always occupy the lower half of its cube and never the upper half, then don't imitate slab's upper and lower logic.

 

Next steps (using paste-bin, github or at least spoiler tags to frame big pastes):

 

1) Show us your code (the entire block class)

 

2) Show us the error (everything in the log file from the first appearance of your mod loading)

The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.

Posted

See if the enum value "half" is case sensitive.

 

For some reason, class Asphalt_Simple_Slab does not seem to inherit the property that you define in class NewSlab. What's the code for Asphalt_Simple_Slab?

The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.

Posted

use this:

 

protected static final AxisAlignedBB BLOCK1_AABB = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.D, 0.5D, 1.0D);

 

public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {

return BLOCK1_AABB;

}

 

 

 

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

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