forked from Build-9/Hytale-Example-Project
-
Notifications
You must be signed in to change notification settings - Fork 2
EconomyHelper
ShaneeexD edited this page Feb 18, 2026
·
1 revision
Currency and economy support for plugins with balance checks and transaction operations.
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
Gets the current currency balance for a player.
int balance = EconomyHelper.getBalance(world, playerEntity);
PlayerHelper.sendMessage(playerEntity, "Your balance: " + balance + " coins");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.");
}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!");
}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.");
}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.");
}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.");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");
}Data class for player balance information.
public class PlayerBalance {
String playerName;
UUID playerUUID;
int balance;
}// 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.");
}// 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!");
}// 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.");
}// 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.");
}// 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)!");// 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");
}