Zum Hauptinhalt springen

FreeMinecraftModels Möbelshop

Setze für eine reine Kaufwirtschaft registerCraftingRecipes: false in config.yml und starte neu. Gültige aktivierte Einträge bleiben im Shopkatalog, werden aber aus dem Bukkit-Crafting und dem Spielermenü für herstellbare Items unter /fmm entfernt. Die Einstellung ist standardmäßig true.

FreeMinecraftModels liefert einen optionalen Vault-gestützten Shop, in dem Spieler craftbare Props mit In-Game-Währung kaufen können. Der Shop ist standardmäßig deaktiviert — er registriert sich nur, wenn er explizit aktiviert wurde und ein Vault-Wirtschafts-Provider verfügbar ist.

Schnelle Einrichtung​

  1. Installiere Vault und einen Vault-kompatiblen Wirtschafts-Provider (EssentialsX, CMI usw.).
  2. Starte den Server einmal, damit plugins/FreeMinecraftModels/shop_config.yml erzeugt wird.
  3. Setze enabled: true in shop_config.yml.
  4. Starte den Server neu oder schließe /fmm reload erfolgreich ab; der Shop registriert sich bei der vollständigen Initialisierung.
  5. Führe /fmm shop im Spiel aus, um zu bestätigen, dass das Menü sich öffnet.

Fehlt eine Voraussetzung, bleibt der Shop-Unterbefehl unregistriert. Seine konfigurierbare Deaktivierungsnachricht wird deshalb nicht über diesen Handler verwendet. Ist der Shop aktiviert, fehlt aber Vault oder dessen Wirtschafts-Provider, protokolliert FMM eine konkrete Warnung.

Funktionsweise​

  • Der Shop liest Rezepte aus plugins/FreeMinecraftModels/recipes/.
  • Der Shop listet geladene Rezepte mit isEnabled: true und shopEnabled: true. Rezepte werden als ein Katalog geladen: Ein YAML-Syntaxfehler, zwei aktivierte Rezeptdateien für dieselbe model_id oder ein Rezept, das der Server ablehnt, lässt den gesamten Katalog scheitern, statt nur einen Eintrag zu verwerfen. Prüfe daher nach /fmm reload die Konsole. Die Registrierung erstellt und validiert das Rezept auch bei deaktiviertem Crafting
  • Jeder Eintrag verwendet ein Papieritem mit dem Modellaussehen, sofern verfügbar, einer Preiszeile, einer Kaufaufforderung und der Modell-ID. Käufe liefern das Papieritem zur Modellplatzierung; dieser Pfad erzeugt keine anhand von material: und Verzauberungen definierte Waffe
  • Das Anklicken eines Eintrags ruft PurchaseHandler auf, der den Kontostand des Spielers über Vault prüft, den Preis abbucht und dem Spieler das Platzierungs-Item gibt. Items, die nicht ins Inventar passen, werden zu den Füßen des Spielers fallengelassen.

Berechtigungen​

BerechtigungStandardBeschreibung
freeminecraftmodels.shoptrueErforderlich, um den Shop zu öffnen. Standard ist true, sodass jeder Spieler stöbern kann

Die Berechtigung allein aktiviert den Shop nicht — enabled: true in shop_config.yml und ein funktionierender Wirtschafts-Provider sind weiterhin erforderlich.

shop_config.yml​

Siehe die Konfigurationsseite für die vollständige Schlüsselreferenz. Die zentralen Schlüssel sind:

  • enabled — Haupt-Umschalter (Standard false)
  • defaultPrice — Standard für Rezepte ohne shopPrice; bei null oder negativen Werten wird 100.0 verwendet. Änderungen ersetzen keine bereits gespeicherten Rezeptpreise
  • menuTitle, priceLoreFormat, clickToBuyLoreFormat — visuelles Styling
  • messages.* — fünf anpassbare Feedback-Nachrichten

Alle Nachrichtenstrings unterstützen &-Farbcodes und die in der Konfigurationsreferenz aufgeführten Platzhalter.

Felder pro Rezept​

Jedes Rezept in plugins/FreeMinecraftModels/recipes/<model_id>.yml trägt zwei shop-spezifische Felder:

isEnabled: true
model_id: "wooden_chair"
shape:
- "L L"
- "LLL"
- "L L"
ingredients:
L: OAK_LOG
shopEnabled: true
shopPrice: 250.0
FeldStandardVerhalten
shopEnabledtrueMit false wird das Rezept beim Kauf ausgeblendet. Crafting hängt weiterhin von der Rezeptaktivierung und registerCraftingRecipes ab
shopPricedefaultPrice aus shop_config.ymlVault-Währungskosten, wenn der Spieler auf das Item klickt

Der /fmm craftify-Builder schreibt beim Speichern beide Felder, sodass das Anpassen des Preises nur eine Textbearbeitung der Rezeptdatei gefolgt von /fmm reload ist.

Kauf-Ergebnisse​

Der PurchaseHandler erkennt sieben Ergebnisse. Die ersten fünf werden auf konfigurierbare Nachrichten in shop_config.yml abgebildet; die beiden Nachrichten für fehlgeschlagene Lieferungen sind fest vorgegeben:

ErgebnisWird ausgelöst, wennNachrichtenschlüssel
SUCCESSAbbuchung erfolgreich und Item passt ins Inventarmessages.purchaseSuccess
SUCCESS_WITH_OVERFLOWAbbuchung erfolgreich, aber das Item musste zu den Füßen des Spielers fallengelassen werdenmessages.purchaseSuccess + messages.inventoryFull
INSUFFICIENT_FUNDSSpielerguthaben unter dem Preis, oder der zugrunde liegende Wirtschafts-Provider hat die Abbuchung abgelehntmessages.insufficientFunds
NOT_FOR_SALERezept ist deaktiviert, hat shopEnabled: false oder sein Modell ist nicht geladenmessages.itemNotForSale
SHOP_DISABLEDDie Shopkonfiguration oder der zwischengespeicherte Vault-Hook meldet eine Deaktivierungmessages.shopDisabled
DELIVERY_FAILED_REFUNDEDAbbuchung erfolgreich, Lieferung fehlgeschlagen, und der nicht gelieferte Betrag wurde erstattetFest: The item could not be delivered. The undelivered amount was refunded.
DELIVERY_FAILED_REFUND_PENDINGAbbuchung erfolgreich, Lieferung fehlgeschlagen, und die Erstattung ist gescheitert oder die gelieferte Menge konnte nicht ermittelt werdenFest: The purchase could not be settled. The shop has been disabled; contact an administrator to review your payment.

Verwende endliche, nicht negative shopPrice-Werte. Der Kaufhandler bereinigt sie vor dem Vault-Aufruf nicht. Eine abgelehnte Abbuchungsantwort ergibt INSUFFICIENT_FUNDS, Ausnahmen des Providers während der Abbuchung werden hier jedoch nicht abgefangen. Der Hook speichert seinen Provider bei der Initialisierung und erkennt dessen Entfernung nicht fortlaufend.

Wirft die Lieferung nach der Abbuchung eine Ausnahme, zählt FMM, wie viel vom Kauf im Inventar oder auf dem Boden angekommen ist, und zahlt den Preis für den Rest zurück. Scheitert diese Erstattung oder lässt sich die gelieferte Menge nicht ermitteln, deaktiviert FMM den Shop und protokolliert [FMM Shop] Disabled after unresolved purchase mit der UUID des Spielers und dem zu prüfenden Betrag. Der Shop bleibt deaktiviert, bis du die Zahlung abgeglichen und /fmm reload ausgeführt hast.

Fehlerbehebung​

/fmm shop existiert nicht. Der Shop ist nicht registriert. Verifiziere alle drei Punkte:

  • Vault ist installiert
  • Ein Wirtschafts-Provider ist registriert (führe /balance oder /eco aus, um zu bestätigen, dass einer antwortet)
  • enabled: true in shop_config.yml

Starte dann den Server neu oder schließe /fmm reload ab. Ein vom Importer ausgelöster reiner Inhaltsreload initialisiert weder die Shopkonfiguration neu noch registriert er den Befehl.

Items, die ich erwarte, fehlen im Menü. Öffne die Rezeptdatei in plugins/FreeMinecraftModels/recipes/. Prüfe, dass sowohl isEnabled als auch shopEnabled true sind. Führe nach der Bearbeitung /fmm reload aus.

Spielern wird Geld abgezogen, aber sie erhalten kein Item. Suche nach einem wegen Platzmangels zu den Füßen des Spielers fallengelassenen Item und prüfe die Konsole zum Zeitpunkt des Klicks. Eine abgelehnte Abbuchungsantwort ergibt INSUFFICIENT_FUNDS; eine Ausnahme des Providers während der Abbuchung wird nicht in dieses Ergebnis umgewandelt. Eine fehlgeschlagene Lieferung protokolliert [FMM Shop] Item delivery failed mit der gelieferten Anzahl und der Erstattung. Zeigt die Konsole [FMM Shop] Disabled after unresolved purchase, ist die Erstattung nicht durchgegangen: Begleiche diese Zahlung manuell, bewahre das Konsolenprotokoll und den Transaktionsnachweis des Providers auf und führe dann /fmm reload aus, um den Shop wieder zu aktivieren.