# How can I make 24 rotation states of block across blockstate?

## Recommended Posts

Hi!

First of all: I'm not a programmer at all. I just have a one task for myself and I need to resolve it.

And sorry for my English.

So. I try to add a block in world, which can set in all 24 states of rotation. I hope, you understand what I mean.

I try to do this cross the blockstate property. I think — it is most easy way. But I have 2 properties: Facing (UP, DOWN, NORTH, EAST, SOUTH, WEST) and BINDING (LEFT_TOP, LEFT_BOTTOM, RIGHT_TOP, RIGHT_BOTTOM). That in turn gives you 24 different state.

I know that blockstate it is just 4 bit and it have 16 state variations.

So, my question. How can I resolve this problem? Maybe somebody have ready-made solution or some topics, where I can read about multiple state of blocks? How can I make 24 states for my block?

Thanks for you help.

##### Share on other sites

First of all, I would really really like some insight of you on this rotational stuff, because I have been beating my head against this for like a week and it's a) beginning to hurt and b) I still haven't figured it out.

For the rest, you can make block states based on properties in a TileEntity. You use getActualState in your Block class to transfer the data from TE into the IBlockState.

##### Share on other sites

If I understand your 24 states:

1) I can choose one of six faces to face me

2) I can then reach out, grip that face and dial it to choose one of its four adjacent faces to face UP. If I were holding a face with an arrow printed on it, I could point the arrow UP, RIGHT, DOWN or LEFT.

If your game purpose really needs to retain all of that information, then you do indeed have more states than can be kept in metadata. You'll need a TE as d7 suggested. If game effect really only hinges on one face (or allows you to calculate some of your data from neighbors like walls and fences do), then you can avoid the TE. If calculable, getActualState is where you'd do so.

What are you trying to do?

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.

##### Share on other sites

One other solution is to actually have two different blocks with the various states distributed between them. When someone performs certain rotations then you'd replace with the other block (with corresponding rotation state). If both blocks extend the same base block, then you can test for the base block anywhere your code needs the block.

But tile entity is better way to go. Just wanted to say that there are usually multiple options to solve problems in programming.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

##### Share on other sites

I making a room:

How can you see, here is 10 different blocks. They should be have 24 position states, because:

This is only one wall of room. But room have 6 walls. =) And yes, this is room from "The cube: Hypercube" movie.

I do not want make a many same blocks in different position. So I cut them to a minimum the number of unique blocks. And now I need to rotate them for construct my room.

##### Share on other sites

First of all, I would really really like some insight of you on this rotational stuff, because I have been beating my head against this for like a week and it's a) beginning to hurt and b) I still haven't figured it out.

For the rest, you can make block states based on properties in a TileEntity. You use getActualState in your Block class to transfer the data from TE into the IBlockState.

I'm obviously not the OP, but I managed to make a relatively simple block that stores its facing (just the standard

`EnumFacing`

values) in its

`TileEntity`

. You can see the implementation here:

`[url=https://github.com/Choonster/TestMod3/blob/da28151e33cd2f3bb9f7db1478e862fab629f220/src/main/java/com/choonster/testmod3/block/BlockColoredRotatable.java]Block[/url]`

,

`[url=https://github.com/Choonster/TestMod3/blob/da28151e33cd2f3bb9f7db1478e862fab629f220/src/main/java/com/choonster/testmod3/tileentity/TileEntityColoredRotatable.java]TileEntity[/url]`

Getting the facing synced correctly between all players was a bit tricky, but I just needed to call

`World#markBlockForUpdate`

when rotating the block to send the

`TileEntity`

update packet and when receiving the packet to update the model with the new facing.

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.

##### Share on other sites

Yes, one facing. That's easy. But the Block can also be rotated around that facing, to achieve all 24 possible states.

##### Share on other sites

Yes, one facing. That's easy. But the Block can also be rotated around that facing, to achieve all 24 possible states.

Hold on. If you have 6 states and TWO rotations, that's almost 100 total states.

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.

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

##### Share on other sites

Hold on. If you have 6 states and TWO rotations, that's almost 100 total states.

Wut? No no.

You have 6 possible "front" faces. And 4 possible rotations for each.

##### Share on other sites

I misread something. Probably as a result of having zoomed in on my tablet screen.

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.

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

##### Share on other sites

Yes, one facing. That's easy. But the Block can also be rotated around that facing, to achieve all 24 possible states.

I managed to extend my previous example with a face rotation property:

`[url=https://github.com/Choonster/TestMod3/blob/dee37427c6851507b30409e995dce21ee150c33c/src/main/java/com/choonster/testmod3/block/BlockColoredMultiRotatable.java]Block[/url]`

,

`[url=https://github.com/Choonster/TestMod3/blob/dee37427c6851507b30409e995dce21ee150c33c/src/main/java/com/choonster/testmod3/tileentity/TileEntityColoredMultiRotatable.java]TileEntity[/url]`

Having a block with so many possible combinations of properties makes me glad that Forge's blockstates format exists.

This should be pretty similar to what you're looking for, alexfadeev.

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.

##### Share on other sites

Even after figuring the data storage, you'll need to solve the placement problem. How will you control the secondary rotation? Perhaps right-clicks on an already-placed block can rotate it around its facing axis. It might actually be less work to make four different blocks.

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.

##### Share on other sites

Even after figuring the data storage, you'll need to solve the placement problem. How will you control the secondary rotation? Perhaps right-clicks on an already-placed block can rotate it around its facing axis. It might actually be less work to make four different blocks.

I want resolve this cross the rotationYaw and rotationPitch. Thats why I called them LEFT_TP, LEFT_BOTTOM etc.

Actually all 24 states can be placed only with this properties, without EnumFacing. But with facing it will more reliably.

## 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.

×   Pasted as rich text.   Restore formatting

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

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

×

• ### Posts

• Error code org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered   Crash Report:  https://pastebin.com/nif3vY2q   I have no clue how to fix this or even how to read this, I just wanted to play some modded MC. I thought I had watched and followed the YT tutorials well, but apparently not, any help would be great
• Tried it and still does the same thing. The funny thing is if I went to add a new installation in Minecraft launcher, it shows up, but not the icon. Also when I try to play on that installation it says "unexpected error" or "game crashed"
• Hello, my brother and I are attempting to run a Minecolonies server from their curseforge pack "MineColonies Official" with the zip file "ColonyVenture-1.17.zip   Crash report is either attached or in comment.

• ### Who's Online (See full list)

×

• #### Activity

×
• Create New...