afkTerminator
AFK Machine = Are methods players use to defeat AFK detection to prevent being kicked or to gain rewards offered by some servers for time played. These "machines" fool the AFK detection by providing unattended, continual movement.
AFK Machine Detection
The plugin detects these types of AFK Machines:
- Mine Cart
- Flowing Water (circular)
- Flowing Water (falling)
- Continual jumping
- Piston Powered Jumping
- Piston Pushers
- Piston/Door Randomizer
- Creative Mode Fly Straight Up Forever
- Continual Fishing
- Saddled Pig ( with or without Carrot Stick )
- Saddled Pig with lead
- Horse
- Arrow Machine
- Continual Block Strike
- Vine Farm
- Water over Fence
AfkTerminator is able to detect the use of these machines and provides operators with several options in dealing with the offending players.
Penalties/Punishment
Penalties include:
- NOTHING (report only)
- LAVA - Cover the machine in flowing lava [VIDEO]
- TNT - Destroy the machine and surrounding area using TNT [VIDEO]
- KICK - Kick the player
- KILL - Kill the player
- COMMAND - Execute any operator configured command or commands. Default: 'ban [player]'
- SPAWNMOB - Spawn one or many mobs specified on player's location
One word of caution about using the TNT penalty option. As you can see in the video, this can be very destructive. I'm afraid that some players may take advantage of this in PVP or Factions servers, building an AFK machine simply for the destruction it can cause to surrounding buildings or bases. USE WITH CAUTION.
When penalty=COMMAND, multiple commands can be executed, and this is defined by separating commands in the config.yml with " /n ". For example:
(from config.yml)
# # If the punishment setting is "COMMAND", this is that command (or commands). # "[player]" will be replaced with't players name on execution # Multiple commands can be executed by separating commands with " /n ". All commands must be on a single line in this file. commandPenalty: 'ban [player] /n ontime remove [player]'
Admin/Moderator Notification of AFK Machines
When an AFK Machine is suspected and eventually detected, administrators can elect to be notified via a console message, receive MC mail, and/or logging of information in a log file.
Logfile
Information about detected AFK Machines will be found in the file /plugins/afkTerminator/AfkTerminator.log. There is no management of this file provided by the plugin, so it will grow continually. So server owners may want to delete this now and again, when the data contained has no more value.
In-game Message
Any player with the permission "afkTerminator.notify" will receive a message to their game client if they are online at the time of the detection. The language and content of this message is configurable and can be found in the afkTerminator/config.yml.
MineCraft Mail
Any player with the permission "afkTerminator.mailReceive" will receive an mail through any in-game mail system supported by the server. The message received is the same as seen in the in-game message (as described above), and hence is configurable.
AfkTerminator keeps track of the players with 'mailReceive' permission string through the use of a 'mail_list.yml' file found in the plugis/afkterminator folder. Each time a player joins the server and is found to have the permission, they will be added to this file along with the the time of the login.
Each time afkTerminator plugin is restarted (e.g. server reset), the file will be reviewed by the plugin an any player that has permission, but had not logged into the server for a configurable number of days will be removed from the mail list. This will keep the list from growing as admin/moderators turn over, and keep the system from sending messages to inactive players. If a player joins, that had the permission, but they no longer have the permission, they also will be removed from the list at that time. If a player is removed from list, still has permission, and later again joins the server, they will be re-added to the list.
The system command used to issue the mail to the players is also configurable, and is found in the config.yml. The default configuration is compatible with Essentials Mail.
Auto Login Blocker
The plugin will also prevent client hacks which try to "get around" an AFK kick by simply auto logging back into the server. This function will require a player to wait a configured amount of time before logging back into the sever after leaving for any reason. If there are multiple attempts the minimum time for a login is raised each time, and if the player exceeds a configured maximum number of failed attempts, an configured action (such as 'ban') can be taken by the afkTerminator.
If a player has the permission "afkTerminator.loginDelayExcluded", they will not be subject to this check.
Please see the pages for configuration, etc.
Permission(s)
afkTerminator.excluded
When a player has the "afkTerminator.excluded" permission string, they will not be subject to the afkTerminator punishment. Their use of afkMachines will still be recorded in the log and on console in order that there is a record, but instead of being punished, they will be set back to "no AFK Machine state" when an AFK Machine use is detected.
afkTerminator.loginDelayExculded
When a player has this permission they will not be subject to the minimum time for re-login after leaving the server.
afkTerminator.admin
When a player has this permission, the will be able to execute the command "afkt reload"
afkTerminator.notify
When a player has this permission, they will be notified with an in-game message (if they are online) when a player has been detected using an AFK Machine.
afkTerminator.mailReceive
Whan a player has this permission, they will be notified with a mail message when a player has been detected using an AFK Machine.
Vault.jar
The Vault plugin must be installed in your plugin directory if you want to use the afkTerminator permission strings
Installation
- Place AfkTerminator.jar in your plugin folder
- Place optional Vault.jar in your plguin folder if afkTerminator permission string is to be used.
- Restart your server / Reload Plugins
- Edit plugins/AfkTerminator/config.yml as needed
- Edit is not required, as defaults are set
- See insructions for config settings in the generated file or here
4. Restart your server / Reload Plugins if config.yml is modifed
That's it!
AFKTerminator can be integrated by other Plugin Developers!
The AFKTerminator has available an API so other AFK related plugins can take advantage of its detection capabilities, and use this information as part of that plugin's AFK algorithms. API instructions are found here.
Note from EDGE: The AFKTerminator was originally built for use with the OnTime plugin, but I thought there was a much larger need for this capability so I broke it out and made it slightly more powerful.
Change Log
For a complete change log, pleas see here
V3.0.8
Compiled/Tested with Spigot/Bukkit V1.9; Java8; Vault 1.5.6
Functional Enhancements
- Added 'water over fence' AFK machine detection (Ticket #67)
Fixes
- Fixed NPE seen on Projectile Machine detection (no ticket)
V3.0.7
Compiled/Tested with Spigot/Bukkit V1.9; Java8; Vault 1.5.6
Fixes
- Fixed issue (again) where new line "/n" token was not working on COMMAND penalty (no ticket)
- Fixed problem with '[VEHICLE]' variable in output, where previous data was not cleared out (no ticket)
V3.0.6
Compiled/Tested with Spigot/Bukkit V1.9; Java8; Vault 1.5.6
Fixes
- Fixed issue (really this time!) where offline players not receiving mail when enabled (Ticket #58/#61)
- Fixed issue where MOB arrow attack while player is AFK, may be falsely identified as "arrow damage" afk machine. (No ticket)
- Improved notes regarding proper syntax for using " /n " to specify multiple lines in command penalty (No Ticket)
Functional Enhancements
- Added '[vehicle]' to list of supported output variables in afkMachine detection messages to ops. This will specify the vehicle type used. (Ticket# 62)
V3.0.5
Compiled/Tested with Spigot/Bukkit V1.9; Java8; Vault 1.5.6
Fixes
- Fixed issue where offline players not receiving mail when enabled (Ticket #58)
- Fixed issue where some WATER based AFK machines were suspected by never detected (reported by user, but no ticket opened)
V3.0.4
Compiled/Tested with Spigot/Bukkit V1.9; Java8; Vault 1.5.6
- Recompiled v3.0.2 with Spigot 1.9 API, updated Java8, & latest Vault
Fixes
- Fixed NPE issue when attempting to send mail notifications (Ticket #58)
- Fixed issue where 'interaction' based AFK avoidance methods were not being detected (no ticket)
Functional Enhancements
- Will now detect some forms of farming machines
V3.0.3
Compiled/Tested with Spigot/Bukkit V1.9; Java8; Vault 1.5.6
- Recompiled v3.0.2 with Spigot 1.9 API, updated Java8, & latest Vault
V3.0.2
Compiled/Tested with Spigot/Bukkit V1.8.1; Java7; Vault 1.5.2
Fixes
- Fixed console errors seen when Vault, which is optional plugin, is not installed on the server (Ticket #45)
V3.0.1
Compiled/Tested with Spigot/Bukkit V1.8.1; Java7; Vault 1.5.2
Fixes
- Fixed issue with auto config upgrade when "worlds:" was not set to default '- all' in the config.yml. (Ticket #49)
V3.0.0
Compiled/Tested with Spigot/Bukkit V1.8.1; Java7; Vault 1.5.2
Functional Enhancements
- Made the plugin compatible with Spigot/Bukkit v1.8.1 and the use of UUIDs
- Added option to notify admin/moderators via mail when AFK Machines are detected. (Ticket #47)
- Made text displayed and sent in mail, upon AFK Machine detection, configurable (Ticket #47)
Fixes
- Fixed issue with 'interaction" detection enable/disable not working. (Ticket #48)
New Configuration
- mailNotifyEnable: Set to true, if players with correct permission should be sent mail upon detection of AFK Machines.
- afkDetectMsg: Configurable message displayed in-game, and mailed to players with correct permission upon detection of AFK Machines
- mailCommand: Configurable mail command to execute to send messages, when AFK Machines are detected
- mailListRemovalTime: Number of days a player with permission to receive mails can be absent before they are temporarily removed from the mail list.
New Commands
NONE
New Permissions
afkTerminator.mailReceive : If a player has this permission, they will receive a mail message when AFK Machines are detected
While using this plugin I have found one problem. I am trying to stop a autofishing machine using iron blocks and pistons. A iron block Is being pushed by a piston to level up your repair mcmmo. The only way to stop this machine is to keep the sensitivity to 10. I am fine with this as long as It doesn't lag the server.
10 sensitivity = Catches the machine in less then 2 minutes
5 sensitivity = Doesn't catch the machine after waiting 10 minutes.
Here is a video of how the machine works: http://www.youtube.com/watch?v=3NW5UIJ-zYk
Is there anyway to stop this without lagging the out the servert?
@YiveMe
Can you use world edit to make a schematic and post a link to tha file, or explanin it's construction? From the video I can't figure out how it is built and I need to build one to test my detection methods.
Thanks.
Oh, and open a ticket please, that would be most helpful.
I recommend adding fence detection. Here is a video of how it's done. http://www.youtube.com/watch?v=FPXMDcZnI7c
@Edge209
Place the boat in the water, drive it onto the dry piece of cobble like in the image, cast rod, turn on autofisher, fish get deposited into hoppers below which are attached to chest. The actual design of the machine doesn't really effect it.
@Nickbbeezy
Can you explain for me how the machine works? The best way for me to find a way to defeat it is to build one myself.
How would I block this kind of machine? http://prntscr.com/1zhvj1
"[10/24/2013 15:40:49] AFK Machine NO LONGER suspected for inflamedsebi Reason: yaw change"
@Edge209
Love it! Thanks :)
@omgitsbob12
Sure that's possible, but probably more complex then needed. If a player was actually online to see the message and enter the recaptcha, they could simply just exit or quit their anti-AFK activity.
So I could add an option that sends a warning message (admin defined) that would be sent to a player giving them "X" seconds (also definable) of to quit their activity before punishment is executed.
If this seem reasonable to you, then please open up an enhancement ticket and I will add this to the next update.
Is it possible to do something like when the game sends a user a message saying it has detected afk use and the user has to type the recaptcha in a certain amount of time or be kicked?
Sort of like NCP.
@KoolKrafter
I have added detection for an "arrow" machine in v1.6.0. Check it out!
Hi afkTerminator users,
I just now uploaded v1.6.0. It should be available shortly for download as soon as it has been approved by bukkitdev moderators.
Please see here for list of changes: http://dev.bukkit.org/bukkit-plugins/afkterminator/pages/detailed-change-log/
@DrErix
I have duplicated the machine you show in the video, and each time I have tested it afkTerminator has successfully detected the machine. I'm not sure what is different about your environment, but from my perspective I see no issue.
Is it possible to add detection for the method where you get shot by an arrow every so often?
@DrErix
This is a variation of a machine that is detected, but it is slightly different. I will investigate and hopefully find a quick solution. Thanks!
This machine is not detected, watch it please.
http://youtu.be/fjHZvtRgB9k
"llArturll Moved Wrongly" shows in console
@ConquestServer
There should be a config file created. Check your console output for some indicator of why the enable failed and if a config.yml was not created.
==== there is no config file for the plugin!!
i already resarted my server after i dropped the .jar in there...
@ConquestServer
See aftTerminator.excluded above
http://dev.bukkit.org/bukkit-plugins/afkterminator/#w-permission-s
can you please add the permission afkTerminator.bypass
In my server, i need the afk for survival world, factions world, and the hub world, but i do NOT want it for the creative world & the survival games worlds.
So i think a node like afkTerminator.bypass would be VERY nice to have, so I can add it to all of the world groups like creative and survival games so they dont get kicked!
@Edge209
Didn't mean to track afk time (I have set afk kick to 2 hours in Essentials) but use the detection time your plugin is reporting to console.
[..] (VEHICLE) detected. user has repeating location[..] Detection Time: 38 Min 7 sec
[..] (VEHICLE) detected. user has repeating location[..] Detection Time: 40 Min 35 sec
[..] (VEHICLE) detected. user has repeating location[..] Detection Time: 43 Min 30 sec
[..] (VEHICLE) detected. user has repeating location[..] Detection Time: 46 Min 32 sec
[..] (VEHICLE) detected. user has repeating location[..] Detection Time: 49 Min 54 sec
[..] (VEHICLE) detected. user has repeating location[..] Detection Time: 53 Min 13 sec
[..] (VEHICLE) detected. user has repeating location[..] Detection Time: 56 Min 48 sec
[..] (VEHICLE) detected. user has repeating location[..] Detection Time: 60 Min 24 sec
[..] (VEHICLE) detected. user has repeating location[..] Detection Time: 64 Min 4 sec
[..] (VEHICLE) detected. user has repeating location[..] Detection Time: 67 Min 36 sec
[..] (VEHICLE) detected. user has repeating location[..] Detection Time: 71 Min 17 sec
[..] (VEHICLE) detected. user has repeating location[..] Detection Time: 74 Min 51 sec
Using this time for punishing player (punish user after 20minutes of afk machine detection).