Jump to content

Struggling with Multiblocks for 1.12.2


MayusYT

Recommended Posts

Hi, there! I want to create my own multiblock in Forge 1.12.2. The thing I struggle with is the pattern recognition. I already searched the Forum, but couldn't find what I wanted. Either it was outdated or it was not solved.

 

So I want to create a 3x3 hollow master-slave multiblock. The following problem is what i stumbled upon:
Assuming the yellowish rectangle is the controller, it is facing to north here. I want to get the facing on its left, that would be "West" in the picture.
6TD5y6Y.png
But when the Controller is e.g. facing to the east, the block on its left is on the north facing:
U82cOFx.png

My question is now: How can I get a facing RELATIVE to the blocks direction?
Thanks in advance.

Link to comment
Share on other sites

On 5/21/2019 at 9:59 PM, V0idWa1k3r said:

EnumFacing#rotateY(rotateYCCW for rotating counter-clock wise)

Thanks for your reply. Unfortunately, the controller still can't determine the blocks correctly.

See this picture - the small arrows on the controller point to the direction they're facing to:
IlzIMAE.png

currentPos = currentPos.add(0, -1, 0);
currentPos = currentPos.offset(EnumFacing.byIndex(world.getBlockState(currentPos).getBlock().getMetaFromState(world.getBlockState(currentPos))).rotateYCCW());

^ that's the code I currently have. currentPos is the controller's position at first, then I subtract 1 on the y axis and rotate the facing counter-clockwise. I placed the stone block where currentPos is. As you can see, the block isn't always at the same position relative to the controller.

 

I have trouble with fixing this, any help will be appreciated!

Edited by MayusYT
Link to comment
Share on other sites

4 hours ago, MayusYT said:

currentPos = currentPos.offset(EnumFacing.byIndex(world.getBlockState(currentPos).getBlock().getMetaFromState(world.getBlockState(currentPos))).rotateYCCW());

Oh holy mother jesus christ, what the fuck is this garbage?

 

Why the ever loving crap are you calling getMetaFromState?

 

currentPos.offset(world.getBlockState(currentPos).getValue(FACING).rotateYCCW());

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

Just now, Draco18s said:

Oh holy mother jesus christ, what the fuck is this garbage?

 

Why the ever loving crap are you calling getMetaFromState?

 

currentPos.offset(world.getBlockState(currentPos).getValue(FACING).rotateYCCW());

haha no need to get aggressive :P That was just a quick hacky way how I did this and I already fixed it.

 

At the moment it works fine, so this can be closed now.

Link to comment
Share on other sites

Draco is not being aggressive; he is just expressing his "WTF why" in a straightforward way ;)

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

I'd say "read my signature" but I'm not sure those even exist any more. :V

 

Something something, "apparently I'm a jerk who just likes to make your life miserable."

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

You know, not everyone who asks something here is an expert. Beginners like me don't get everything right the first time, and I think that's okay. Feel free to just tell it me in a normal tone, but I have zero understanding for persons being that aggressive, unpleasant or unhelpful. Statements like these don't help the person who asked the question nor do they help the conversation. If that is a "straightforward way" for you, then I'll consider asking on the MMD discord in the future.

Edited by MayusYT
  • Like 1
Link to comment
Share on other sites

Of course it's alright to not get everything right the first time.

I think the problem here is that you are misunderstanding Draco18s' tone. Draco is a fun and helpful person who spend a lot of his time on the forum answering others' question. His occasional sarcasm keeps the conversation in a light mood, but might sometimes appear to be unfriendly (which is definitely not his intention) to people who are not used to his way of speaking, in which case all I could say is "don't take it personally; he doesn't mean that; he is trying to help you".

 

As for your problem, you should not directly use the meta of a blockstate to get the direction it is facing, as the meta of a blockstate might not directly convert to its corresponding EnumFacing (some blocks stores more than just an EnumFacing value in its meta). Instead, you should use the FACING property of the blockstate, which, if exists, always directly tells you the facing of the block. It is also faster and more readable.

Edited by DavidM
  • Like 1

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

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.

Announcements



×
×
  • Create New...

Important Information

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