Posted November 19, 20159 yr 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.
November 19, 20159 yr 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.
November 19, 20159 yr 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/
November 20, 20159 yr Author 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. I think, I will use TileEntities for resolve this. Now I learn about this.
November 20, 20159 yr 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] , blockstates file 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.
November 20, 20159 yr 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. 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.
November 20, 20159 yr 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. 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.
November 20, 20159 yr 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] , blockstates file 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.
November 21, 20159 yr 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.
November 21, 20159 yr Author 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.