Warden Newsletter #2


[SIZE=15]Warden Weekly Newsletter #2
Posted by the Warden Team![/SIZE]
[SIZE=18]Welcome![/SIZE]
Welcome to this weeks addition to the Warden Weekly Newsletter! We’ve made some changes since the last newsletter to the specifics of it so hopefully it is better suited to your tastes!

Useful Links:

Newsletter #1
Warden: The Plan

[SIZE=15] Today’s Topics [/SIZE]

#1: Weekly Warden Check Modifications
#2: The Weekly Warden Check
#3: New Members
#4: Recruitment
#5: Questions

[SIZE=15]Some modifications to the Weekly Warden Check[/SIZE]
Last time I posted the Weekly Warden Newsletter, I did so posting exact code from one particular server distribution, while Warden is meant to hit all server distributions, and be unbiased while doing so. I sincerely hope it was not taken as myself being bias, or that I prefer one framework over the other. The simple fact was I was posting already written code. I have since decided to revoke the code format from the weekly warden check, and instead replace it with a more in-depth explanation. Then for users who want to see how the code works they can head on over to the Warden github, and see it’s exact implementation (if they so desire). If an implementation does not exist they can surely create a nice PR for one. The goal is to get everyone contributing on Warden after all. For example the Spigot/Bukkit implementation relies on core Packet data (using protocollib, and some events), however as SpongeAPI is evolving the api is strong enough the team will not have to query packet data. Thus making the two versions very different. Which is not a bad thing. We want what works best on each platform to be the best for that specific platform. By only releasing details it allows everybody to help contribute, and as a community come up with the best solution. After all Warden is meant to be a community driven effort, and open Anti-Cheat up to everyone instead of just a select few (as it was before).

[SIZE=12]The Weekly Warden Check[/SIZE]
This week we’re diving into a quite heavy check. I feel however Warden’s unique solution patching this exploit more than any other anticheat will help show why Warden should be considered a great anticheat, and hopefully help more people understand even though it looks complicated it’s really just simple math, and lots of testing. So without further ado let’s jump into the Invalid-Movement Check.
The Invalid Movement Check is meant to block a specific mod. Phase/Phaze/Quantam Tunnel. All of which allow the user to “Phase” through certain blocks in the game. You can see it here. There have even been multiple reported Phases that can go through Full Blocks. However those are never released (for pretty obvious reason). So how does Warden attempt to fight this? Well we just check the players position whenever they move, and make sure they’re not inside a block. (Note there’s also a check to see if your sprinting & sneaking at the same time, which isn’t an exploit to anything, but it would cause problems with our speed check which is why we do it). So we simply listen for a MoveEvent, for each player, and then pass it into a check I like to call isPassable. This takes a player’s position which is located in double form, and then gets the current block that they’re standing on xyz’s. The block XYZ’s are stored as “ints” so we can subtract the player’s double x, y, and z against the block’s int x, y, and z. This allows us to get “How far they are inside a block”. What I mean by this is for blocks such as fences, vines, doors, etc. You can actually stand in the same space you occupy. By taking the double form of the player’s xyz, and subtracting it from the int form it allows us to get your relative position in a block. To hopefully explain this better let’s go with an bit more of an explanation. Each block in the world is 1x1x1 meter. However if player x is standing on top of the block, he is not actually taking up the full 1x1 space. By subtracting these values we get to see his relative position in the 1x1 space, e.g. 1/2 (or 0.5). This proves very important. Because for blocks like Stone you can’t be inside them at all. However for blocks like fences you can be partially inside of them. So the phase check is just checking how far “inside” a block you are, and seeing if you can actually stand that far within a block. Actually pretty simple when you think about it. Here are some values found so far:(note fx/fy/fz are the double - int, values I was talking about before)
(not really code, but code brackets, yay!)

SoulSand: fy >= 0.875 Sand: fy >= 0.975 Iron fence/Thin Glass: Math.abs(0.5 - fx) > 0.05 && Math.abs(0.5 - fz) > 0.05 Fence/Nether Fence: Math.abs(0.2 - fx) > 0.02 && Math.abs(0.2 - fz) > 0.02 Cake: fy >= 0.4375 Cauldron: Math.abs(0.5 - fx) < 0.1 && Math.abs(0.5 - fz) < 0.1 && fy > 0.1 Cactus: fy >= 0.9375
How did I get these values? Tons of testing. Logging for days, and days. Literally 3 days. Which in hindsight isn’t truly
to long, but it sure feels like a long time, when you just walk up to fences 1000 times, a day, and see what the maximum
value is that you can go “inside” a block.

[SIZE=12]New Members[/SIZE]
That’s right the Warden team has gained 3 people! Specifically 1 Developer, 1 Community Manager, and 1 Community
Ambassador! So say hello to the new folks:

[SIZE=13]Ferus Grim - Developer[/SIZE]
Why did you want to join the Warden Team?
I joined the Warden team because it looks as though Warden has a good chance at beating cheaters. The war will never end, and all we can do is win every battle we can. @LordLambda has laid down some pretty good blueprins and started on construction. I’m just hoping to contribute any way possible.
What’s one sentence to describe you?
Just a Java hobbiest looking to help out.
What are you most looking forward to doing for the Warden Team?
Well, I’ve already been assigned a task. So right now I’m looking forward to completing and getting one more thing out of
the way before Warden is completely functional. The project is extremely ambitious, so I’m looking forward to how users
react to it. Mostly, I’m looking to see how much better we can make servers worldwide.

[SIZE=13]Lord Alexander - Community Manager[/SIZE]
Why did you want to join the Warden Team?
I wanted to make sure that we can grow this project and defeat the cheaters! Who’s with me! Helping people create fair,
stable servers is important to everyone, and this is a great start.
What’s one sentence to describe you?
A very organized Administrator.
What are you most looking forward to doing for the Warden Team?
Putting this project into the spotlight that it deserves.

[SIZE=13]IronManDoesMC - Community Ambassador for Sponge[/SIZE]
Why did you want to join the Warden Team?
I wanted to join as I would be able to interact more with this amazing community.
What’s one sentence to describe you?
Someone who likes to code and talk with people while attempting to maintain his real life.
What are you most looking forward to doing for the Warden Team?
Doing my job. :stuck_out_tongue:

[SIZE=15]
Recruitment [/SIZE]
That’s right recruitment is still a go! So let’s jump right into it! Shall we?

How to apply
It’s a bit different this time. This time each position has a unique questionnaire. So simply go to the google form that’s associated with the position you want, and fill it out!
Recruitment Deadline: Before April 6th
Recruitment Results: April 6th

[SIZE=3]Positions you can apply for:[/SIZE]

Developer
This is exactly what it sounds like. Becoming a full on developer for Warden. Although anyone can add to warden you should add on a regular basis, and be in charge of the structure of warden changes. You will also make sure only acceptable PR’s get accepted. Even if you don’t know too much about how cheating goes on, or how to patch it. That is okay. Warden has many other components too. Such as the email component, bug fixing, custom account management, etc. These are all things experienced Java developers should have no problem with.
Amount needed: 1
Apply Here: http://goo.gl/forms/DIZHzG6uZX

Web Developer
However the core part of development is important, we also want to set up a base of operations for all things related to Warden. While we will still try to outreach to the communities as often as possible the goal is if you need something Warden, you can get it here. You should be experienced with both front-end, as well as back-end development.
[B][I]Amount needed: 3
Apply Here: http://goo.gl/forms/ghg91TJQAJ
These are the open positions right now.


[SIZE=20]Questions?[/SIZE]
Do you have any questions for us? If so, please let us know down below! We’d love to hear from you!

3 Likes

Nicely written, @Lord_Alexander. Great to be apart of the team. We’re looking forward to putting the coffin for hacking together, one nail at a time.

2 Likes

I seem to have forgotten to put a username slot on the application forms. So if you all would kindly put the username somewhere in your application, or PM some details about your applications so I can mark who is who that would be great. Thank you all for handling with my extreme tiredness at the time of making these forms.

Normally you can still edit that, and if you enable “allow editing”. We should even be able to edit our form again.

I will edit it but for the people who have already submitted I now have a full list. It was just a slight panic. Also I don’t want people changing their answers so allow editing is a no for me.

Hmmm, If devs have included their github account you can maybe find their username quickly using that (I did :blush:).

That is how I found yours. I have a complete list, and the question has been added so we’re good

-casually sends application-
weee, potentially part of a team~

also, i recommend changing that 1-10 maturity scale question; thats a little odd to make judgement off a number and people can just drop a 10 in (though from that you might be able to say they aren’t). something like a hypothetical scenario to respond to would be better, e.g. a long way of asking “How do you respond to criticism?” without straight up asking it.

1 Like

I know people can drop a hypothetical 10. It’s something I look for. I have a very special way of how exactly to handle that question.

Having a post that just updates with links to the newsletter posts (like Soaked Up) would be helpful.

1 Like

Good idea. I’ll talk to our community manager, and get that set up.

Links are fixed and I will be adding previous newsletter organization.