Economy plugin for Minecraft 1.21.x, compatible with Purpur, Paper, Folia, Java 21, with Vault integration.
**Version: 1.1.0**
## Author
Shiyuan
## Features
– 💰 Complete economy system (balance check, transfer, leaderboard)
– 📝 Transaction history tracking (income, expenses, transfers)
– 🔌 Vault economy API support
– 🗄️ SQLite database storage
– 🎨 Colored message display
– ⚡ High performance, compatible with Folia
– 🌍 Multi-language support (Simplified Chinese / English)
## Requirements
– Minecraft 1.21.x
– Java 21+
– Purpur / Paper / Folia
– Vault (optional, for other plugins to access the economy system)
## Installation
1. Download the plugin JAR file
2. Place the JAR file into your server’s `plugins` folder
3. Restart the server
4. Edit `plugins/SyMeans/config.yml` to configure
5. Restart the server or use `/reload` to reload the configuration
# Language setting (zh-Simplified Chinese, en-English)
language: “zh”
# Currency name
currency-name: “Coins”
# Initial balance for new players
initial-balance: 100.0
“`
## Language
The plugin supports multi-language. You can set the language in `config.yml`:
– `zh` – Simplified Chinese (default)
– `en` – English
Language files are located in `plugins/SyMeans/lang/` folder. You can customize the messages by editing `zh.json` or `en.json`.
## Commands
### Player Commands
| Command | Description | Permission |
|———|————-|————|
| `/money` | Check your balance | `symeans.user.money` |
| `/pay ` | Transfer money to another player | `symeans.user.pay` |
| `/moneytop` | View wealth leaderboard (top 10) | `symeans.user.moneytop` |
| `/mhistory` | View recent 10 transaction records | `symeans.user.history` |
### Admin Commands
| Command | Description | Permission |
|———|————-|————|
| `/money ` | Check a specific player’s balance | `symeans.admin.money.others` |
| `/money add ` | Add balance to a player | `symeans.admin.money.manage` |
| `/money clean ` | Set a player’s balance to 0 | `symeans.admin.money.manage` |
| `/mhistoryop ` | View a player’s recent 10 transaction records | `symeans.admin.history` |
## Permissions
### Player Permissions
– `symeans.user.money` – Allow using `/money` to check balance (default: everyone)
– `symeans.user.pay` – Allow using `/pay` to transfer (default: everyone)
– `symeans.user.moneytop` – Allow using `/moneytop` to view leaderboard (default: everyone)
– `symeans.user.history` – Allow using `/mhistory` to view transaction history (default: everyone)
### Admin Permissions
– `symeans.admin.money.others` – Allow checking other players’ balance (default: OP)
– `symeans.admin.money.manage` – Allow managing player economy (default: OP)
– `symeans.admin.history` – Allow viewing other players’ transaction history (default: OP)
– `symeans.admin.*` – All admin permissions (default: OP)
## Database
The plugin uses SQLite database for data storage. The database file is located at `plugins/SyMeans/symeans.db`.
Contains two tables:
– `balances` – Stores player balances
– `transactions` – Stores transaction records
## Changelog
### v1.1.0
– Added multi-language support (Simplified Chinese and English)
– Language can be configured in config.yml
– Customizable language files in `lang/` folder
SyLocation
# SyLocation
A Minecraft Java server plugin for querying player locations, supporting Paper, Purpur, and Folia cores.
– Administrators can view a player’s coordinates and world via commands
– Automatic detection of server core type (Paper/Purpur/Folia)
– Automatic use of asynchronous schedulers on Folia cores to ensure thread safety
## Installation
1. Download `SyLocation-1.0.1.jar`
2. Place the JAR file into the server’s `plugins` folder
3. Restart the server or use the `/reload` command to load the plugin
## Commands
| Command | Description | Permission |
|———|————-|————|
| `/syl ` | View the specified player’s coordinates and world | `sylocation.use` |
## Permissions
| Permission Node | Description | Default |
|—————–|————-|———|
| `sylocation.use` | Allow use of the /syl command | OP |
## Usage Example
“`
/syl Steve
“`
Output:
“`
========== Player Location Info ==========
Player: Steve
World: world
Coordinates: X: 100, Y: 64, Z: -200
==========================================
“`
# What this datapack/mod adds
This datapack/mod will let you block with swords like it was in 1.8 but with all the other 1.9 features. You can explore the world and say hello by waggling your sword at people.
# Note
once added to world it cannot be reversed
# Report bugs here
My Discord Server
– Configuration guide wiki entry
– Create and add a Discord bot to your server
– The bot will need permissions to read and send messages with whatever permission scopes you set up, and in the channels you want to use
## Known Issues
– Under certain circumstances with a proxy, prefix/suffix information is not read correctly, still narrowing down the cause
– Global chat still needs some tweaking and a proper, per-user toggle
– Sponge death messages are a tad off with how the component serializes (eg: `playerName Skeleton was shot by` instead of `playerName was shot by Skeleton`)
– Still need to tweak the pass-through system and get that working properly
– Some implementations fire the shutdown event after the plugin unloads, so the shutdown message doesn’t get sent
– Bukkit 1.6.4 doesn’t have an advancement event
– Bukkit b1.7.3 doesn’t support the following
– proper death/advancement events
– plugin messaging
## Dependencies
– TaterLib – Required on all platforms
– FabricAPI – Required on Fabric
### Optional Dependencies
– LuckPerms – For permissions/prefix/suffix support
## Compatibility Cheatsheet
TaterComms supports: Bukkit, Bungee, Fabric, Forge, Sponge, and Velocity
| Server type | Versions | Jar Name |
|———————|————-|———————————|
| All 1.20 (Sponge11) | 1.20-1.20.2 | `TaterComms-1.20-.jar` |
| All 1.19 (Sponge10) | 1.19-1.19.4 | `TaterComms-1.19-.jar` |
| All 1.18 (Sponge9) | 1.18-1.18.2 | `TaterComms-1.18-.jar` |
| All 1.17 (Sponge9) | 1.17-1.17.1 | `TaterComms-1.17-.jar` |
| All 1.16 (Sponge8) | 1.16-1.16.5 | `TaterComms-1.16-.jar` |
| All 1.15 (Sponge8) | 1.15-1.15.2 | `TaterComms-1.15-.jar` |
| All 1.14 | 1.14-1.14.3 | `TaterComms-1.14-.jar` |
## Commands and Permissions
| Command | Permission | Description |
|———————-|——————————|—————————–|
| `/tatercomms reload` | `tatercomms.admin.reload` | Reload the plugin |
| `/discord` | `tatercomms.command.discord` | Get the Discord invite link |
## Release Notes
SweetTask
# SweetTask
Minecraft Daily/Weekly/Monthly Quest Plugin
> Default configurations are in Chinese. Check localization repository for English or other language.
> And I am sorry about that the wiki is only Chinese available right now. In the future, we may translate it to English.
## Introduction
Want to give players something to do? Use this plugin to assign periodic quests to players!
Three types of quest cycles: daily, weekly, and monthly.
The number of quests can be customized for each permission group in each cycle.
Combine these built-in quest types to create quest configurations,
which are randomly assigned to players.
Custom command rewards are given upon completion.
In addition, you can add more menu configurations to the plugin,
allowing you to freely edit the GUI layout just like a dedicated menu plugin.
Parameters wrapped in `<>` are required; `[]` are optional.
| Command | Description | Permission |
| — | — | — |
| `/task open ` | Open a menu | Defined in menu config |
| `/task open [player]` | Open a menu for another player (requires menu permission) | `sweet.task.open-others` |
| `/task reset ` | Reset progress of a quest for all players | OP/Console |
| `/task refresh ` | Refresh all quests for a player (without counting refresh times) | OP/Console |
| `/task reload database` | Reload database config and reconnect | OP/Console |
| `/task reload` | Reload plugin config (does not reconnect database) | OP/Console |
> Default configurations are in Chinese. Check localization repository for English or other language.
> And I am sorry about that the wiki is only Chinese available right now. In the future, we may translate it to English.
## Introduction
SweetPlayerMarket is a cross-server and database-supported global player market plugin.
Players can list their items on the global market by **selling** or **buying**, allowing other players to purchase or sell their items freely.
Additionally, you can restrict players’ listing behavior, such as banning certain items from being listed, allowing only specific currencies for listing, or charging listing fees.
Leveraging the rich query parameters of the database, this plugin allows you to sort the item list with various conditions. For example, you can sort by `creation time`, `expiration time`, `price`, or `quantity` in either `ascending (smallest to largest)` or `descending (largest to smallest)` order.
This plugin continues to use the highly customizable GUI engine from my PluginBase, allowing you to display the item list in **any custom layout** within the maximum `6*9` slot chest menu!
For more information, please refer to the plugin documentation at MCIO Plugins.
## Features
+ MySQL database support and cross-server compatibility
+ Uses relational database features to filter and sort global market items by conditions
+ Highly flexible GUI configuration – all interfaces support custom layouts, text, click actions, etc.
+ Allows players to view and manage their own listed items
+ Players can list items via **commands** or **GUI**
+ Smooth and user-friendly item listing interface
+ Extensive listing restrictions to prevent players from listing unwanted items
+ Full localization support – almost all plugin text can be customized
+ Supports automatic, conditional, and probabilistic item listing by the system to provide rewards or rare items for players
+ Supports categorizing player-listed items
## Commands
Root command: `/sweetplayermarket`
Aliases: `/playermarket`, `/spm`, `/pm`
Parameters wrapped in `<>` are required; parameters wrapped in `[]` are optional.
Player Commands
| Command | Description | Permission |
| — | — | — |
| `/pm open` | Open the global market main GUI | `sweet.playermarket.open` |
| `/pm me` | View your own listed items | `sweet.playermarket.me` |
| `/pm tags` | Open the category selection menu | `sweet.playermarket.tags` |
| `/pm create [amount-per-item] [total-stock]` | List an item on the global market | `sweet.playermarket.create` |
| `/pm create –menu` | Open the item listing menu | `sweet.playermarket.create` |
Admin Commands
| Command | Description | Permission |
| — | — | — |
| `/pm open [player]` | Open the global market main GUI for yourself or another player | `sweet.playermarket.open.other` |
| `/pm me [player]` | View listed items for yourself or another player | `sweet.playermarket.open.other` |
| `/pm tags [player]` | Open the category menu for yourself or another player | `sweet.playermarket.tags.other` |
| `/pm recalc tags` | Recalculate tags for all items | `sweet.playermarket.recalc` |
| `/pm recalc index` | Rebuild search index for all items | `sweet.playermarket.recalc` |
| `/pm server [player]` | View items listed by the special “Server” account (usually auto-listed) | `sweet.playermarket.server` |
| `/pm auto-deploy ` | Test command for auto-listing functionality | `sweet.playermarket.auto-deploy` |
| `/pm reload assets` | Reload language files; auto-download if missing | OP/Console |
| `/pm reload database` | Reconnect to the database | OP/Console |
| `/pm reload` | Reload plugin configuration | OP/Console |
The `open` command supports these flags:
+ `–type=type` Filter items by type
+ `–currency=type` Filter items by currency
+ `–tag=tag-name` Filter items by tag
The `me` command supports these flags:
+ `–notice` Only show items with `notice_flag`
+ `–only-out-of-stock` Only show expired/sold-out items
The `create` command (both manual and GUI) supports this flag:
+ `–system=custom-name` List items as a system shop (requires `sweet.playermarket.create.system`)
## Permissions
Other available permissions for this plugin:
+ `sweet.playermarket.create.currency.vault` Allow listing items using Vault money
+ `sweet.playermarket.create.currency.playerpoints` Allow listing items using PlayerPoints points
+ `sweet.playermarket.create.currency.mpoints.` Allow listing items using MPoints currency
+ `sweet.playermarket.create.bypass.cost` Bypass listing fees
+ `sweet.playermarket.create.bypass.currency` Bypass currency restrictions
+ `sweet.playermarket.create.bypass.type` Bypass shop type restrictions (sell/buy)
+ `sweet.playermarket.admin` Global market admin permission, currently used to remove other players’ items
SweetMail
# SweetMail
A player-friendly graphical mail system that supports attachments such as in-game items, BC cross-server notifications, and cross-server mail viewing and sending.
> Default configurations are in Chinese. Check localization repository for English or other language.
> And I am sorry about that the wiki is only Chinese available right now. In the future, we may translate it to English.
## Introduction
I have tried numerous free, open-source, and paid mail plugins that support item attachments, but none of them met my expectations.
I also didn’t want to use the mail system built into global market plugins, as they offer too few features.
Therefore, I planned to develop a mail plugin that is user-friendly for players and has relatively powerful functionality.
**Note**: Please read and modify the content of the configuration file before officially putting this plugin into use.
## Version Features
This plugin is built for high versions of Minecraft, and compatibility with lower versions will be maintained as much as possible (planned to support down to `1.8`). Below are the differences between various Minecraft versions:
+ Starting from `1.13`, the flattening update was implemented, deprecating numeric IDs and Data values (commonly known as sub-IDs). If you need to use the sub-ID feature of older versions, add a colon `:` after the ID, e.g., `WOOL:15`. This plugin no longer supports numeric IDs; please use English IDs instead.
+ CustomModelData was added starting from `1.14`. This means the CustomModelData option set in older versions will not work for resource pack model predicates.
+ Starting from `1.19.3`, the Bukkit API added the `Translatable` interface, which allows plugins to obtain the translation key of items, enabling the normal display of original item names. This means older versions will not be able to view the Chinese names of attached items in mail details. For lower versions, please install the prerequisite LangUtils to display the original item names.
The resource pack interface is only available for Paper and its derivative servers of `1.16+`. For specific details, please read the documentation.
## Drafts
Any player can have one and only one draft. Use `/mail draft` to create or edit a draft.
The `recipient`, `title`, `content`, `attachments`, and other elements of the mail can be edited by clicking in the draft interface.
When sending `system mail`, administrators can also set the `sender display name` and configure `broad recipients`, such as:
+ Players who have logged in within 7 days
+ All online players on the current server
+ All online players across the entire server network obtained through the proxy server
and so on…
Currently, drafts do not support cross-server synchronization. If deployed on multiple server regions, each player will have a different draft in each server region.
## Sent Items/Inbox
Players have their own sent items box and inbox, sorted from newest to oldest, with page-turning functionality.
The inbox allows viewing the list of unread mails and one-click collection of attachments from unclaimed mails.
Administrators can use commands to view the sent items and inbox of other players.
## Documentation
For plugin download, usage, and development details, please refer to MCIO Plugins and Github.
SweetLocks
# SweetLocks
A nostalgic recreation of an old-fashion paid iron door plugin.
> Default configurations are in Chinese. Check localization repository for English or other language.
## Introduction
Back when I played on a 1.6 server around the 1.8 era, there was a feature called **Paid Door**.
You simply placed a sign on the block above an iron door:
– First line: `[lock]` (something like that, similar to the `[Private]` lock sign in Lockette)
– Second line: `Vault money price`, e.g. `100`
– Third line: empty
– Fourth line: flag – `I`, `O`, `E`, `NM`, `NP` mean:
– `I` = Allow entry
– `O` = Allow exit
– `E` = Require empty inventory
– `NM` = Require 0 Vault money
– `NP` = Require no potion effects
This creates a paid door. Players pay Vault money to teleport to the other side,
perfect for lottery machines, security gates, etc.
As far as I know, the original paid door plugin has been abandoned for a long time,
so I decided to reimplement and improve it. The logic is actually quite simple.
## Legacy Version Compatibility Note
Versions **below 1.14** only receive **limited support**.
They are more likely to conflict with other plugins, and it is hard to identify which plugin causes the conflict.
If any plugin runs `block.getState().update();` on a sign,
the paid door will stop working.
This is due to Bukkit’s old API.
Older versions only use the deprecated `§` color code for formatting,
which erases text components the plugin uses to store data.
– `sweet.locks.create` — Allow creating paid doors
– `sweet.locks.bypass.tax` — Bypass tax on Vault money collected by the door creator
– `sweet.locks.bypass.distance` — Bypass distance limit for using paid doors (default: within 2.6 blocks)
## Usage
Just write `$lock` (or your custom keyword in config) on the **first line of a sign**.
Once you finish placing the sign, a paid door with price `0 money` and allow entry/exit will be created,
and the edit menu will open.
The creator can **Shift + Right-click** the sign to open the edit menu,
where they can set the price and flags for the door.
When a player **right-clicks** the door, it shows:
“Costs X coins to enter. Hold Shift + Right-click to enter/exit.”
Right-click the sign to view door info.
## Mechanism
All paid door data is saved to the sign block using `item-nbt-api` which embedded into plugin.
Transaction notifications are stored in a local data file and sent/cleared when the player logs in.
– For **1.14+**: Data is stored in the block’s **PersistentDataContainer**.
– For versions **below 1.14**: Data is stored in the `insertion` field of the first sign line.
SweetFlight
# SweetFlight
A Minecraft plugin for timed flight.
> Default configurations are in Chinese. Check localization repository for English or other language.
## Introduction
This plugin can properly limit players’ daily flight time.
– You can set a base daily flight time for players, which will be automatically reset at a specified time every day.
– You can also give players extra flight time via commands, allowing them to redeem more flight time.
Players in different flight groups ([groups.yml]([src/main/resources/groups.ym](https://github.com/MrXiaoM/SweetFlight/blob/main/src/main/resources/groups.yml)l)) have different base daily flight times. Stackable flight time is supported. Using the default configuration as an example:
– The `default` flight group has `5m` flight time.
– The `vip` flight group has `+1h` flight time.
If a player has permissions for both `default` and `vip` groups, their base flight time will be `1 hour and 5 minutes`.
When a player is flying, extra flight time will be consumed first. Only when extra flight time is exhausted will daily base flight time be consumed.
This consumption mechanism prevents players from hoarding excessive extra flight time. Of course, you can modify the flight time consumption priority in the config if needed.
## Compatibility
This plugin is currently compatible with:
– Residence — Supports zone flags. Flight is disabled in zones with `nofly` flag and unlimited flight is enabled in zones with `fly` flag.
– Dominion — Supports zone flags. Flight is disabled in zones without `fly` flag.
Want to add more plugin compatibility? Refer to ResidenceSupport.java and submit a Pull Request to this plugin!
> ⚠️WARNING
>
> The **flight control behavior** in Dominion’s default configuration **breaks** most flight management plugins, **even when the player is not inside a plugin zone**! Please make sure you have properly configured `fly-permission-nodes` in the Dominion config.
>
## Commands
Root command: `/sweetflight`
Aliases: `/sweetfly`, `/sflight`, `/sfly`, `/sf`
Parameters wrapped in `<>` are required; parameters wrapped in `[]` are optional.
| Command | Description | Permission |
|———|————-|————|
| `/sf toggle [player]` | Toggle flight mode for yourself or another player | `sweet.flight.toggle.other` |
| `/sf on [player]` | Enable flight for yourself or another player | `sweet.flight.toggle.other` |
| `/sf off [player]` | Disable flight for yourself or another player | `sweet.flight.toggle.other` |
| `/sf check [player]` | View flight group and available time for yourself or another player | `sweet.flight.check.other` |
| `/sf reset ` | Reset the player’s today base flight time | OP/Console |
| `/sf set
### Time Format Explanation
The time format used in commands is `value + unit`. Available units: `h` (hour), `m` (minute), `s` (second). Examples:
– `1m` – one minute
– `2h3m` – two hours and three minutes
– `4h5m6s` – four hours, five minutes and six seconds
## Placeholders
This plugin registers the following placeholders for PlaceholderAPI:
“`
%sweetflight_standard_time% Player’s daily base flight time (formatted)
%sweetflight_standard_time_seconds% Player’s daily base flight time (seconds)
%sweetflight_status_time% Player’s remaining base flight time (formatted)
%sweetflight_status_time_seconds% Player’s remaining base flight time (seconds)
%sweetflight_extra_time% Player’s remaining extra flight time (formatted)
%sweetflight_extra_time_seconds% Player’s remaining extra flight time (seconds)
%sweetflight_time% Player’s total remaining flight time (formatted)
%sweetflight_time_seconds% Player’s total remaining flight time (seconds)
“`
> Default configurations are in Chinese. Check localization repository for English or other language.
> And I am sorry about that the wiki is only Chinese available right now. In the future, we may translate it to English.
## Introduction
Configure which blocks, when mined in specific worlds, will randomly drop custom items.
You can also restrict by tool type, required enchantments, permissions, and more.
You may set whether Fortune enchantment affects drop amounts, and other advanced options.
You can choose to keep or remove vanilla drops, and make blocks drop vanilla items, MythicMobs items,
or fully configured custom prefabs.
For more details, see the documentation at MCIO Plugins.
## Legacy Version Compatibility Notes
+ For `1.12.2` and below: Enchantments must use Bukkit numeric IDs.
+ For `1.8–1.11.2`: Disabling vanilla drops will prevent block break sounds and particles from playing.
+ For `1.15.2` and below: Any item with Fortune counts toward Fortune level,
rather than only the appropriate tool for the block.