Posted May 13, 20205 yr 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 May 13, 20205 yr by Turtledove
May 13, 20205 yr Author 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.
May 13, 20205 yr 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 May 13, 20205 yr by kaydogz
May 13, 20205 yr 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.
May 13, 20205 yr Author Thanks all, got it resolved. I used both AABB and basic linear algebra to check for intersections.
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.