Menü aufrufen
Toggle preferences menu
Persönliches Menü aufrufen
Nicht angemeldet
Ihre IP-Adresse wird öffentlich sichtbar sein, wenn Sie Änderungen vornehmen.

Version 0.5.0-SNAPSHOT Modding: Unterschied zwischen den Versionen

Aus Underground Simulator Wiki
Die Seite wurde neu angelegt: „Dies ist eine Seite über die Version 0.5.0-SNAPSHOT. Falls ihr keine Ahnung habt, wie das Modding beim US funktioniert, Modding des Underground Simulator ist DER Guide. ==Worum gehts?== die Version v0.5.0-SNAPSHOT ist ein riesen mega Update, und eine helle Stunde für das Modding des US. Hier wird erklärt, wie das zustande kommt. ==Was gibt es neues?== * ShopItems * ShopActionHandlers * #ShopItemRegistry|Sh…“
 
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Dies ist eine Seite über die [[Version 0.5.0-SNAPSHOT]]. Falls ihr keine Ahnung habt, wie das Modding beim US funktioniert, [[Modding des Underground Simulator]] ist DER Guide.
Dies ist eine Seite über die [[Version 0.5.0-SNAPSHOT]] und [[Version 0.5.0]]. Falls ihr euch mit dem Modding im Underground Simulator nicht auskennt, empfiehlt sich der Guide [[Modding des Underground Simulator]].
==Worum gehts?==
 
die Version v0.5.0-SNAPSHOT ist ein riesen mega Update, und eine helle Stunde für das Modding des US. Hier wird erklärt, wie das zustande kommt.
== Worum geht es? ==
==Was gibt es neues?==
Die Version '''v0.5.0-SNAPSHOT''' ist ein umfangreiches Update und stellt einen wichtigen Meilenstein für das Modding des Underground Simulator dar. Auf dieser Seite wird erklärt, welche Änderungen vorgenommen wurden und wie diese umgesetzt sind.
 
== Was gibt es Neues? ==
* [[#ShopItem|ShopItems]]
* [[#ShopItem|ShopItems]]
* [[#ShopActionHandler|ShopActionHandlers]]
* [[#ShopActionHandler|ShopActionHandler]]
* [[#ShopItemRegistry|ShopItemRegistry]]
* [[#ShopItemRegistry|ShopItemRegistry]]
* [[#ShopV3|Vereinfachung des Shops]]
== Theorie der Modularisierung ==
Die Idee hinter diesem Update ist die Modularisierung des Shopsystems. Das bedeutet, dass der Shop in einzelne, unabhängige Komponenten aufgeteilt wurde.
Ziel dieser Umstrukturierung:
* einfachere Erweiterbarkeit
* bessere Wartbarkeit
* Unterstützung für Modding
Durch diese Struktur können neue Funktionen deutlich einfacher hinzugefügt werden, ohne bestehenden Code stark verändern zu müssen.
= ShopItem =
== Konstruktor ==
=== Parameter ===
* String: ID des Items
* String: Anzeigename des Items
* double: Preis des Items
* String: Aktions-ID (z. B. addFahrer)
* String: Value (frei definierbarer Zusatzwert)
* int: Menge des Items
== Werte & Felder ==
Siehe Konstruktorparameter.
== Getter & Setter ==
* id: getId()
* name: getName()
* price: getPrice(), setPrice(double)
* action: getAction(), setAction(String)
* value: getValue(), setValue(String)
* amount: getAmount(), setAmount(int)
== Erklärung ==
Diese Klasse dient zur Erstellung von ShopItems, die anschließend im ShopItemRegistry registriert werden.
== Andere Methoden ==
---
= ShopActionHandler =
''Interface''
== Methoden ==
'''boolean supports(String action)''' 
Prüft, ob dieser Handler die angegebene Aktion verarbeiten kann. Gibt ''true'' zurück, wenn dies der Fall ist, ansonsten ''false''.
'''void execute(ShopItem si) throws Exception''' 
Führt die Aktion für das übergebene ShopItem aus. Die konkrete Implementierung liegt beim Entwickler (z. B. Hinzufügen zu Firma, Score etc.). Es ist auch möglich, dass keine Aktion erfolgt.
= ShopItemRegistry =
Die '''ShopItemRegistry''' verwaltet alle ShopItems und ShopActionHandler.
Sie ist verantwortlich für:
* Speicherung der Items und Handler
* Weiterleitung von Käufen an passende Handler
== Werte & Felder ==
* handlers: ArrayList<ShopActionHandler>
* items: ArrayList<ShopItem>
* buyed: HashMap<ShopItem, Integer>
* this: ShopItemRegistry
== Getter & Setter ==
* items: getItems()
* handlers: getHandlers()
* this: getInstance()
* buyed: getBuyed()
== Methoden ==
'''register(ShopItem)''' – registriert ein ShopItem 
'''registerHandler(ShopActionHandler)''' – registriert einen Handler 
'''unregister(ShopItem)''' – entfernt ein ShopItem 
'''unregisterHandler(ShopActionHandler)''' – entfernt einen Handler 
'''handleBuy(ShopItem)''' – übergibt das Item an einen passenden Handler 
= ShopV3 =
Die neue Version des Shops wurde stark vereinfacht.
Der ursprüngliche Code (Shop.java) wurde von 102 Zeilen auf 38 Zeilen reduziert. Zwar wurden dafür zusätzliche Klassen eingeführt, jedoch ermöglicht dies eine deutlich bessere Erweiterbarkeit.
Durch die Modularisierung können nun viele neue Features umgesetzt werden, ohne den Hauptcode unnötig zu verkomplizieren.
== Fazit ==
Die Modularisierung macht den Shop übersichtlicher, wartbarer und deutlich einfacher erweiterbar. Sie bildet die Grundlage für zukünftige Features und Modding-Erweiterungen.
Falls ihr Fehler oder Denkfehler im Code findet, meldet euch gerne:
[mailto:info@deepslatesmp.de mir]

Aktuelle Version vom 4. April 2026, 18:30 Uhr

Dies ist eine Seite über die Version 0.5.0-SNAPSHOT und Version 0.5.0. Falls ihr euch mit dem Modding im Underground Simulator nicht auskennt, empfiehlt sich der Guide Modding des Underground Simulator.

Die Version v0.5.0-SNAPSHOT ist ein umfangreiches Update und stellt einen wichtigen Meilenstein für das Modding des Underground Simulator dar. Auf dieser Seite wird erklärt, welche Änderungen vorgenommen wurden und wie diese umgesetzt sind.

Theorie der Modularisierung

Bearbeiten Quelltext bearbeiten

Die Idee hinter diesem Update ist die Modularisierung des Shopsystems. Das bedeutet, dass der Shop in einzelne, unabhängige Komponenten aufgeteilt wurde.

Ziel dieser Umstrukturierung:

  • einfachere Erweiterbarkeit
  • bessere Wartbarkeit
  • Unterstützung für Modding

Durch diese Struktur können neue Funktionen deutlich einfacher hinzugefügt werden, ohne bestehenden Code stark verändern zu müssen.

  • String: ID des Items
  • String: Anzeigename des Items
  • double: Preis des Items
  • String: Aktions-ID (z. B. addFahrer)
  • String: Value (frei definierbarer Zusatzwert)
  • int: Menge des Items

Siehe Konstruktorparameter.

  • id: getId()
  • name: getName()
  • price: getPrice(), setPrice(double)
  • action: getAction(), setAction(String)
  • value: getValue(), setValue(String)
  • amount: getAmount(), setAmount(int)

Diese Klasse dient zur Erstellung von ShopItems, die anschließend im ShopItemRegistry registriert werden.

---

Interface

boolean supports(String action) Prüft, ob dieser Handler die angegebene Aktion verarbeiten kann. Gibt true zurück, wenn dies der Fall ist, ansonsten false.

void execute(ShopItem si) throws Exception Führt die Aktion für das übergebene ShopItem aus. Die konkrete Implementierung liegt beim Entwickler (z. B. Hinzufügen zu Firma, Score etc.). Es ist auch möglich, dass keine Aktion erfolgt.

Die ShopItemRegistry verwaltet alle ShopItems und ShopActionHandler.

Sie ist verantwortlich für:

  • Speicherung der Items und Handler
  • Weiterleitung von Käufen an passende Handler
  • handlers: ArrayList<ShopActionHandler>
  • items: ArrayList<ShopItem>
  • buyed: HashMap<ShopItem, Integer>
  • this: ShopItemRegistry
  • items: getItems()
  • handlers: getHandlers()
  • this: getInstance()
  • buyed: getBuyed()

register(ShopItem) – registriert ein ShopItem registerHandler(ShopActionHandler) – registriert einen Handler unregister(ShopItem) – entfernt ein ShopItem unregisterHandler(ShopActionHandler) – entfernt einen Handler handleBuy(ShopItem) – übergibt das Item an einen passenden Handler

Die neue Version des Shops wurde stark vereinfacht.

Der ursprüngliche Code (Shop.java) wurde von 102 Zeilen auf 38 Zeilen reduziert. Zwar wurden dafür zusätzliche Klassen eingeführt, jedoch ermöglicht dies eine deutlich bessere Erweiterbarkeit.

Durch die Modularisierung können nun viele neue Features umgesetzt werden, ohne den Hauptcode unnötig zu verkomplizieren.

Die Modularisierung macht den Shop übersichtlicher, wartbarer und deutlich einfacher erweiterbar. Sie bildet die Grundlage für zukünftige Features und Modding-Erweiterungen.

Falls ihr Fehler oder Denkfehler im Code findet, meldet euch gerne: mir