Jump to content

Event for Player Swinging


Stoud

Recommended Posts

If you want your anti-cheat to be a REAL thing with REAL security measures, you won't be using Events (only few).

Make server-only mod and modify packet handlers.

You can inject your own "checks" into packet pipeline and decide if incoming data (from client) is not "cheaty".

So e.g: If you receive more than X number of click/attack/interaction packets in short time, you can kick player from server.

 

As to how to do it - depends on version, 1.7.10 will not get any support. I guess 1.8 is too a bit different from 1.9.

So if any - expect 1.9+ solutions. As of now, I can't really help you, because I am 1.10+ (like probably most of forum helpers).

 

You can do your magic by replacing NetPlayerHandler (or whatever it name was, I'm out of IDE) on EntityJoinedWorldEvent whenever EntityPlayer joins server-sided world. Make your own handlers for vanilla packets of your choice and add modified code.

Or well - there are more approaches to this.

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

The reason I need to get it shouldn't be too relevant. I am trying to make a client side anticheat for mods to use while afk or whatever. I know it's not going to be something commonly used, and I'm not trying to make it so.

 

I think many solutions would port backwards decently well, so I'd be happy to even see a 1.10 solution.

 

And just saying, you can do some cool and somewhat effective stuff from the client side too. I already have a reach check, along with an aimbot check and a speed check. Speed works quite well, and the other two work to a lesser extent.

Link to comment
Share on other sites

client side

anticheat

 

AH HAHAHAHAHA

 

This will never work.  If someone is cheating, they can decompile your mod and make it report whatever the fuck they want.

 

Only one thing is ever true about a client/server interaction:

Assume the client is always lying.

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 should read what I wrote before posting.

If this became NCP, yes, client developers would decompile it. It's going to be private, so client devs won't exactly be too worried about it.

 

Also, you clearly don't understand what the mod is for. It's literally for moderators of servers. It doesn't check if YOU are cheating, it checks if a random player on the server is cheating.

 

Read before complaining next time please.

Link to comment
Share on other sites

You should read what I wrote before posting.

If this became NCP, yes, client developers would decompile it. It's going to be private, so client devs won't exactly be too worried about it.

 

Also, you clearly don't understand what the mod is for. It's literally for moderators of servers. It doesn't check if YOU are cheating, it checks if a random player on the server is cheating.

 

Read before complaining next time please.

[This client] doesn't know anything about [that client]. You would need to use packets for everything, to even get it to work remotely. It would be much easier and faster, if this was server-side only.

Also previously known as eAndPi.

"Pi, is there a station coming up where we can board your train of thought?" -Kronnn

Published Mods: Underworld

Handy links: Vic_'s Forge events Own WIP Tutorials.

Link to comment
Share on other sites

I understand it would be easier server side, but as I said numerous times, I'm not doing it server side. It literally has to be possible because the client renders the swining animation.

Note that I am guaranteed to be in the same chunk as the player.

Link to comment
Share on other sites

I understand it would be easier server side, but as I said numerous times, I'm not doing it server side. It literally has to be possible because the client renders the swining animation.

Note that I am guaranteed to be in the same chunk as the player.

The only thing I can think of for this would be to subscribe to ClientTickEvent and use the Minecraft...theWorld field to check the surrounding area (look for a certain player somehow). Then maybe use something like reflection if necessary to gain access to private or protected fields. You would need to access that players renderer and then grab the main model and then grab the swingProgress variable from the arm model. Not sure if that is even possible, but that should point you to the right direction.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

Oh wait. So this is not anti-cheat?

Now see - if you would state exactly what you are after, everything to this point wouldn't be needed.

 

If I understand correctly - you want a client-only Mod that will scan visible EntityPlayers (others)and check if they are not swinging too fast, right?

And if they are, you want some info about it, so (as a mod/admin/whatever) you would know who might be cheating, without interacting with server, right?

 

Well then - again - PICK VERSION.

 

There are 2 approaches:

1. Scan for animation progress (pretty bad).

* @SubscribeEvent PlayerTickEvent with: phase == START, world.isRemote (client), player != Minecraft#thePlayer

* There is arm swing variable inside entity, start from EntityPlayer, go up (in hierarchy) you should find something like limb swing.

* Now - why is it bad? Because I have no idea how limb swing is manipulated, it probably receives packet from server to start swing animation and you could check against that - again, lame.

 

2. Read my previous post, reverse sides. Modify Client's NetPlayerHandlers for all other players that join your client world. Check for swing packetsand other stuff, make proper checks and whatever.

 

Other:

You might wanna use @Capabilities to store some "tracking data". Yes, you can assign temp data (that is client-only, not saved) to players and use it to decide if e.g: given player is receiving a lot of swinging packets. Here again - since I am not in IDE, i recommend digging into WHEN exactly server sends such packets.

 

Now - version and DIRECT questions, please.

1.7.10 is no longer supported by forge, you are on your own.

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.

×
×
  • Create New...

Important Information

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