Jump to content

[1.7.10] Approximating a rotated bounding box for an entity.


Blargerist

Recommended Posts

In the interest of making things pretty, I'm wanting to make it appear that my entity(which is similar to EntityFallingBlock) partially slides through blocks when moving horizontally and vertically at the same time.

 

Unfortunately since Minecraft uses axis aligned bounding boxes, it's not exactly possible to simply rotate the bounding box. Is there any way to perhaps combine multiple axis aligned bounding boxes to create an approximation of a rotated bounding box? I know things like the Ender Dragon use multiple child entities in order to create a more complex box. Is child entities the only possible way? If so, I'm not sure prettiness would be worth the extra server load.

 

noClip is of course an option for causing the same sliding effect, but I am hoping to avoid handling turning that on/off at the correct times.

Link to comment
Share on other sites

Hi

 

I'm not sure what you mean by "partially slides through blocks".  What are you trying to achieve, exactly?  I think that Axis Aligned Bounding Box might not actually have anything to do with it.  AABB is used for detecting collisions with other entities or with the scenery, I don't think it affects the entity render.

 

-TGG

Link to comment
Share on other sites

By "bounding box" I mean whichever collision box within an entity stop the entity from moving inside of a block in the world. Apologies if I'm using the wrong term.

 

Ok, let me try to explain better what the effect I'm going for is. Imagine if a block of sand could slide off of a block it's sitting on top of, rather than simply being able to fall straight downwards when it has nothing below it. The EntityFallingBlock created for this , with its 0.98 x 0.98 bounding box, would only be able to move straight to the side by 1 block, before it would be able to fall downwards. The effect I'm after, is allowing the entity to move in an arcing motion, closer to a 45 degree angle. One might think that simply making a smaller bounding box for the entity would work, but the entity needs to extend far enough in each direction in order to properly collide with blocks on the ground before placement. In order to collide/not collide at the right time, it would effectively need an approximated diamond shape.

 

I'm currently leaning towards using temporary noClip for this instead of messing with the bounding box, I'm just seeing what my options are.

 

If that makes no sense(which it probably doesn't), I'm basically asking if it's somehow possible to make a more complex bounding box out of multiple cubes instead of a single cube.

Link to comment
Share on other sites

Well, I don't get exactly what your saying, but if I understand relatively correctly then you are looking to make an update that uses multiple bounding boxes. To do this create either a list of AxisAlignedBB objects or just another AABB field. Then, create an void onUpdate or onEntityUpdate function in the entity's class and in that do super.onEntityUpdate() or super.onUpdate() and then do something like this

List<Entity> ents = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox);
ents.addAll(worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox2));

or

List<Entity> ents = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox);
for(AxisAlignedBB bbox : listOfAABBs) {
ents.addAll(worldObj.getEntitiesWithinAABBExcludingEntity(this, bbox);
}

EDIT: never mind my last part, it is useless for this task (I'm not sure your explaining what you want right) if you wanted to mess with AABBs, this would work.

Power, even in the Darkness, Courage shall prevail

Link to comment
Share on other sites

Hi

 

Well if you want your sand to slide off other blocks, you don't need to use multiple bounding boxes at all.  Just put some custom "sliding collision" logic in the entity update method, to replace the vanilla update code in your entity. eg get the collision boxes of the nearby objects and use your custom non-axis-aligned collision detection to figure out which way the entity should move.

 

If you want other blocks to slide off your custom block, then that's a lot harder, but I don't think you need that?

 

-TGG

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.