
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.