Dear Server Owners, thank you for using YuPay! This update brings a host of new features, optimizations, and bug fixes designed to provide you with a more powerful and flexible donation management experience. Below are the detailed changes from version 1.1.1 to 1.2.
✨ New Features
1. Donation Blacklist System
- Administrators can now ban specific players from using the donation feature, with an optional reason.
- Commands:
- /yupay ban <player> [reason] – Ban a player from donating
- /yupay unban <player> – Unban a player
- Banned players attempting to use /pay will receive a warning message, including the reason if provided.
- The database automatically creates the yu_banned_players table; no manual intervention required.
2. Currency Conversion Feature
- Administrators can use the /yupay convert command to convert between Vault currency and PlayerPoints.
- Conversion rates can be set in config.yml (under the conversion-rates section).
- Command format: /yupay convert <player> <source_type(vault/points)> <target_type(vault/points)> <amount>
3. Donation Amount Limits
- Configurable minimum/maximum single donation amounts (pay.min-amount / pay.max-amount, -1 for unlimited).
- Configurable daily cumulative donation limit (pay.max-daily-amount); players exceeding this limit cannot donate further that day.
- Clear warning messages are shown when limits are exceeded.
4. Multiple QR Code Output Modes
- In addition to the original clickable link, now supports:
- Text QR Code: Generates an ASCII-art QR code in chat, suitable for clients that cannot click links (e.g., Bedrock Edition). Can be used via /pay <amount> text.
- Map QR Code: Generates a map item with the QR code placed in the player's inventory (requires ProtocolLib). Can be used via /pay <amount> map.
- Default output mode can be set in config.yml (qrcode.default-output-mode: link / text / map).
5. Order History Query
- Players can use /yupay history [page] to view their own donation records (order ID, amount, status, time).
- Administrators can use /yupay history <player> [page] to view other players' history.
6. More PAPI Placeholders
- %yupay_has_paid_in_<time_milliseconds>% – Whether the player has donated within the specified time (true/false)
- %yupay_recent_amount_gt_<time_milliseconds>_<amount>% – Whether donations within the specified time exceed a threshold (true/false)
- %yupay_pay_methods_count% – Number of available payment channels
- %yupay_pay_methods_list% – List of available payment channel names (comma separated)
- %yupay_is_limited% – Whether the player is currently restricted by the daily limit (true/false)
- %yupay_daily_remaining% – Remaining donation amount for today
7. Customizable Order Subject
- The product name for payment orders can now be customized in config.yml under pay.order-subject, supporting {player} and {amount} variables.
8. Fully Customizable Command Aliases
- All command aliases can now be fully customized in the commands section of config.yml, no longer restricted by plugin.yml. For example, you can change /pay to /donate.
⚙️ Configuration Changes
- New Configuration Options:
- pay.min-amount – Minimum single donation amount (default: 0.01)
- pay.max-amount – Maximum single donation amount (default: -1)
- pay.max-daily-amount – Maximum cumulative daily donation amount (default: -1)
- pay.order-subject – Order subject template
- conversion-rates.vault-to-points / points-to-vault – Currency conversion rates
- qrcode.default-output-mode – Default QR code output mode
- qrcode.text-qr-size / text-black-char – Text QR code parameters
- database.mysql.jdbc-params – Customizable MySQL JDBC parameters
- database.table-names.banned-players – Blacklist table name (default: yu_banned_players)
- Automatic Database Updates: On first startup of version 1.2, the plugin will automatically create the blacklist table and update indexes. It is recommended to back up your database beforehand, but the plugin includes a safe update mechanism.
Command Changes
- New Subcommands for /yupay:
- set <option> <value> – Dynamically modify configuration (e.g., default payment method, economy type, conversion rates)
- ban / unban – Manage the blacklist
- convert – Currency conversion
- history – Order history query
- The /pay command now supports a third parameter to specify output mode:
- /pay 10 – Uses the default mode
- /pay 10 wechat text – Specifies WeChat as the payment method and outputs a text QR code
- All command aliases can be fully customized via the commands section in config.yml.
Permission Changes
The following permission nodes have been added, allowing fine-grained control using plugins like LuckPerms:
Permission Node
Description
Default
yupay.command.pay Allows use of the pay command All players
yupay.command.top Allows viewing the leaderboard All players
yupay.command.total Allows viewing total donation amounts All players
yupay.command.history Allows viewing one's own donation history All players
yupay.reload Allows reloading the configuration OP
yupay.ban Allows managing the blacklist OP
yupay.convert Allows performing currency conversion OP
yupay.admin Includes all OP permissions above OP
yupay.user Includes all basic player permissions All players
Dependency Changes
- New Optional Dependency:
- ProtocolLib – Required for the map QR code feature (can be ignored if not using map mode)
Bug Fixes
- Leaderboard Display Error: After players change their names, the leaderboard no longer shows duplicate entries; it now groups by UUID and uses the latest player name.
- Database Connection Optimization: The connection pool now supports SQLite and allows custom JDBC parameters, improving MySQL stability.
- Message Text Supports More Placeholders: For example, {command} is now available to dynamically display the actual command name, ensuring help messages are correct even after aliases are customized.
⚠️ Important Notes
- Before updating, please back up your configuration files (config.yml and messages.yml). The plugin will automatically preserve your modified settings, but it's better to be safe.
- If using MySQL, it is recommended to set jdbc-params in the configuration for optimal performance (example parameters are provided).
- To use the map QR code mode, you must install ProtocolLib; otherwise, this mode will not work.
- The text QR code mode requires no additional dependencies, but the ASCII art may not display perfectly in all chat fonts. You can adjust text-qr-size and text-black-char for better results.
Thank you again for your support! If you have any questions or suggestions, feel free to join our QQ discussion group: 1080918424.
Wishing your server great success!
—— YuPay Development Team