Jump to content

Recommended Posts

Posted (edited)

I'm overhauling combat, and part of that, I've cancelled all the vanilla events related to that (left click, left click on block, left click on entity, etc) and am now sending packets back and forth from server/client to determine when and how a player should attack. However, an element I'm missing server-side is the ability to get the entity currently being looked at. 

 

So when an entity is struck, the event is canceled and a packet is sent to server, to my capability class where the rest of the logic is done. I've sent over that entity's position but I've two questions:

 

1) Is raycasting based on the player's look vector unreliable server-side?

 

2) If I just do a basic AABB bound check, do you think it's too imprecise?

 

For both cases, I'm thinking of situations where an entity is flailing about, or shares similar coordinates with another mob (say, a Villager and a jumping chicken) that shares the same coordinates, but not necessarily the same boundary spaces. 

Should I be doing something else?

 

Edited by Turtledove
Posted

I already have a function that does line segment-plane intersections for an entity's location and height, but it's moreso for my AOE attacks, not for precise single-entity-hits.

Posted (edited)

Can't you just use Minecraft.getInstance().pointedEntity on the client and send the entity's id to the server? Be wary that if the player is not looking at an entity pointedEntity will be null.

Edited by kaydogz
Posted
47 minutes ago, Turtledove said:

1) Is raycasting based on the player's look vector unreliable server-side?

Yes.

Especially when there is lag, the entity under attack might already moved away from the player's look vac by the time the packet reaches the server.

You should send the entity under attack from the client to the server, and implement some sort of check to prevent cheating.

 

49 minutes ago, Turtledove said:

2) If I just do a basic AABB bound check, do you think it's too imprecise?

AFAIK AABB is precise enough for this.

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.

 

 

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.