V AFKZone
# 🏗️ V-AfkZone
**Timed AFK Rewards for Paper Servers**
> Simple vertical transportation for Paper 1.21.1+ servers


—
## ✨ Features
– 🎯 **WorldGuard Integration** — Create AFK zones using existing WorldGuard regions
– 🌍 **AFK Everywhere** — Permission-based rewards outside designated zones
– ⏱️ **Flexible Timers** — Configure reward intervals per zone or profile
– 📊 **Visual Feedback** — Boss bars, action bars, titles, and chat messages
– 🖱️ **Admin GUI** — In-game management with `/afkzone`
– 🔌 **PlaceholderAPI** — Full expansion with 13+ placeholders
– 🔔 **Custom Events** — Developer API with cancellable events
– 🔄 **Auto Migration** — Seamless upgrades from legacy configs
– ⚡ **Zero Lag** — Optimized scheduler with configurable intervals
– 🔒 **Protected Zones** — Prevent double-rewarding with zone priority system
—
## 🚀 Installation
1. **Download** the latest `V-AfkZone-1.0.0.jar`
2. **Place** the jar in your server’s `plugins/` folder
3. **Ensure** WorldGuard and WorldEdit are installed
4. **Start** the server to generate default configs
5. **Configure** zones in `plugins/V-AfkZone/area/`
6. **Reload** with `/afkzone reload` or restart
—
## 🎮 Quick Start
### Creating Your First AFK Zone
“`bash
# 1. Create a WorldGuard region first
/region define spawn_afk
# 2. Create the zone config
/afkzone create zone spawn_afk
# 3. Edit plugins/V-AfkZone/area/spawn_afk.yml
“`
### Enabling AFK Everywhere
“`bash
# 1. Create the profile
/afkzone create everywhere afk
# 2. Grant permission to players
/lp user permission set vafkzone.everywhere.use true
# 3. Reload the plugin
/afkzone reload
“`
—
## ⌨️ Commands
| Command | Permission | Description |
|———|————|————-|
| `/afkzone` | `vafkzone.admin` | Opens admin GUI |
| `/afkzone menu` | `vafkzone.admin` | Opens main GUI |
| `/afkzone reload` | `vafkzone.admin` | Reloads all configs |
| `/afkzone info` | `vafkzone.info` | Shows your active sessions |
| `/afkzone sessions` | `vafkzone.admin` | Shows all active sessions |
| `/afkzone sessions ` | `vafkzone.admin` | Shows player’s sessions |
| `/afkzone create zone ` | `vafkzone.admin` | Creates zone config |
| `/afkzone create everywhere ` | `vafkzone.admin` | Creates everywhere profile |
| `/afkzone edit ` | `vafkzone.admin` | Opens editor (auto-detects) |
| `/afkzone edit zone ` | `vafkzone.admin` | Opens zone editor |
| `/afkzone edit everywhere ` | `vafkzone.admin` | Opens profile editor |
| `/afkzone delete ` | `vafkzone.admin` | Deletes zone/profile |
| `/afkzone delete zone ` | `vafkzone.admin` | Deletes zone |
| `/afkzone delete everywhere ` | `vafkzone.admin` | Deletes profile |
| `/afkzone setup ` | `vafkzone.admin` | Shortcut for zone create |
| `/afkzone everywhere ` | `vafkzone.admin` | Shortcut for everywhere create |
—
## 🔐 Permissions
| Permission | Default | Description |
|————|———|————-|
| `vafkzone.admin` | `op` | Full admin access |
| `vafkzone.info` | `true` | View own AFK info |
| `vafkzone.use` | `true` | Use AFK zones |
| `vafkzone.everywhere.use` | `false` | Use default everywhere profile |
> 💡 **Tip:** Custom everywhere profiles can use any permission node (e.g., `vafkzone.everywhere.vip`)
—
## ⚙️ Configuration
### Zone Config (`area/spawn_afk.yml`)
“`yaml
### Zone identification
zoneName: spawn_afk
worldGuardRegion: spawn_afk
worldName: world
### Reward settings
requiredSeconds: 60
enabled: true
### Visual feedback
show-bossbar: true
show-actionbar: true
show-reward-received-message: true
### Sound effects
sound: false
sound-type: level_up
### Protection – blocks AFK Everywhere in this zone
disable-afk-everywhere: false
### Commands run as console when reward fires
rewardCommands:
– give %player% diamond 1
– broadcast %player% earned a reward from AFK zone spawn_afk!
“`
### Everywhere Profile (`everywhere/afk.yml`)
“`yaml
enabled: true
permission: vafkzone.everywhere.use
priority: 0
### Movement detection
walking: true
idle-threshold-seconds: 60
### Reward settings
requiredSeconds: 60
### Visual feedback
show-bossbar: true
show-actionbar: true
show-reward-received-message: true
### Sound effects
sound: false
sound-type: level_up
### Commands
rewardCommands:
– give %player% diamond 1
– broadcast %player% earned a reward from AFK Everywhere!
“`
### Global Config (`config.yml`)
“`yaml
settings:
check-interval-seconds: 1 # Scheduler tick rate
show-bossbar: true # Master boss bar switch
notify-admin-on-reward: false # Log to online admins
debug: false # Extra console logging
messages:
### MiniMessage format supported
prefix: “[V-AfkZone] ”
“`
—
## 🔌 PlaceholderAPI
When PlaceholderAPI is installed, the `vafkzone` expansion is auto-registered:
| Placeholder | Description |
|————-|————-|
| `%vafkzone_in_zone%` | true/false if in any zone |
| `%vafkzone_zone_name%` | Current zone name |
| `%vafkzone_zone_names%` | All active zone names |
| `%vafkzone_next_reward%` | Seconds until next reward |
| `%vafkzone_rewards_total%` | Total rewards earned |
| `%vafkzone_time_in_zone%` | Seconds in current zone |
| `%vafkzone_required_seconds%` | Required seconds for zone |
| `%vafkzone_in_everywhere%` | true/false if in everywhere mode |
| `%vafkzone_everywhere_name%` | Active everywhere profile |
| `%vafkzone_everywhere_next_reward%` | Seconds until everywhere reward |
| `%vafkzone_everywhere_rewards_total%` | Total everywhere rewards |
| `%vafkzone_any_active%` | true/false any AFK active |
| `%vafkzone_active_count%` | Number of active sessions |
—
UserCrates
* [UserCrates](#usercrates)
* [About](#about)
* [Special Notes](#special-notes)
* [For Server Owners](#for-server-owners)
* [For Developers](#for-developers)
* [Commands](#commands)
* [Configs](#configs)
* [lang.yml](#langyml)
* [config.yml](#configyml)
* [Support](#support)
# UserCrates
This plugin makes every chest a potential crate by someone. Every player can make a crate and put items they want to it, then open their own crates!
## About
How it works? Simply you just look to a crate, write a couple commands, and done! Now anyone with a key can open that crate. Nothing else required!
## Special Notes
### For Server Owners
If you want to enable economy features (such as paying money to a crate), you need to install Vault and an economy plugin that works with Vault to your server. It is not
required though, plugin will automatically disable the economy-specific features when Vault is not correctly setup.
Any chest protected by at least one of the plugins below will be unable to become a crate. If you want another plugin to be here, tell me on my discord.
* WorldGuard
* GriefPrevention
All the permissions should be enabled to all users by default. If you wish to make some limitations, you need a permission manager plugin that allows you to disable a
permission.
### For Developers
Unfortunately, there is no API for this plugin. Despite it would be useless at the moment, I can make one if enough requests for it approaches.
## Commands
| Commnad | Descripton | Permission Required |
|————————————|————————————————————————————-|—————————-|
| /crate | Main command. | usercrates.use |
| /crate help | Provides a main help menu for all the other commands | |
| /crate create [amount] [label] | Creates a crate at the chest you are looking at. | usercrates.create |
| /crate delete | Deletes the crate you are looking at. Of course you need to be owner of that crate. | usercrates.delete |
| /crate manage | Provides a simple menu for command suggestions about modifying your crate. | usercrates.manage |
| /crate addaccessor | Adds the given player as an accessor for your crate. | usercrates.accessor.add |
| /crate removeaccessor | Removes the player given from the accessors of your crate. | usercrates.accessor.remove |
| /crate changetype | Changes the type of your crate. | usercrates.changetype |
| /crate setprice | Changes the price of your crate | usercrates.setprice |
| /crate getkey | Gives you an amount of the keys to sell with various ways. | usercrates.getkey |
## Configs
### lang.yml
“`yaml
# Messages of the commands /crate addaccessor and /crate removeaccessor
accessor:
# /crate addaccessor
add:
# When there is no chest at where player is looking.
not-chest: ‘&cYou need to look at the crate that you want to add an accessor.’
# When player is looking to a chest, but it isn’t a crate.
not-crate: ‘&cYou are not looking at a crate.’
# When player tries to do this action for a crate that he does not own.
not-owner: ‘&cThat crate is not yours.’
# When the given name already exists inside accessor list of that crate.
exists: ‘&b%player% &cis already an accessor of this crate.’
# When player successfully adds someone to accessor list
# %player% – Player whose added as an accessor.
success: ‘&aSuccessfully added &b%player% &aas an accessor to this crate!’
# /crate removeaccessor
remove:
# When there is no chest at where player is looking.
not-chest: ‘&cYou need to look at the crate that you want to remove an accessor.’
# When player is looking to a chest, but it isn’t a crate.
not-crate: ‘&cYou are not looking at a crate.’
# When player tries to do this action for a crate that he does not own.
not-owner: ‘&cThat crate is not yours.’
# When the given name does not exist inside accessor list of that crate.
unexists: ‘&b%player% &cis not an accessor of this crate already.’
# When player successfully removes someone from accessor list
# %player% – Player whose removed from accessors
success: ‘&aSuccessfully removed &b%player% &afrom accessors of this crate!’
# /crate changetype
changetype:
# When there is no chest at where player is looking.
not-chest: ‘&cYou need to look at the crate that you want to change type.’
# When player is looking to a chest, but it isn’t a crate.
not-crate: ‘&cYou are not looking at a crate.’
# When player tries to do this action for a crate that he does not own.
not-owner: ‘&cThat crate is not yours.’
# When player wants a pricable type but there is no economy.
no-econ: ‘&cYou can”t make your crate for sale, because this server does not have an economy.’
# When player successfully changes the crate type.
# %type% – New type of the crate. Defined under ‘manage.types’
success: ‘&aSuccessfully changed crate type to &b%type%!’
# /crate create
create:
# When there is no chest at where player is looking.
not-chest: ‘&cYou need look at a chest to make it a crate.’
# When player is looking to a crate
already-crate: ‘&cThere is already a crate there.’
# When player successfully creates a crate.
success: ‘&aSuccessfully created a crate at that block! You can put your items to your crate, set a price and get keys for it, and add accessors to manage the crate.’
# Additional warning to success message. Only appears when there is no economy on the server.
no-econ: ‘&6You won”t be able to make your crate for sale, because this server does not have an economy.’
# /crate delete
delete:
# When there is no chest at where player is looking.
not-chest: ‘&cYou need to look at the crate that you want to delete.’
# When player is looking to a chest, but it isn’t a crate.
not-crate: ‘&cYou are not looking at a crate.’
# When player tries to do this action for a crate that he does not own.
not-owner: ‘&cThat crate is not yours.’
# When player successfully removes the crate.
success: ‘&aSuccessfully removed the crate!’
# /crate getkey
getkey:
# When there is no chest at where player is looking.
not-chest: ‘&cYou need to look at the crate that you want to get a key for.’
# When player is looking to a chest, but it isn’t a crate.
not-crate: ‘&cYou are not looking at a crate.’
# When player tries to do this action for a crate that he does not own.
not-owner: ‘&cThat crate is not yours.’
# When player tries to get a key for a crate that does not support keys.
not-keyable: ‘&cThis crate doesn”t support keys. You have to buy the crate by opening it. If you wanted to make it able for keys, change its type using &b/crate changetype &cfirst.’
# When player successfully gets some keys.
# %amount% – Number amount of the keys player got.
success: ‘&aSuccessfully got &b%amount% &akeys!’
# /crate manage
manage:
# When there is no chest at where player is looking.
not-chest: ‘&cYou need to look at the crate that you want to manage.’
# When player is looking to a chest, but it isn’t a crate.
not-crate: ‘&cYou are not looking at a crate.’
# When player tries to do this action for a crate that he does not own.
not-owner: ‘&cThat crate is not yours.’
# Header of the menu.
# %player% – Player whose owner of this crate.
header: ‘&4–&a%player%”s Crate&4–‘
# Owner text that shows the crate owner.
# %player% – Player whose owner of this crate.
owner: ‘&eOwner: &b%player%’
# Accessors text that shows the accessors.
# %accessors% – A list of the players that is an accessor of this crate.
accessors: ‘&eAccessors: &b%accessors%’
# [ADD] Button that suggests you /crate addaccessor when clicked.
add-accessor: ‘&a&l[ADD]’
# Type text that shows type of the crate.
# %type% – Type of the crate. Defined under ‘manage.types’
type: ‘&eUsing Type: &b%type%’
# Price text that shows price of the crate.
# %price% – Price of the crate.
price: ‘&ePrice: &a%price%’
# [CHANGE] Button that suggests you /crate setprice to change the price when clicked.
change: ‘&a&l[CHANGE]’
# Colorless type names for all the crate types.
types:
# Means that the only way to open the crate is using a key of it.
KEY: ‘Only using Key’
# Means that the only way to open the crate is paying the price of it.
PRICE: ‘Only with price’
# Means that player can open the crate in both key and price ways.
BOTH_PRICE_KEY: ‘Prices & Keys’
# Means that no one but the accessors can open the crate without a price/key. Intended for fun purposed crates.
ONLY_ACCESSORS: ‘Accessor Only’
# Footer of the menu.
footer: ‘&4————————‘
# /crate setprice
setprice:
# When there is no economy on the server, meaning this command is completely useless.
no-econ: ‘&cYou can”t set a price for any crate, because this server does not have an economy.’
# When there is no chest at where player is looking.
not-chest: ‘&cYou need to look at the crate that you want to change the price.’
# When player is looking to a chest, but it isn’t a crate.
not-crate: ‘&cYou are not looking at a crate.’
# When player tries to do this action for a crate that he does not own.
not-owner: ‘&cThat crate is not yours.’
# When the crate player is looking at does not support prices.
not-pricable: ‘&cThis crate can”t have a price. You need to get a key using &b/crate getkey&c. If you wanted to make it for sale, change its type to a buyable type using &b/crate changetype &cfirst.’
# When player successfully changed the crate price.
# %price% – New price of the crate.
success: ‘&aSuccessfully changed crate”s price to &b%price%!’
# /crate help (Also appears when you try to execute an unknown command, such as /crate askdg or /crate setype.)
help:
# Header of the list.
header: ‘&4—–&aHelp Menu&4—–‘
# Command format of the list.
# %cmd% – Usage of the command.
# %desc% – Description of the command.
format: ‘&b%cmd% &6- &e%desc%’
# Footer of the list.
footer: ‘&4——————-‘
# When someone manages to break a crate block without displaying it.
crate-break: ‘&cYou can”t break a crate block. If you tried to remove it, consider &b/crate delete&c.’
# Messages about the moment that someone opens a crate.
open:
# When there is no space at player’s inventory.
no-space: ‘&cYou have no space in your inventory to open this crate.’
# When the crate is in ‘Accessor Only’ mode, but player is not an accessor.
not-accessor: ‘&cThis crate is accessor only, you can”t open it.’
# When player is opening the crate.
ing: ‘&eOpening the crate…’
# When the crate is a type that supports prices but there is no economy in the server.
no-econ: ‘&cYou can”t open this crate right now, because this server probably removed their economy system while this crate was still in &bOnly Price &ctype. Ask the crate”s owner to change the type.’
# Stands for ‘not-enough-balance’. When player couldn’t afford the crate.
# %price% – Amount of the money player needs. Guaranteed that player’s balance is lower than it.
neb: ‘&cYou need &a%price% &cto open this crate.’
# When player isn’t holding a key on his hand but the crate requires one.
no-key: ‘&cYou need to hold a key in your hand for this crate.’
# When player is holding a key that belongs to another crate.
invalid-key: ‘&cYou are not holding the correct key for this crate.’
# When there is nothing inside the crate.
nothing: ‘&cThere is nothing inside this crate.’
# Says how much money did player spent on this crate, if he did.
# %price% – Amount of the money player spent on the crate.
spent: ‘&eSpent &a%price% &eon this crate.’
# Goes to the crate owner when player opens it via price.
# %player% – Player who opened a crate made by whose seeing this message.
# %price% – Amount of the money %player% spent. Player whose seeing this message earned this amount of money.
notification: ‘&b%player% &ebought your crate for &a%price%&e!’
# Says what player got from the crate.
# IMPORTANT: Always put an ‘&f’ before and after ‘%item%’. DO NOT FORGET THIS.
# %item% – Name of the item player got. Shows the entire item tooltip when hovered.
# %count% – Amount of the item.
done: ‘&aYou got &f[&f%item%&f] x%count% &afrom the crate!’
# Lines of the crate hologram.
hologram:
# First line.
# %player% – Player who owns the crate.
1: ‘&e%player%”s Crate’
# Second line.
# %price% – Price of the crate.
2: ‘&ePrice: &a%price%’
# Appears at second line when the crate is in ‘KEY’ mode.
2k: ‘&6Key Required’
# Appears at second line when the crate is in ‘BOTH_KEY_PRICE’ mode.
# %price% – Price of the crate
2kp: ‘&6Use Key &d/ &ePrice: &a%price%’
# Appears at seconds line when the crate is in ‘ACCESSOR_ONLY’ mode.
2a: ‘&6Accessor Only’
# Third line.
3: ‘&7Right-Click to Open’
# Fourth line.
4: ‘&7Left-Click to See Items’
# Crate display menu.
crate_display:
# Title of the menu.
title: ‘Crate Display’
# Change text that appears under every item inside crate display menu.
# %change% – Percentage chance of that item to get while opening the crate.
# %count% – Number that shows how many slots are filled with an item exactly like this one.
# %all% – Amount of the filled slots inside the crate.
chance: ‘&eChance&6: &3%&b%chance% &3(&b%count% in %all%&3)’
# Crate open menu.
crate_opening:
# Title of the menu
# %player% – Player whose owner of the crate that is being opened right now.
title: ‘Opening %player%”s Crate!’
# Display of the crate keys.
key:
# Name of the item.
title: ‘&eCrate Key’
# 3 Lined description of the item.
desc:
# First line. Says that this crate opens %player%’s crate.
# %player% – Player who owns the crate that this key belongs to.
1: ‘&6Opens &e%player%”s Crate&6.’
# Second line. Says how much this keys worth.
# %price% – Price of the crate, price of one key as well.
2: ‘&6Worth &a%price% &6per key from the latest price.’
# Third line. Says how to open the crate using this key.
# %player% – Player who owns the crate that this key belongs to.
3: ‘&6Right-Click to &e%player%”s Crate &6with this key to open it!’
“`
### config.yml
“`yaml
open:
# If enabled, a crate owner will get notified when some of his crates got opened.
notification: true
“`
## Support
If you see any bugs at the plugin, have some ideas for it, or just want to talk with me, consider my discord server! It is (probably the best and) the fastest way to reach me out.
GlobalMarket
# GlobalMarket| Support multiple markets | Full configuration
A powerful GUI-based server-wide market plugin that provides players with a convenient interactive mode for item trading.
Languages Supported:
Chinese, English, Korean, French, Russian, Thai, Turkish
#### The language files are located in the /language directory
## Dependencies
– **NBTAPI** NBTAPI
– Optional: Vault, PlayerPoints, NyEconomy
> **Note:**
> – Starting from **v2.7.4**, AyCore is **no longer required** as a dependency.
> – Supports Folia.
#### Plugin data from different versions are incompatible with each other and cannot be easily migrated!
—
## Features
– Global market with multiple creatable markets
– Storage support: MySQL, YAML (Future support: SQLite, PostgreSQL)
– Multilingual support: zh_CN (default), en_US
– Supports Vault, PlayerPoints, NyEconomy
– Shift + Click to remove items from market
– Price limits (max, min)
– Custom economy display name
– Market permissions (on opening)
– Tax system (sell, shout) with custom permissions
– Effective time configuration
– Store warehouse
– Blacklist (by lore, item type)
– Filter by type
– Custom GUI (display item slots, lore, custom model data, sale item slots)
– Buttons support custom commands
– Support previewing items inside Shulker Boxes
—
## Commands
| Command | Description |
|———|————-|
| `/market open [marketId]` | Open the target (or default) market |
| `/market search [marketId] [keywords]` | Search for items in the market |
| `/market box` | View the market storage box |
| `/market show` | View market information |
| `/market reload` | Reload plugin configuration files |
> **Note:** “Short command” is the `short-command` setting in the market configuration.
| Short Command | Description |
|—————|————-|
| `/(short command)` | Open the target market |
| `/(short command) sell ` | Add an item to the market |
—
## Configuration
### `config.yml`
“`yaml
language: “zh_CN”
data-option:
type: MySQL
url: jdbc:mysql://localhost/minecraft?useSSL=false
user: “root”
password: “root”
time-out: 120
pull-notify: true
default-market: “example”
command-help: true
“`
### `market/example.yml`
“`yaml
source_id: “example”
vault-type: “Vault”
permission: “market.example”
display-name: “&cExample Market”
economy-name: “Vault”
price:
min: 1
max: 2000000
extra-price:
DIAMOND: 1000-10000
“props”: 20000-30000
sale-broadcast: true
show-sale-info: true
short-command: “exmarket”
tax:
header: “servermarket.tax.sell”
node:
default: 0.1
vip: 0.05
shout-tax:
header: “servermarket.tax.shout”
node:
default: 0.1
vip: 0.05
simple-date-format: “yyyy/MM/dd HH:mm:ss”
effective_time: 259200
black-list:
type:
– “STONE”
lore:
– “&fDenied Item”
types:
– “all”
– “props”
title: “&8Server Market”
size: 54
sale-item-slots: “0-44″
sale-info:
– ” ”
– “&aSeller: &f%seller%”
– “&aPrice: &f%price%”
– “&aDate: &f%time%”
items:
up:
type: paper
amount: 1
data: 0
name: “&fPrevious Page”
slot: 45
action: up
lore: [ ]
down:
type: paper
amount: 1
data: 0
name: “&fNext Page”
slot: 53
action: down
lore: [ ]
changeType:
type: STRING
amount: 1
data: 0
name: “&bFilter type”
slot: 46
action: “type”
lore:
– “&f”
– “&fCurrentType: &7%saleType%”
store:
type: chest
amount: 1
data: 0
name: “&eStorageBox”
slot: 49
action: store
lore: [ ]
“`
### `types.yml`
“`yaml
default:
all: “All”
none: “NONE”
types:
props:
– “STONE”
– “Custom Name”
“`
### `gui/store.yml`
“`yaml
title: “&8Storage Box”
size: 54
store-item-slots: “0-44”
items:
main:
type: torch
amount: 1
name: “&cBack”
slot: 49
action: market
lore: [ ]
“`
—
Issue for help:https://github.com/chenasyd/Global-Market/issues