Jump to content

Multi-texture blocks that can be placed in different rotations [1.8.9]


hoodwink_dude

Recommended Posts

You know how the furnace and things like that can be placed rotated depending on where you stand when you place it? How do this in forge 1.8.9 using the models? Currently, my model only ever places facing the same way but I want to make it so that it faces the player when they place the block.

I love solving puzzles and also coding. What a great combo! I also want to have a career in programming when I have gone through university. 9GAG and Quora stand in the way of me ascending from mediocre programmer to ...meh programmer and beyond!

 

I am always looking for fun projects to look at and maybe be a part of. If you have a project and want to co-operate, email me via [email protected]

 

Keep coding :)

Link to comment
Share on other sites

Save rotation property in metadata.

 

You literally have (almost) ready to use code in BlockFurnace (and its assets).

 

    private void setDefaultFacing(World worldIn, BlockPos pos, IBlockState state)
    {
        if (!worldIn.isRemote)
        {
            Block block = worldIn.getBlockState(pos.north()).getBlock();
            Block block1 = worldIn.getBlockState(pos.south()).getBlock();
            Block block2 = worldIn.getBlockState(pos.west()).getBlock();
            Block block3 = worldIn.getBlockState(pos.east()).getBlock();
            EnumFacing enumfacing = (EnumFacing)state.getValue(FACING);

            if (enumfacing == EnumFacing.NORTH && block.isFullBlock() && !block1.isFullBlock())
            {
                enumfacing = EnumFacing.SOUTH;
            }
            else if (enumfacing == EnumFacing.SOUTH && block1.isFullBlock() && !block.isFullBlock())
            {
                enumfacing = EnumFacing.NORTH;
            }
            else if (enumfacing == EnumFacing.WEST && block2.isFullBlock() && !block3.isFullBlock())
            {
                enumfacing = EnumFacing.EAST;
            }
            else if (enumfacing == EnumFacing.EAST && block3.isFullBlock() && !block2.isFullBlock())
            {
                enumfacing = EnumFacing.WEST;
            }

            worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2);
        }
    }

Kinda confusing. How am I supposed to use this to make my block do that?

I love solving puzzles and also coding. What a great combo! I also want to have a career in programming when I have gone through university. 9GAG and Quora stand in the way of me ascending from mediocre programmer to ...meh programmer and beyond!

 

I am always looking for fun projects to look at and maybe be a part of. If you have a project and want to co-operate, email me via [email protected]

 

Keep coding :)

Link to comment
Share on other sites

The wonderfulness of the JSON system look in the furnaces blockstate JSON.

 

Save rotation property in metadata.

 

You literally have (almost) ready to use code in BlockFurnace (and its assets).

 

    private void setDefaultFacing(World worldIn, BlockPos pos, IBlockState state)
    {
        if (!worldIn.isRemote)
        {
            Block block = worldIn.getBlockState(pos.north()).getBlock();
            Block block1 = worldIn.getBlockState(pos.south()).getBlock();
            Block block2 = worldIn.getBlockState(pos.west()).getBlock();
            Block block3 = worldIn.getBlockState(pos.east()).getBlock();
            EnumFacing enumfacing = (EnumFacing)state.getValue(FACING);

            if (enumfacing == EnumFacing.NORTH && block.isFullBlock() && !block1.isFullBlock())
            {
                enumfacing = EnumFacing.SOUTH;
            }
            else if (enumfacing == EnumFacing.SOUTH && block1.isFullBlock() && !block.isFullBlock())
            {
                enumfacing = EnumFacing.NORTH;
            }
            else if (enumfacing == EnumFacing.WEST && block2.isFullBlock() && !block3.isFullBlock())
            {
                enumfacing = EnumFacing.EAST;
            }
            else if (enumfacing == EnumFacing.EAST && block3.isFullBlock() && !block2.isFullBlock())
            {
                enumfacing = EnumFacing.WEST;
            }

            worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2);
        }
    }

Kinda confusing. How am I supposed to use this to make my block do that?

 

How am I supposed to use that function to interact with the JSON files if I don't understand what the hell is going on in there? Am I making it seem harder than it actually is?

I love solving puzzles and also coding. What a great combo! I also want to have a career in programming when I have gone through university. 9GAG and Quora stand in the way of me ascending from mediocre programmer to ...meh programmer and beyond!

 

I am always looking for fun projects to look at and maybe be a part of. If you have a project and want to co-operate, email me via [email protected]

 

Keep coding :)

Link to comment
Share on other sites

I am still confused by things like "&& block.isFullBlock() && !block1.isFullBlock()". I don't understand why the next block needs to be checked to see if it isnt a full block.

I love solving puzzles and also coding. What a great combo! I also want to have a career in programming when I have gone through university. 9GAG and Quora stand in the way of me ascending from mediocre programmer to ...meh programmer and beyond!

 

I am always looking for fun projects to look at and maybe be a part of. If you have a project and want to co-operate, email me via [email protected]

 

Keep coding :)

Link to comment
Share on other sites

I am still confused by things like "&& block.isFullBlock() && !block1.isFullBlock()". I don't understand why the next block needs to be checked to see if it isnt a full block.

 

Because the furnace never faces its front side towards a wall.

 

isFullBlock()

returns true if the block...is a full...block, as in, fills 100% of its volume.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

I am still confused by things like "&& block.isFullBlock() && !block1.isFullBlock()". I don't understand why the next block needs to be checked to see if it isnt a full block.

 

Because the furnace never faces its front side towards a wall.

 

isFullBlock()

returns true if the block...is a full...block, as in, fills 100% of its volume.

 

I get it now. I understand the code (just about) but how am I supposed to apply it to the block? The block is created through the GameRegistry. It isn't in it's own class.

I love solving puzzles and also coding. What a great combo! I also want to have a career in programming when I have gone through university. 9GAG and Quora stand in the way of me ascending from mediocre programmer to ...meh programmer and beyond!

 

I am always looking for fun projects to look at and maybe be a part of. If you have a project and want to co-operate, email me via [email protected]

 

Keep coding :)

Link to comment
Share on other sites

To do this, it must be its own class.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

To do this, it must be its own class.

 

I have no idea where to even start with that. I only know how to make blocks via the GameRegistry. If you want, I can supply you with the source code so that you can take a look and figure out what needs to be modified because I haven't got the furry crack of a rat's behind in terms of what to do for that.

I love solving puzzles and also coding. What a great combo! I also want to have a career in programming when I have gone through university. 9GAG and Quora stand in the way of me ascending from mediocre programmer to ...meh programmer and beyond!

 

I am always looking for fun projects to look at and maybe be a part of. If you have a project and want to co-operate, email me via [email protected]

 

Keep coding :)

Link to comment
Share on other sites

You create a new class that extends Block and instead of new Block(Material.something) you do new CustomBlockClass(Material.something)

Though it seems you don't have enough Java knowledge you should learn some more before continuing.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

You create a new class that extends Block and instead of new Block(Material.something) you do new CustomBlockClass(Material.something)

Though it seems you don't have enough Java knowledge you should learn some more before continuing.

 

IDK why I didn't think about extending the FUNDAMENTAL CLASS FOR BLOCKS! Stupid brain! I am intelligent it just doesn't always show. Thanks for the help. I think I can manage from here...

I love solving puzzles and also coding. What a great combo! I also want to have a career in programming when I have gone through university. 9GAG and Quora stand in the way of me ascending from mediocre programmer to ...meh programmer and beyond!

 

I am always looking for fun projects to look at and maybe be a part of. If you have a project and want to co-operate, email me via [email protected]

 

Keep coding :)

Link to comment
Share on other sites

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.



×
×
  • Create New...

Important Information

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