Jump to content

Recommended Posts

Posted

I've been looking through vanilla and I think this works.  Would someone confirm if I've got this right or if I'm missing stuff.

 

My goal is to put down a custom bed in place of the normal one so it doesn't blow up in my custom dimensions.

 

 

 

 

                    // Get current meta

                    IBlockState state = world.getBlockState(pos_Temp);

                   

                    // Change the block with the meta intact

                        world.getBlockState(pos_Temp).withProperty(BlockBed.PART, state.getValue(BlockBed.PART)).withProperty(BlockDirectional.FACING, state.getValue(BlockDirectional.FACING));

                   

 

 

 

Long time Bukkit & Forge Programmer

Happy to try and help

Posted

Looking at the bed in 1.8, I see another way around this in terms of avoiding the explosion.

 

However, I still would like to know about the state copy I put above.

Long time Bukkit & Forge Programmer

Happy to try and help

Posted

I think you should use World#setBlockState(...)

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

Posted

Just noticed some of my code was wrapped weird in the post.  might be hard to read.

 

If I setBlockState, that sets the entire block again.  I just want to modify a few of the state properties and leave the rest alone.

Long time Bukkit & Forge Programmer

Happy to try and help

Posted

Then there is no way theoretically...

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

Posted

IBlockState

s are immutable.

IBlockState#withProperty

returns a different

IBlockState

instance with the property set to the specified value rather than modifying the existing instance.

 

If you want to change the state of a block in the world, you have to use

World#setBlockState

. Simply calling

IBlockState#withProperty

and not doing anything with the result does nothing.

 

Your code will correctly preserve any properties except the ones you change, though.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

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.