Jump to content

[1.14.4] Getting a Block Model's Element Clicked by the Player


Recommended Posts

Posted

I have a Block.  So far, so good.

 

The block has a Boolean property: FORMED.

 

When false: the block's model is 1x1 (one full cube).

When true: the block's model is 3x3

 

The property switches from false to try when 26 other blocks are placed in the 3x3 area, in a typical multi-block fashion.

 

This is not my problem.

 

My problem is that I really want to know when the player clicks on a particular element of the 3x3 model.  I can't help but feel there is some ray tracing going on here, but none of my attempts of the past too-many-hours have yielded any success.

 

So far I've tried two approaches.  First, a "does this vector intersect with a square" solution found over yonder on StackOverflow.  It has given me mixed results.  As I don't really get the math going on behind it, all I've been able to do is try different inputs and see what happens.

 

Second, I've been fussing with VoxelShapes.  While they appeared promising, they only seem to be considered if the centre block is being targeted in some fashion.  I've tried to change the blocks getRaytraceShape to return the 3x3 area, but it didn't care.

 

Any suggestions?  I've been working with onBlockActivated, so I do have the Player and BlockRayTraceResult with which to play.

 

Thanks for reading.

Posted

Multiple blocks are indeed being placed, there are 26 other blocks surrounding my centre block.

 

My "does the vector intersect with this square" tests happen in these shell blocks, since they are the blocks actually being activated.

 

Which does reinforce the notion that the VoxelShapes path, however attractive, simply isn't going to fly.  So it's back to the math.

Posted

Well, it took me a couple of days, a handful of hours on 'mathisfun', and at least on instance of the problem intruding its way into dreams -- which is a sad commentary on my life.

 

The model elements are in block co-ordinates.  The hit vector is in world co-ordinates.  I was mixing units and simply took ages to make the connection.

 

So, yes, it is totally enough.

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.