SimpleEconomy
A complete economy plugin with 14 languages, ScoreHud integration, offline player support, and a simple API.
version 1.0.0
9 downloads · 0 stars
Published 17 Mar 2026 from NhanAZ-Plugins/SimpleEconomy at 032047330388bb8fabcd8b0c6b7130576da3a08e, after moderator review.
Plugin description
SimpleEconomy
A production-ready economy plugin for PocketMine-MP, powered by SimpleSQL.
Built for server owners who want a working economy in minutes and developers who want an API that doesn't fight them.
Why another economy plugin?
I know BedrockEconomy exists, and it's a great plugin - recommended on Poggit, actively maintained. So why SimpleEconomy?
Short answer: Different philosophy, different strengths.
| SimpleEconomy | BedrockEconomy
---|---|---
Storage | Hybrid SQL + YAML via SimpleSQL | Pure SQL (libasynql)
API complexity | 4 methods. That's it. | Full async ClosureAPI / fluent builders
Setup | Drop-in, works instantly | Requires understanding async patterns
Offline player data | Built-in (temporary sessions) | Requires manual SQL queries
ScoreHud integration | Built-in | Separate plugin required
Multi-language | 14 languages built-in | 4 languages
Transaction events | Cancellable events for third-party control | Custom event system
Target audience | Small-to-medium servers, non-dev admins | Advanced setups, dev-oriented
Why not PR into BedrockEconomy? BedrockEconomy is architecturally pure-SQL. SimpleEconomy's hybrid SQL-YAML approach (via SimpleSQL) is a fundamentally different storage philosophy - this isn't a feature addition, it's a different way of thinking about player data. Both approaches have merit, but they can't coexist in one codebase without compromise.
TL;DR: BedrockEconomy is powerful and flexible. SimpleEconomy is simple and instant. Choose what fits your server.
Features
- 6 commands -
/money,/pay,/setmoney,/addmoney,/reducemoney,/topmoney - Name prefix matching - type
/money nhand it findsNhanAZ - Offline player support - check and modify balances of players who aren't online
- Leaderboard - paginated
/topmoneywith async cache rebuild - 14 languages - English, Vietnamese, Korean, Russian, Spanish, Ukrainian, Chinese, Indonesian, Turkish, French, Portuguese, German, Japanese, Italian
- ScoreHud integration - built-in scoreboard tags, no extra plugin needed
- Transaction events - other plugins can listen to, or even cancel, economy transactions
- Currency formatting -
$1,000,000(default) or$1.5M(compact) - SQLite & MySQL - switch with one line in config
Installation
From Poggit (recommended)
Download the latest .phar from Poggit CI.
Drop it in your server's plugins/ folder. Done.
From source
- Clone this repository
- The plugin requires the SimpleSQL and libasynql virions to be injected (handled automatically by Poggit CI)
Commands
| Command | Description | Permission | Default |
|---|---|---|---|
/money [player] | Check your balance, or someone else's | simpleeconomy.command.money | Everyone |
/pay <player> <amount> | Send money to another player | simpleeconomy.command.pay | Everyone |
/topmoney [page] | View the richest players | simpleeconomy.command.topmoney | Everyone |
/setmoney <player> <amount> | Set a player's balance | simpleeconomy.command.setmoney | OP |
/addmoney <player> <amount> | Add money to a player | simpleeconomy.command.addmoney | OP |
/reducemoney <player> <amount> | Remove money from a player | simpleeconomy.command.reducemoney | OP |
Tip: All commands support name prefix matching. If Steve is online, /pay st 100 works.
Tip: Admin commands (/setmoney, /addmoney, /reducemoney) work on offline players too.
Configuration
After first run, edit plugin_data/SimpleEconomy/config.yml:
# Language (14 supported)
language: "eng"
# Starting balance for new players
default-balance: 1000
# Currency display
currency:
symbol: "$"
formatter: "default" # or "compact" for $1.5K style
# Leaderboard
topmoney-per-page: 10
leaderboard-size: 100
# Database (sqlite or mysql)
database:
type: sqlite
Supported Languages
| Code | Language |
|---|---|
eng | English |
vie | Tiếng Việt |
kor | 한국어 |
rus | Русский |
spa | Español |
ukr | Українська |
zho | 简体中文 |
ind | Bahasa Indonesia |
tur | Türkçe |
fra | Français |
por | Português |
deu | Deutsch |
jpn | 日本語 |
ita | Italiano |
All language files are saved to plugin_data/SimpleEconomy/lang/ - you can edit them freely.
ScoreHud Integration
If ScoreHud is installed, SimpleEconomy automatically provides these scoreboard tags:
| Tag | Example | Description |
|---|---|---|
{simpleeconomy.balance} | $1,000 | Formatted balance |
{simpleeconomy.rank} | 3 | Leaderboard position |
{simpleeconomy.raw} | 1000 | Raw balance number |
No extra plugins or configuration needed. Just add the tags to your ScoreHud config.
For Developers
Want a full working example? Check out SimpleEconomyExample - a complete plugin demonstrating how to use the SimpleEconomy API with real commands and event listeners.
Quick Start - Using the API
use NhanAZ\SimpleEconomy\Main as SimpleEconomy;
// Get the plugin instance
$eco = SimpleEconomy::getInstance();
// Check balance (online players)
$balance = $eco->getMoney("Steve"); // ?int - null if offline
// Modify balance (online players)
$eco->setMoney("Steve", 5000); // bool - false if offline or cancelled
$eco->addMoney("Steve", 500); // bool
$eco->reduceMoney("Steve", 200); // bool - false if insufficient funds
// Format money using the server's configured style
$display = $eco->formatMoney(1500000); // "$1,500,000" or "$1.5M"
That's the entire sync API. 4 methods.
Async API - Offline Players
// Works for BOTH online and offline players
$eco->getMoneyAsync("Steve", function(?int $balance): void {
if ($balance !== null) {
// Steve has played before, balance is $balance
} else {
// Steve has never joined
}
});
Transaction Events
SimpleEconomy fires events that your plugin can listen to:
TransactionSubmitEvent - fired before a transaction executes. Cancellable.
use NhanAZ\SimpleEconomy\event\TransactionSubmitEvent;
use NhanAZ\SimpleEconomy\event\TransactionEvent;
public function onTransaction(TransactionSubmitEvent $event): void {
// Block payments over $10,000
if ($event->type === TransactionEvent::TYPE_PAY && $event->getAmount() > 10000) {
$event->cancel();
}
}
TransactionSuccessEvent - fired after a transaction completes. Read-only.
use NhanAZ\SimpleEconomy\event\TransactionSuccessEvent;
public function onSuccess(TransactionSuccessEvent $event): void {
$this->getLogger()->info("{$event->playerName}: {$event->oldBalance} → {$event->newBalance}");
}
Event Properties
| Property | Type | Description |
|---|---|---|
$event->playerName | string | The player involved |
$event->oldBalance | int | Balance before the transaction |
$event->newBalance | int | Balance after the transaction |
$event->type | string | "set", "add", "reduce", or "pay" |
$event->getAmount() | int | Absolute difference between old and new |
Offline Player Data Access
Installing it
Drop the phar into plugins/ and restart the server. If the API version below does not match your server, the plugin will refuse to load, which is the check working as intended.
Releases
| Version | API | Built |
|---|---|---|
| 1.0.0 | 5.0.0 | 17 Mar 2026 · 110 KB |
SHA-256 of 1.0.0154624fe3661cad207f805edc57c1181a8eac64ddc5fc737fa600f698e4a6f26
Reviewed by a moderator before publishing. Built from NhanAZ-Plugins/SimpleEconomy at 032047330388bb8fabcd8b0c6b7130576da3a08e. Nobody reviews plugin code here: read the source before running it on a server you care about.
Sign in with GitHub to star this plugin or leave a comment.
No comments yet.