
AntiAFKPro provides an incredibly efficient, yet powerful and advanced anti-afk and player-time plugin. Configure actions that are executed when players are AFK or reach play-time milestones!
This plugin allows you to configure 'actions' that are executed when a player is AFK or has played for a certain amount of time.

Come and join our official Discord Server!

- Detects AFK players effectively and efficiently
- Will detect Auto-Clicking and other macros that simply move the player character
- Save and reward Player Time
- Send players to other servers when they reach playtime / are afk
- Configurable actions (Including the ability to execute Commands, Sounds, Titles and Messages or based of player permission) when a player is AFK or has played for a set amount of time
- Repeat actions when users play for set amounts of time (I.E give them a reward every 10 minutes of playtime!)
- Cannot be bypassed using Vanilla Minecraft mechanics
- Create a completely configurable GUI to show player time (see pictures below)
- Store Player Time data via MySQL (Allowing you to sync player-time data across a Bungeecord) or SQLite
- Plugin offloads tasks to other threads and does not listen on CPU heavy events (It will run like a feather on your machine)
- Placeholder support
- EXTREMELY lightweight





General Permissions:
/jetsantiafkpro (alias /playtime) - Shows player time (as a menu or in chat) -
jetsantiafkpro.menu
/jetsantiafkpro about - Shows information about the plugin
Admin Permissions:
/jetsantiafkpro reload - Reloads the Action Nodes and Messages - jetsantiafkpro.admin.reload
/jetsantiafkpro playtime <user> - Shows that players playtime - jetsantiafkpro.admin.playtimeother
/jetsantiafkpro set <user> <playtime> - sets a user their playtime - jetsantiafkpro.admin.setplaytime
/playtime and /antiafkpro are alias's for these commands
If you want actions to only be executed for certain players with a permission, then you can do this! Simply use the Permission action in conjunction with others that you want to use!

Drop into your /plugins/ directory and configure!
PlaceholderAPI (Can be used in other plugins)
Code:
Valid Placeholders:
%jetsantiafkpro_timeplayed_years% //Returns years the player has played
%jetsantiafkpro_timeplayed_months% //Returns months the player has played
%jetsantiafkpro_timeplayed_days% //Returns days the player has played
%jetsantiafkpro_timeplayed_hours% //Returns the hours the player has played, minus days
%jetsantiafkpro_timeplayed_minutes% //Returns minutes the player has played, minus hours/days
%jetsantiafkpro_timeplayed_seconds% //returns seconds the player has played, minus minutes/hours/days
%jetsantiafkpro_timeplayed_seconds_unformatted% //returns total seconds played
%jetsantiafkpro_timeplayed_minutes_unformatted% //returns total minutes played
%jetsantiafkpro_timeplayed_hours_unformatted% //returns total hours played
%jetsantiafkpro_afk_seconds% //Returns the time the player has been AFK for
%jetsantiafkpro_isafk% //Returns a placeholder configured in config.yml if the user is afk
You can also do %jetsantiafkpro_top_<number>_<restoftheplaceholderhere>% to get top players
and
%jetsantiafkpro_top_<number>_player_name% to get the player name of that position

Code:
#############################################
# #
# JetsAntiAFKPro
#
# Created by Jet315 #
# #
#############################################
#The prefix that is shown before the plugin
plugins_prefix: "&eAFK &7» "
# -- Plugin Settings --
#The check delay in seconds - These calculations are done ASync so I wouldn't suggest changing this (It's not going to effect performance)
#If you do change it, the actions below must be divisible by this number (I wouldn't suggest changing it, but you have the option too)
check_delay: 1
Code:
#Items can be easily added!:
#Example:
# item_name: - Can be called anything
# type: STAINED_GLASS_PANE - Any Material, MUST be valid for your Minecraft Version
# data: 15 #Not used for Minecraft version 1.13 +
# name: " " - Can be called anything (and can contain placeholders)
# slot: 2 - Can be in any slot
# command_to_perform: "" - Can perform any command when clicked (%CLOSE% to close the menu) - forces user to execute the command
# lore: - Can have any lore
#
# Possible plugin placeholders:
# %TIME_PLAYED_DAYS% - Returns the number of days played by the player (integer)
# %TIME_PLAYED_HOURS% - Returns the number of hours played by the player (integer 0-24)
# %TIME_PLAYED_MINUTES% - Returns the number of minutes played by the player (integer 0-60)
# %TIME_PLAYED_SECONDS% - Returns the number of seconds played by the player (integer 0-60)
# %TIME_PLAYED_SECONDS_UNFORMATTED% - Returns the number of total seconds played by the user (integer)
#
#
#This is the GUI shown when a user does not have a house
playtime_gui:
slots: 9 #Must be a multiple of 9
gui_name: "&bTime Played Menu"
items:
close_item:
type: NETHER_STAR
data: 0
name: '&c&lCLOSE'
slot: 0 #Slot start at 0
command_to_perform: "%CLOSE%" #%CLOSE% = close menu
lore:
- ' '
- '&7Click to close'
- '&7this GUI'
- ' '
- '&d&m-------------------'
time_item:
type: COMPASS
data: 0
name: '&a&lTime Played'
slot: 8
command_to_perform: "%CLOSE%"
lore:
- '&6You Have Played For:'
- ' '
- '&eDays: &b%TIME_PLAYED_DAYS%'
- '&eHours: &b%TIME_PLAYED_HOURS%'
- '&eMinutes: &b%TIME_PLAYED_MINUTES%'
- '&eSeconds: &b%TIME_PLAYED_SECONDS%'
- ' '
- '&d&m-------------------'
Code:
#Messages configuration value
no_permission: "&cYou do not have permission to this command!"
failed_to_load_stats: "&cAn issue has occured! Please try again later..."
#If you've disabled the GUI, then this message will be send went a player does /playtime (or alias)
# Possible plugin placeholders:
# %TIME_PLAYED_DAYS% - Returns the number of days played by the player (integer)
# %TIME_PLAYED_HOURS% - Returns the number of hours played by the player (integer 0-24)
# %TIME_PLAYED_MINUTES% - Returns the number of minutes played by the player (integer 0-60)
# %TIME_PLAYED_SECONDS% - Returns the number of seconds played by the player (integer 0-60)
# %TIME_PLAYED_SECONDS_UNFORMATTED% - Returns the number of total seconds played by the user (integer)
playtime_message: "&aYou have played for &e%TIME_PLAYED_DAYS% &aDays, &e%TIME_PLAYED_HOURS% &aHours, &e%TIME_PLAYED_MINUTES% &aMinutes and &e%TIME_PLAYED_SECONDS%&a seconds"

I have implemented a basic API so you are able to get playertime / afk time if you wish. Code to implement:
Code:
//I would suggest saving this to a field variable, so you don't have to keep keep calling the Bukkit API
((AntiAFKProAPI) Bukkit.getPluginManager().getPlugin("AntiAFKPro")).getAntiAFKProAPI();
(Just PM me if you want me to add something)
https://pastebin.com/Fmwm41BP

Any problems, questions or suggestions send me a PM here, on Spigot - I'm pretty active


By buying this plugin you agree to the following terms:
- You will not chargeback - If you have a legit issue that I cannot fix then I’ll happily refund you
- I cannot guarantee support indefinitely.
- You may not -Redacted- or resell this plugin (You are welcome to modify it for your servers needs though)
- I may refuse to give you support with or without any specific reason
- If you have an issue with this plugin, please contact me before leaving a 1 or low star rating
- I can update this terms of use at any time, without notification