PEMapModder / LegionPE-Public-Resources

The things in the resources/ folder in the LegionPE eta plugin. Create a GitHub account and contribute to this repository by making pull requests.
2 stars 3 forks source link

Vote-kick/ban mechanism on flying detected #9

Open PEMapModder opened 9 years ago

PEMapModder commented 9 years ago

Introduction

From the examples made by @williamtdr on lifeboat, most code-controlled fly-kick mechanisms suck because most flying detection code are stupid. And from what we mostly believe, most vote-kick mechanisms suck because there may be malicious players wanting to use vote-kick to a arbitrarily kick their enemies.

But on LegionPE, we trust our players, because we are usually half-full at least. But it is still hard to guarantee there will be no people using bots to vote kick anyone. And I trust my plugin. But I can't guarantee that the plugin knows every situation. It may think you're flying just because you are falling from the clouds to void, or swimming in water.

But what if we combine the two? If both the stupid but good computer and the clever but sometimes abusive players agree you are flying, you are most likely flying. Then we can make the computer more sensitive on flying, and let the community have note participation on the moderation against players trying to be unfair.

Implementation

We can make the plugin more sensitive - whenever the player is not on ground for more than 5 seconds, it broadcasts a message to the players in the world that that player is suspected. Players can use the /vk command to vote-kick the suspected player. If a proportion of the players in that world decided that the player was flying, he would be kicked. The player, and preferably his motion log, can be logged for future reference.

Decisions to make

PEMapModder commented 9 years ago

Amendment: It seems like banning for a period of time (like half an hour) is more effective than kicking.

PEMapModder commented 9 years ago

@xxflare not sure. It uses the Player.isFlying() method in @Bukkit. I don't have the Bukkit implementation source (because Bukkit/CraftBukkit is closed due to a DMCA notice), so I don't know how it works. I guess either Bukkit detects it or MCPC sends it :stuck_out_tongue_winking_eye:

PEMapModder commented 9 years ago

PocketMine/PocketMine-MP has a flying detection algorithm too, but it just detects if player is in air for 5 seconds. That sucks when it comes to lag, cobwebs, water, falling from space, etc.

PEMapModder commented 9 years ago

Then what is it different from inAirTicks?

PEMapModder commented 9 years ago

@luca28pet we usually have at least 20 players on.

PEMapModder commented 9 years ago

Yep, these are the ideas. Also I am calculating using the percentage of players.

Also, you won't have that problem if your server is always full.