MIRAWIKI
ESC
↑ ↓ NavigierenEnter ÖffnenESC Schließen

Economy

Mira bringt eine vollständige Server-Economy mit: Konten, Überweisungen, Admin-Verwaltung und Bestenliste. Chest-Shops und Jobs buchen direkt über diese Konten. Jede Transaktion wird sofort gespeichert und ist gegen gleichzeitige Buchungen abgesichert.

Commands #

Commands8
CommandSyntaxPermissionDefaultBeschreibung
/balance/balance [spieler] (Alias /bal, /money)economy.balancetrueKontostand anzeigen; andere Spieler: economy.balance.others (true, auch offline)
/pay/pay <spieler> <betrag>economy.paytrueÜberweist Geld an einen Online-Spieler
/baltop/baltop [seite] (Alias /balancetop, /moneytop)economy.baltoptrueBestenliste der reichsten Spieler
/eco give/eco give <spieler> <betrag>economy.adminopSchreibt Geld gut (auch offline)
/eco take/eco take <spieler> <betrag>economy.adminopBucht Geld ab
/eco set/eco set <spieler> <betrag>economy.adminopSetzt den Kontostand exakt
/eco reset/eco reset <spieler>economy.adminopSetzt auf das Startguthaben zurück
/eco reload/eco reloadeconomy.adminopLädt Economy-Config und Nachrichten neu (Kontostände werden nicht neu eingelesen)

Tipp: Beträge verstehen Komma und Punkt als Dezimaltrennzeichen sowie die Suffixe k und M: 1.5k = 1500. Ungültige Werte (negativ, NaN, unendlich) werden überall abgelehnt.

/pay <spieler> <betrag> verlangt den exakten Spielernamen. Ein Namensanfang (z. B. Alex für Alexander) wird nicht ergänzt, sondern als "Spieler nicht online" abgelehnt. Spieler im Vanish gelten für alle ohne mod.vanish.see als offline (gleiche Regel wie /msg). Auch /eco give|take|set|reset löst den Namen exakt auf: zuerst ein Online-Spieler mit genau diesem Namen, sonst ein dem Server bekannter Offline-Spieler.

/eco reload lädt nur die Economy-Konfiguration und die Nachrichten neu. Kontostände werden dabei nicht neu eingelesen, weil der laufende Server die Konten führt und die gespeicherten Daten im Hintergrund nachschreibt. Manuelle Änderungen an den gespeicherten Kontoständen greifen deshalb erst nach einem Neustart.

Hinweis: Die Bestenliste ist bis zu 30 Sekunden gecacht; ein frisch per /eco set gesetzter Rekord taucht also nicht sofort in /baltop auf. Rang 1 bis 3 werden mit 🥇/🥈/🥉 hervorgehoben.

Vault: eigene oder fremde Economy #

Mira arbeitet mit Vault zusammen, in beide Richtungen. Der Schalter ist economy.internal in der config.yml:

  • internal: true (Standard): Mira nutzt seine eigene Economy und meldet sie als Vault-Economy an. Andere Plugins (Shops, Quests, Job-Belohnungen) arbeiten dann auf denselben Konten.
  • internal: false: Mira nutzt die Economy eines anderen Plugins über Vault (z. B. EssentialsX). Alle Geld-Funktionen laufen dann darüber. Ohne gefundenes Economy-Plugin bleibt die interne Economy als Fallback aktiv (Warnung im Log). /baltop ist in dem Modus technisch nicht verfügbar.

Eine Änderung von economy.internal greift erst nach einem Neustart. Im Diamant-Modus (economy.mode: diamonds) gilt immer die eigene Economy. Auf Folia lädt das offizielle Vault derzeit nicht, dort bleibt automatisch die interne Economy aktiv.

Fremdplugins, die über Vault 0,00 buchen (oder einen Bruchteil, der auf 0,00 rundet), erhalten eine erfolgreiche Antwort ohne Kontoänderung, wie bei den gängigen Economy-Providern. Negative Beträge bleiben ein Fehler.

Diamantbank statt Jobs-Economy #

Mit economy.mode: diamonds läuft der Server statt mit der Jobs-Economy mit einer Diamantbank: Geld sind echte Diamanten, die man mit /bank einzahlt und wieder abhebt. Der Wechsel braucht einen Neustart.

Commands4
CommandSyntaxPermissionDefaultBeschreibung
/bank/bank (Alias /diamondbank)bank.usetrueBank-Menü: Kontostand, einzahlen (alles, 1, 9, 64, eigene Zahl), abheben (Diamanten oder Blöcke)
/bank deposit/bank deposit [anzahl|all]bank.deposittrueZahlt Diamanten ein; Diamantblöcke zählen 9 und werden nie geteilt
/bank withdraw/bank withdraw <anzahl> [blocks]bank.withdrawtrueZahlt Diamanten oder Diamantblöcke aus; was nicht ins Inventar passt, bleibt auf dem Konto
/bank balance/bank balancebank.usetrueKontostand

So funktioniert es:

  • Alles in Diamanten: Kontostände, /pay, /baltop, Shops, Team-Bank, Teleport-Kosten, Upgrades, Claim-Blöcke, Warps, PlaceholderAPI, Vault und Web-Panel rechnen in Diamanten (zwei Nachkommastellen, z. B. 0,04 Diamanten pro Team-Claim-Block). Abheben geht nur in ganzen Diamanten.
  • Jobs sind aus: /jobs, Job-Quests und Job-Shop gibt es im Diamant-Modus nicht.
  • Getrennt gespeichert: Coin- und Diamant-Kontostände, Team-Banken und Shop-Preise liegen getrennt. Wer zurück auf jobs schaltet, findet alles wie vorher. Diamant-Konten starten bei economy.diamonds.start-balance (Standard 0).
  • Nur echte Diamanten: Umbenannte Diamanten oder welche mit Lore gehen, Custom-Items auf Diamant-Basis (z. B. Nexo) nicht. Im Kreativ- und Zuschauermodus ist Einzahlen gesperrt (bank.bypass.gamemode, Standard false).
  • Preise: Neben jedem Coin-Preis steht ein Diamant-Preis mit der Endung -diamonds (cost → cost-diamonds, cost.commands.rtp → cost-diamonds.commands.rtp, team.levels.3.cost-diamonds, Upgrade-Stufen money-diamonds, Sponsor-Plätze price-diamonds, Claim ...Diamonds). Fehlt einer, gilt der Coin-Preis geteilt durch economy.diamonds.coins-per-diamond (Standard 250), auf ganze Cent aufgerundet (Preise pro Block oder Level ungerundet); dadurch wird nie versehentlich etwas kostenlos. Bei einem Update werden fehlende Diamant-Preise in bestehende Dateien geschrieben, berechnet aus den dort eingestellten Coin-Preisen. Auszahlungen (Verkaufswert von Claim-Blöcken) gibt es nur mit eigenem Diamant-Wert.
  • Shops: Ein Shop, der noch keinen Diamant-Preis hat, handelt im Diamant-Modus nicht ("No price set" auf dem Schild), bis der Besitzer mit /shopedit price einen setzt.
  • Team auflösen: Das Guthaben der Team-Bank geht an den Besitzer (Coins und Diamanten), statt zu verschwinden.
  • Vault: Im Diamant-Modus bietet Mira sich anderen Plugins nur mit economy.diamonds.vault-provider: true als Vault-Economy an. Sonst könnten Vote-, Quest- oder Crate-Plugins abhebbare Diamanten auszahlen.

Achtung: Inventare sind über Welten hinweg geteilt. Erzwingt ein Welt-Shortcut oder world.forced-gamemodes den Kreativmodus, können dort genommene Diamanten in Survival eingezahlt werden; das Plugin warnt dann beim Start.

YAML
economy:
  # jobs = Coins aus Jobs, diamonds = Diamantbank (Neustart nötig)
  mode: diamonds
  diamonds:
    # Kurs für Preise ohne Diamant-Wert: Coin-Preis / Kurs (5000 Coins = 20 Diamanten)
    coins-per-diamond: 250.0
    start-balance: 0.0
    max-balance: 1000000.0
    min-transfer: 0.01
    currency-name: "Diamond"
    currency-name-plural: "Diamonds"
    currency-symbol: "◆"

# modules/team.yml (Beispiel)
team:
  levels:
    3:
      cost: 25000
      cost-diamonds: 100

Konten und Rundung #

Jeder Spieler bekommt beim ersten Betreten automatisch ein Konto mit dem Startguthaben. Abfragen zu Spielern ohne Konto zeigen das Startguthaben an, ohne ein Konto anzulegen. Alle Kontostände werden kaufmännisch auf zwei Nachkommastellen gerundet, damit sich Fließkomma-Fehler nie aufaddieren; dieselbe Rundung nutzt auch das Shop-System. Beträge in /pay und /eco give|take|set werden ebenfalls auf ganze Cent gerundet; ein Betrag, der auf 0,00 rundet, wird als unter dem Mindestbetrag abgelehnt. Sender und Empfänger buchen immer denselben gerundeten Betrag.

Konfiguration (config.yml) #

YAML
economy:
  # jobs = Coins aus Jobs, diamonds = Diamantbank (siehe oben). Neustart nötig.
  mode: jobs
  # true = eigene Economy (und Vault-Provider). false = fremde Economy
  # über Vault nutzen. Wechsel erfordert einen Neustart. Die Diamantbank
  # läuft immer mit der eigenen Economy.
  internal: true
  # Startguthaben jedes neuen Kontos.
  start-balance: 1000.0
  # Währungsname (Singular bei genau 1.0), Plural und Symbol.
  currency-name: "Coin"
  currency-name-plural: "Coins"
  currency-symbol: "⛃"
  # Obergrenze pro Konto und kleinster erlaubter /pay-Betrag.
  max-balance: 1000000000.0
  min-transfer: 0.01
  # Einträge pro /baltop-Seite.
  baltop-entries-per-page: 10

cooldown:
  commands:
    # Sekunden zwischen zwei /pay-Befehlen (verhindert Spam).
    pay: 1

Hinweis: start-balance muss >= 0 sein, max-balance > 0 und mindestens so groß wie start-balance, min-transfer >= 0.01 und baltop-entries-per-page >= 1. Abweichungen werden beim Laden korrigiert und einmalig im Log gemeldet.

Komplette Beispiel-Config #

YAML
economy:
  internal: true
  start-balance: 500.0
  currency-name: "Taler"
  currency-name-plural: "Taler"
  currency-symbol: "$"
  max-balance: 10000000.0
  min-transfer: 1.0
  baltop-entries-per-page: 15

cooldown:
  commands:
    pay: 3