Erstelle mir ein vollständiges, funktionierendes Minecraft-Skript namens `invest.sk` für meinen Paper/Spigot Minecraft-SMP-Server.
# 💎 AMETHYSTSMP INVEST SYSTEM
Das System soll ein modernes `/invest`-System sein.
Verwende überall diesen Prefix:
`&b&lAmethystSMP &8»`
Das System muss mit einer Vault-Economy funktionieren.
PlaceholderAPI soll unterstützt werden.
Alle Spielerdaten müssen UUID-basiert und dauerhaft gespeichert werden.
---
# 🔒 GLOBALES INVEST-SYSTEM
Erstelle:
`/investopen`
`/investclose`
Diese Commands dürfen **nur OPs** verwenden.
## /investclose
Setzt das globale Investment-System auf geschlossen.
Wenn ein normaler Spieler danach `/invest` benutzt:
`&b&lAmethystSMP &8» &cDas Investment-System ist momentan geschlossen.`
Das GUI darf sich nicht öffnen.
Bereits vorhandene Investments und angesammeltes Geld dürfen NICHT gelöscht werden.
AutoCollect soll weiterhin funktionieren.
Der Status muss gespeichert werden und Server-Neustarts überleben.
OP-Nachricht:
`&b&lAmethystSMP &8» &aDas Investment-System wurde geschlossen.`
## /investopen
Öffnet das System wieder.
OP-Nachricht:
`&b&lAmethystSMP &8» &aDas Investment-System wurde geöffnet.`
Standardmäßig soll das System geöffnet sein.
Speichere:
`{invest::enabled}`
---
# 💎 /invest
Wenn das System geöffnet ist und ein Spieler `/invest` benutzt, öffnet sich eine **27-Slot-Chest-GUI**.
Das GUI soll modern aussehen.
## GUI-Aufbau
### 🔴 Links
Ein `RED_CONCRETE`.
Name:
`&c&lInvestment löschen`
Lore:
`&7Löscht dein komplettes Investment.`
`&cDu bekommst NICHTS zurück!`
`&7Klicke zum Fortfahren.`
---
### 💎 Mitte
Ein Investment-Item.
Name:
`&b&lDein Investment`
Lore enthält:
`&7Investment: &e$100,000`
`&7Angesammelt: &a$5,000`
`&7Verdienst: &b$1/s`
`&eKlicke zum Abholen`
Wenn kein Investment vorhanden ist:
`&7Investment: &e$0`
`&7Angesammelt: &a$0`
`&7Verdienst: &b$0/s`
Beim Klicken wird das komplette angesammelte Geld abgeholt.
Wichtig:
Das Investment selbst bleibt erhalten.
Beispiel:
Investment = `$1,000,000`
Angesammelt = `$50,000`
Spieler klickt auf das mittlere Item.
→ Spieler bekommt `$50,000`
→ Investment bleibt `$1,000,000`
→ Angesammelt wird `$0`
Die Auszahlung muss gegen Doppelklick und Dupe-Exploits geschützt sein.
---
### 🟢 Rechts
Ein `GREEN_CONCRETE`.
Name:
`&a&lGeld einzahlen`
Lore:
`&7Klicke hier, um Geld einzuzahlen.`
Beim Klicken wird das GUI geschlossen und der Spieler wird aufgefordert, im Chat einen Betrag einzugeben.
Nachricht:
`&b&lAmethystSMP &8» &7Wie viel möchtest du investieren?`
`&8Beispiele: &7100k, 1m, 2.5b, 10t, 5qa, 2qi`
---
# 💰 EINZAHLUNG
Das Mindestinvestment pro Einzahlung beträgt:
`$100,000`
Es gibt **kein maximales Investment**.
Wenn der Spieler weniger als 100k eingibt:
`&b&lAmethystSMP &8» &cDas minimale Investment beträgt &e$100,000&c.`
Wenn der Spieler nicht genug Geld besitzt:
`&b&lAmethystSMP &8» &cDu hast nicht genug Geld.`
Wenn die Eingabe ungültig ist:
`&b&lAmethystSMP &8» &cUngültiger Betrag.`
Bei Erfolg:
`&b&lAmethystSMP &8» &aDu hast &e$100,000 &ainvestiert.`
Das Geld wird über Vault abgezogen.
Wenn bereits ein Investment existiert, wird die neue Einzahlung hinzugefügt.
Beispiel:
Investment:
`$100,000`
Einzahlung:
`$500,000`
Neues Investment:
`$600,000`
---
# 🔢 ZAHLENFORMAT
Unterstütze normale Zahlen und diese Abkürzungen:
`k` = 1.000
`m` = 1.000.000
`b` = 1.000.000.000
`t` = 1.000.000.000.000
`qa` = 1.000.000.000.000.000
`qi` = 1.000.000.000.000.000.000
Beispiele:
`100k` → 100.000
`2.5k` → 2.500
`1m` → 1.000.000
`2.5m` → 2.500.000
`1b` → 1.000.000.000
`2.5b` → 2.500.000.000
`1t` → 1.000.000.000.000
`10qa` → 10.000.000.000.000.000
`2qi` → 2.000.000.000.000.000.000
Auch normale Zahlen müssen funktionieren:
`5000`
`250000`
Groß-/Kleinschreibung der Einheiten soll ignoriert werden.
---
# 📈 VERDIENST – 0,001 % PRO SEKUNDE
Das Investment erzeugt automatisch Geld.
Die Rendite beträgt:
**0,001 % des aktuellen Investments pro Sekunde.**
Formel:
`Investment × 0.001 / 100`
Beispiele:
`$100,000` → `$1/s`
`$1,000,000` → `$10/s`
`$10,000,000` → `$100/s`
`$100,000,000` → `$1,000/s`
Das Geld wird zunächst als **angesammeltes Geld** gespeichert.
Es soll nicht automatisch auf das Economy-Konto gehen, außer AutoCollect ist aktiviert.
---
# 📊 PLACEHOLDERAPI
Erstelle folgende Placeholder:
`%amethyst_invest_amount%`
→ aktuelles Investment als normale Zahl.
`%amethyst_invest_formatted%`
→ formatiertes Investment.
`%amethyst_invest_collected%`
→ angesammeltes Geld als normale Zahl.
`%amethyst_invest_collected_formatted%`
→ formatiertes angesammeltes Geld.
`%amethyst_persek%`
→ Verdienst pro Sekunde als Zahl mit `/s`.
Beispiel:
`100/s`
`%amethyst_persek_formatted%`
→ formatierter Verdienst pro Sekunde.
Beispiele:
`1K/s`
`2.5M/s`
`10B/s`
`1.2T/s`
`5QA/s`
`2QI/s`
Wenn kein Investment vorhanden ist:
`0/s`
Die Placeholder müssen mit TAB, Scoreboards, Chat, Nametags und anderen PlaceholderAPI-kompatiblen Plugins funktionieren.
---
# 🟣 AUTO COLLECT
Wenn ein Spieler die Permission:
`Autocollect.use`
besitzt, soll im `/invest`-GUI zusätzlich eine `ENDER_CHEST` angezeigt werden.
Spieler ohne diese Permission dürfen die Ender Chest nicht sehen und AutoCollect nicht benutzen.
## AutoCollect Item
Name:
`&5&lAutoCollect`
Wenn deaktiviert:
`&7Status: &cINAKTIV`
`&7Klicke zum Aktivieren.`
Wenn aktiviert:
`&7Status: &aAKTIV`
`&7Dein verdientes Geld wird automatisch eingesammelt.`
Beim Klicken wird AutoCollect aktiviert/deaktiviert.
Aktiviert:
`&b&lAmethystSMP &8» &aAutoCollect wurde aktiviert.`
Deaktiviert:
`&b&lAmethystSMP &8» &cAutoCollect wurde deaktiviert.`
Speichere den Status dauerhaft:
`{invest::autocollect::%uuid of player%}`
Standardmäßig:
`false`
---
# 💵 AUTO COLLECT FUNKTION
Wenn AutoCollect aktiviert ist:
Das angesammelte Geld wird automatisch auf das normale Vault-Economy-Konto des Spielers überwiesen.
Beispiel:
Spieler verdient:
`$100/s`
Nach 10 Sekunden:
`$1,000`
AutoCollect ist aktiviert.
→ `$1,000` werden automatisch ausgezahlt.
Danach:
Angesammelt = `$0`
Das Investment bleibt unverändert.
Die Auszahlung muss gegen Dupe-Exploits geschützt sein.
---
# 🔴 INVESTMENT LÖSCHEN
Wenn der Spieler RED_CONCRETE anklickt:
GUI schließen.
NICHT sofort löschen.
Nachricht:
`&b&lAmethystSMP &8» &cACHTUNG!`
`&7Dein gesamtes Investment wird gelöscht.`
`&7Du bekommst dabei &cKEIN Geld zurück.`
`&7Schreibe &econfirm &7zum Löschen.`
`&7Schreibe &ecancel &7zum Abbrechen.`
Wenn `confirm`:
* Investment auf 0
* angesammeltes Geld auf 0
* keine Rückerstattung
Nachricht:
`&b&lAmethystSMP &8» &cDein Investment wurde gelöscht.`
Wenn `cancel`:
* alles bleibt erhalten
Nachricht:
`&b&lAmethystSMP &8» &aDas Löschen wurde abgebrochen.`
`CONFIRM`, `Confirm`, `confirm` usw. sollen funktionieren.
---
# 💾 DATENSPEICHERUNG
Verwende UUID-basierte Variablen, zum Beispiel:
`{invest::%uuid of player%}`
`{invest::collected::%uuid of player%}`
`{invest::autocollect::%uuid of player%}`
`{invest::enabled}`
Alle Daten müssen Server-Neustarts und Skript-Reloads überleben.
---
# ⏱️ ZEITBERECHNUNG
Das System muss die Einnahmen zeitbasiert berechnen.
Speichere einen Zeitstempel für die letzte Berechnung.
Beispiel:
Investment:
`$100,000`
Verdienst:
`$1/s`
Wenn 30 Sekunden vergangen sind:
→ `$30` angesammelt.
Verhindere, dass durch Relogging, Reloads oder Neustarts Geld doppelt berechnet wird.
Wenn möglich, verwende Zeitstempel statt für jeden Spieler einen unnötigen permanenten Timer laufen zu lassen.
---
# 🛡️ GUI-SICHERHEIT
Verhindere:
* Shift-Klick
* Dragging
* Doppelklick
* Item-Dupe
* Herausnehmen von GUI-Items
* GUI-Manipulation
* doppelte Auszahlung
* mehrfaches Klicken zum Duplizieren
* negative Beträge
* ungültige Beträge
* Economy-Dupes
Beim Schließen der GUI dürfen keine Items verloren gehen.
---
# 👑 COMMANDS
Erstelle:
`/invest`
`/investopen`
`/investclose`
`/invest reload`
`/invest reset <player>`
`/invest info <player>`
`/investopen` und `/investclose` nur für OPs.
Admin-Commands nur mit:
`amethyst.invest.admin`
Normale Spieler:
`amethyst.invest`
AutoCollect:
`Autocollect.use`
---
# ⚙️ CONFIG
Erstelle eine übersichtliche Config.
Konfigurierbar sollen sein:
* Mindestinvestment
* Rendite
* GUI-Name
* GUI-Slots
* GUI-Items
* Item-Namen
* Item-Lore
* Sounds
* Messages
* AutoCollect
* Permissions
* Zahlenformat
* Farben
* Prefix
Standardwerte:
Mindestinvestment:
`100000`
Rendite:
`0.001% pro Sekunde`
Maximalinvestment:
`unbegrenzt`
---
# 🔐 SICHERHEIT BEI SEHR GROSSEN ZAHLEN
Da es kein maximales Investment gibt, muss der Code mit möglichst großen Zahlen umgehen können.
Verhindere:
* Overflow
* negative Werte
* falsche Rundungen
* fehlerhafte Formatierung
* negative Rendite
* Geld-Dupes
K/M/B/T/QA/QI müssen korrekt erkannt und formatiert werden.
---
# 📦 AUSGABE
Gib mir:
1. Die komplette fertige `invest.sk`
2. Alle benötigten Plugins
3. Alle benötigten Skript-Addons
4. PlaceholderAPI-Integration
5. Installationsanleitung
6. Alle Commands
7. Alle Permissions
8. Alle Placeholder
9. Erklärung der Config
10. Erklärung des Investment-Systems
11. Erklärung des AutoCollect-Systems
Das Skript muss vollständig sein.
Keine TODOs.
Keine erfundenen Syntax-Befehle.
Keine halbfertigen Funktionen.
Alle Funktionen müssen miteinander funktionieren.
minecraftspigot-java0 views