Skip to content

EconomyHelper

ShaneeexD edited this page Feb 18, 2026 · 1 revision

EconomyHelper

Currency and economy support for plugins with balance checks and transaction operations.

Overview

What it does:

  • Manages player currency balances
  • Provides safe add/remove operations with validation
  • Supports balance checks for transactions
  • Integrates with shops, rewards, and costs

When to use:

  • NPC shops and player transactions
  • Quest reward payouts
  • Service costs, fees, and upgrade systems
  • Any gameplay involving currency

Available Methods

getBalance(world, playerEntity)

Gets the current currency balance for a player.

int balance = EconomyHelper.getBalance(world, playerEntity);
PlayerHelper.sendMessage(playerEntity, "Your balance: " + balance + " coins");

addCurrency(world, playerEntity, amount)

Adds currency to a player's balance. Returns true if successful.

boolean success = EconomyHelper.addCurrency(world, playerEntity, 100);
if (success) {
    PlayerHelper.sendMessage(playerEntity, "Received 100 coins!");
    // Log transaction
    WorldHelper.log(world, "Added 100 coins to " + EntityHelper.getName(playerEntity));
} else {
    PlayerHelper.sendMessage(playerEntity, "Failed to add currency.");
}

removeCurrency(world, playerEntity, amount)

Removes currency from a player's balance. Returns true if successful (player has enough).

boolean success = EconomyHelper.removeCurrency(world, playerEntity, 50);
if (success) {
    PlayerHelper.sendMessage(playerEntity, "Spent 50 coins!");
} else {
    PlayerHelper.sendMessage(playerEntity, "Not enough coins!");
}

hasEnough(world, playerEntity, amount)

Checks if a player has enough currency for a transaction without modifying balance.

if (EconomyHelper.hasEnough(world, playerEntity, 25)) {
    PlayerHelper.sendMessage(playerEntity, "Purchase available!");
} else {
    PlayerHelper.sendMessage(playerEntity, "Need 25 coins to purchase this.");
}

transferCurrency(world, fromPlayer, toPlayer, amount)

Transfers currency between players. Returns true if successful.

boolean success = EconomyHelper.transferCurrency(world, playerA, playerB, 10);
if (success) {
    PlayerHelper.sendMessage(playerA, "Sent 10 coins to " + EntityHelper.getName(playerB));
    PlayerHelper.sendMessage(playerB, "Received 10 coins from " + EntityHelper.getName(playerA));
} else {
    PlayerHelper.sendMessage(playerA, "Transfer failed - insufficient funds.");
}

setBalance(world, playerEntity, amount)

Sets a player's balance to a specific amount. Use carefully - this can override balances.

// Reset balance to 0 (admin command)
EconomyHelper.setBalance(world, playerEntity, 0);
PlayerHelper.sendMessage(playerEntity, "Balance reset to 0.");

// Set starting balance for new players
EconomyHelper.setBalance(world, newPlayer, 100);
PlayerHelper.sendMessage(newPlayer, "Welcome! You start with 100 coins.");

getTopBalances(world, count)

Returns the top currency holders in the world.

List<EconomyHelper.PlayerBalance> topPlayers = EconomyHelper.getTopBalances(world, 10);
for (EconomyHelper.PlayerBalance pb : topPlayers) {
    WorldHelper.broadcast(world, pb.playerName + ": " + pb.balance + " coins");
}

EconomyHelper.PlayerBalance

Data class for player balance information.

public class PlayerBalance {
    String playerName;
    UUID playerUUID;
    int balance;
}

Examples

Basic Shop System

// Simple item shop
int itemCost = 25;
String itemId = "Tool_Pickaxe_Stone";

if (EconomyHelper.hasEnough(world, playerEntity, itemCost)) {
    // Remove cost
    EconomyHelper.removeCurrency(world, playerEntity, itemCost);
    
    // Give item
    InventoryHelper.giveItem(world, playerEntity, itemId, 1);
    
    PlayerHelper.sendMessage(playerEntity, "Purchased " + itemId + " for " + itemCost + " coins!");
} else {
    PlayerHelper.sendMessage(playerEntity, "Need " + itemCost + " coins to buy this item.");
}

Quest Rewards

// Give currency reward on quest completion
boolean questCompleted = QuestHelper.completeQuest(world, playerEntity, "kill_skeletons");
if (questCompleted) {
    EconomyHelper.addCurrency(world, playerEntity, 100);
    PlayerHelper.sendMessage(playerEntity, "Quest reward: 100 coins!");
}

Service Fees

// Teleportation service with fee
Vector3d destination = new Vector3d(100, 64, 100);
int teleportCost = 10;

if (EconomyHelper.hasEnough(world, playerEntity, teleportCost)) {
    EconomyHelper.removeCurrency(world, playerEntity, teleportCost);
    EntityHelper.teleport(playerEntity, destination);
    PlayerHelper.sendMessage(playerEntity, "Teleported for " + teleportCost + " coins!");
} else {
    PlayerHelper.sendMessage(playerEntity, "Need " + teleportCost + " coins for teleportation.");
}

Daily Allowance

// Give daily currency allowance
String playerName = EntityHelper.getName(playerEntity);
long lastAllowance = getLastAllowanceTime(playerName); // Your persistence system
long currentTime = WorldHelper.getCurrentTick(world);
long dayTicks = 24000; // Assuming 24000 ticks per day

if (currentTime - lastAllowance >= dayTicks) {
    EconomyHelper.addCurrency(world, playerEntity, 50);
    PlayerHelper.sendMessage(playerEntity, "Daily allowance: 50 coins!");
    setLastAllowanceTime(playerName, currentTime);
} else {
    PlayerHelper.sendMessage(playerEntity, "Daily allowance already collected.");
}

Bank System with Interest

// Simple bank with deposit/withdraw
int depositAmount = 100;
if (EconomyHelper.hasEnough(world, playerEntity, depositAmount)) {
    EconomyHelper.removeCurrency(world, playerEntity, depositAmount);
    addToBank(playerEntity, depositAmount); // Your bank storage
    PlayerHelper.sendMessage(playerEntity, "Deposited " + depositAmount + " coins in bank.");
}

// Withdraw with interest (simplified)
int bankBalance = getBankBalance(playerEntity);
int interest = bankBalance / 10; // 10% interest
int withdrawAmount = bankBalance + interest;

EconomyHelper.addCurrency(world, playerEntity, withdrawAmount);
clearBankBalance(playerEntity);
PlayerHelper.sendMessage(playerEntity, "Withdrew " + withdrawAmount + " coins (+" + interest + " interest)!");

Economy Statistics

// Show server economy stats
List<EconomyHelper.PlayerBalance> topBalances = EconomyHelper.getTopBalances(world, 5);
WorldHelper.broadcast(world, "=== Top 5 Richest Players ===");
for (int i = 0; i < topBalances.size(); i++) {
    EconomyHelper.PlayerBalance pb = topBalances.get(i);
    WorldHelper.broadcast(world, (i+1) + ". " + pb.playerName + ": " + pb.balance + " coins");
}

Clone this wiki locally