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

Modding des Underground Simulator: Unterschied zwischen den Versionen

Aus Underground Simulator Wiki
Die Seite wurde neu angelegt: „In diesem Guide geht es um die Erweiterungen des Underground Simulator mit sogenannten Extensions. Java-Vorkenntnisse sind zum teil von Nöten, und ein OpenJDK, am besten 21, wir benutzen für den US 25. Wir fangen am Anfang an. In diesem Guide geht es um die Erweiterungen des Underground Simulator mit sogenannten Extensions. Wir fangen am Anfang an. ==Schritt 1: Projekt aufsetzen == ===Schritt 1.1: Maven=== Für alle Leute, die die Mod mit Apache Mave…“
 
Keine Bearbeitungszusammenfassung
 
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
In diesem Guide geht es um die Erweiterungen des Underground Simulator mit sogenannten Extensions. Java-Vorkenntnisse sind zum teil von Nöten, und ein OpenJDK, am besten 21, wir benutzen für den US 25. Wir fangen am Anfang an.
In diesem Guide geht es um die Erweiterungen des Underground Simulator mit sogenannten Extensions. Java-Vorkenntnisse sind teilweise erforderlich.


Empfohlen wird OpenJDK 21 oder neuer (intern wird aktuell Version 25 genutzt).


In diesem Guide geht es um die Erweiterungen des Underground Simulator mit sogenannten Extensions. Wir fangen am Anfang an.
ℹ️ Dieser Guide gilt nur für Version [[Version 0.5.0-SNAPSHOT|v0.5.0-alpha.dev-SNAPSHOT]] und [[Version 0.5.0|v0.5.0-alpha.dev]]!
 
=Teil 1: Mod aufsetzen=
==Schritt 1: Projekt aufsetzen ==
== Schritt 1: Projekt aufsetzen ==
===Schritt 1.1: Maven===
Für alle Leute, die die Mod mit Apache Maven nutzen, haben ein leichtes Leben. Sie geben einfach in ihrem leeren Projektordner Folgendes ein:


=== Schritt 1.1: Maven ===
Für Maven-Nutzer ist der Einstieg besonders einfach. Führt in einem leeren Ordner folgende Befehle aus:
<pre>
<pre>
mvn dependency:get \
mvn dependency:get \
Zeile 23: Zeile 24:
   -DarchetypeVersion=1.0-SNAPSHOT
   -DarchetypeVersion=1.0-SNAPSHOT
</pre>
</pre>
Das war's. Ihr könnt zum nächsten Kapitel fortfahren.
Das war's – ihr könnt direkt mit der Entwicklung (Schritt 3) starten.
===Schritt 1.2: Gradle o.ä.===
=== Schritt 1.2: Gradle oder andere Tools ===
Das ist nicht ganz so einfach, aber nicht wirklich schwer.  
Hier ist etwas mehr Handarbeit nötig. Die grundlegende Projektstruktur sollte so aussehen:
ihr braucht so ein Setup:
<pre>
<pre>
(Modname)/                      ← Root-Ordner des neuen Mods
(Modname)/                      ← Root-Ordner des neuen Mods
├─ pom.xml                    Maven POM für das Mod-Projekt
├─ (Gradle-Dateien)                    Optionale Gradle-Builddateien
├─ mod.json                    ← Konfigurationsdatei der Mod
├─ mod.json                    ← Konfigurationsdatei der Mod
└─ src/
└─ src/
Zeile 38: Zeile 38:
       └─ resources/
       └─ resources/
           └─ config/            ← Optional: zusätzliche Ressourcen/Configs</pre>
           └─ config/            ← Optional: zusätzliche Ressourcen/Configs</pre>
Die pom.xml sieht so aus:
<b>Dependency einbinden</b>
 
''Groovy (Gradle):''
<pre>
implementation 'de.qstudios.underground:underground:v0.5.0-alpha.dev-SNAPSHOT'</pre>
<i>und für Kotlin-Nutzer:</i>
<pre>implementation("de.qstudios.underground:underground:v0.5.0-alpha.dev-SNAPSHOT")</pre>
Alternativ kann das JAR manuell heruntergeladen und dem Classpath hinzugefügt werden. [https://mvn.deepslatesmp.de/repository/maven-public/de/qstudios/underground/underground/v0.5.0-alpha.dev-SNAPSHOT/underground-v0.5.0-alpha.dev-20260331.152507-3.jar hier]
== Schritt 2: mod.json erstellen ==
 
Falls ihr kein Maven nutzt, müsst ihr die Datei selbst erstellen:
<pre>{
    "name": "<Modname>",
    "version": "1.0",
    "author": "<Ihr>",
    "description": "Eine neue Mod für dein Spiel",
    "extension": {
        "where": "(Deprecated, einfach leerlassen)",
        "file": "(Link zur kompilierten Datei)"
    }
}</pre>
Wichtig:
Beim Bauen muss die Main-Class ins Manifest eingetragen werden!
 
== Schritt 3: Entwickeln ==
 
Damit eure Mod funktioniert, muss eure Hauptklasse das Interface implementieren: <b> de.qstudios.underground.mod.Modfile</b>
<pre>
<pre>
<project xmlns="http://maven.apache.org/POM/4.0.0"
public interface Modfile {
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  void activity();
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
 
                            http://maven.apache.org/xsd/maven-4.0.0.xsd">
  void onLogin();
    <modelVersion>4.0.0</modelVersion>
    <groupId>(eure GroupID)</groupId>
    <artifactId>(Euer Modname)</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>


  <repositories>
  void onLaunch();
    <repository>
      <url>https://mvn.deepslatesmp.de/repository/maven-public</url>
      <name>Underground Simulator Repo</name>
      <id>us-repo</id>
    </repository>
  </repositories>
  <dependencies>
    <dependency>
      <artifactId>underground</artifactId>
      <groupId>de.qstudios.underground</groupId>
      <version>v0.5.0-alpha.dev-SNAPSHOT</version>
    </dependency>
  </dependencies>


    <build>
  void onGameStart();
        <plugins>
 
            <plugin>
  void onEnable();
                <groupId>org.apache.maven.plugins</groupId>
}
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
</pre>
</pre>
=== Methoden erklärt ===
*'''activity''' – Wird im Endmenü nach einem Spieltag ausgeführt
*'''onLogin''' – Beim Login des Spielers
*'''onLaunch''' – Beim Start des Simulators (Begrüßung)
*'''onGameStart''' – Beim Start einer Runde
*'''onEnable''' – Wird beim Laden der Mod ausgeführt (z. B. für Shop-Registrierung)
Die Modularisierung erlaubt es nun, viele Dinge dynamisch zu erweitern – früher war z. B. der Shop fest im Code eingebaut, jetzt kann man ihn modden.
Viel Spaß beim Programmieren!
----
=Teil 2: Mod bauen=
== Schritt 4: exportieren & ausprobieren ==
WICHTIG: Main-Class ins Manifest eintragen!
*<b><i>Apache Maven</i></b>:
<pre>mvn clean package</pre>
*<b><i>Gradle</i></b>:
<pre>gradle build</pre>
=== Ohne Build-Tool (manuell) ===
Wenn ihr weder Maven noch Gradle nutzt, könnt ihr eure Mod auch manuell bauen:
<pre>javac -d out src/**/.java && jar cfm mod.jar MANIFEST.MF -C out .</pre>
Beispiel für eine MANIFEST.MF:
<pre>
Main-Class: de.qstudios.underground.Main
</pre>
Anschließend müsst ihr den Pfad zur erzeugten JAR in der mod.json eintragen.
==Schritt 5: fertigstellen und in den Ordner verschieben==
Um es für den Underground Simulator Kompatibel zu machen, müssen wir den Ordner mit dem JAR und dem JSON noch zippen, und dann nach $HOME/FnF-Apps/US/stable/resources/extensions/ verlegen. Bitte überprüft nochmal, dass ihr es so habt, dass direkt im innern der ZIP-Datei das JAR und JSON drin sind, nicht in einem Unterordner.
== Fertig! ==
Jetzt könnt ihr eure Mod im Underground Simulator laden und testen 🚀
==FAQ==
* Bei mir lädt es irgendwie nicht: <b> schau dir nochmal die Tipps an und überprüfe ob du alles richtig gemacht hast.</b>
* Bei mir kommt <i>"Manifest nicht gefunden."</i>: <b> Du hast einen Fehler gemacht, da du kein Manifest in das JAR inkludiert hast. Wie das geht, schau oben.</b>
* Bei mir steht da: <i>Die Klasse (Klasse) implementiert Modfile nicht.</i>: <b>Du hast vergessen, oben in deine Modhauptklasse <i>implements de.qstudios.underground.mod.Modfile </i> reinzuschreiben.</b>
<b><i>Mehr Fragen ohne Antwort? [mailto:info@wiki.deepslatesmp.de schreib mir!]</b></i>

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

In diesem Guide geht es um die Erweiterungen des Underground Simulator mit sogenannten Extensions. Java-Vorkenntnisse sind teilweise erforderlich.

Empfohlen wird OpenJDK 21 oder neuer (intern wird aktuell Version 25 genutzt).

ℹ️ Dieser Guide gilt nur für Version v0.5.0-alpha.dev-SNAPSHOT und v0.5.0-alpha.dev!

Schritt 1: Projekt aufsetzen

Bearbeiten Quelltext bearbeiten

Für Maven-Nutzer ist der Einstieg besonders einfach. Führt in einem leeren Ordner folgende Befehle aus:

mvn dependency:get \
  -Dartifact=de.qstudios:underground-mod-archetype:1.0-SNAPSHOT \
  -DrepoUrl=https://mvn.deepslatesmp.de/repository/maven-snapshots

und dann:

mvn archetype:generate \
  -DarchetypeCatalog=local \
  -DarchetypeGroupId=de.qstudios \
  -DarchetypeArtifactId=underground-mod-archetype \
  -DarchetypeVersion=1.0-SNAPSHOT

Das war's – ihr könnt direkt mit der Entwicklung (Schritt 3) starten.

Schritt 1.2: Gradle oder andere Tools

Bearbeiten Quelltext bearbeiten

Hier ist etwas mehr Handarbeit nötig. Die grundlegende Projektstruktur sollte so aussehen:

(Modname)/                       ← Root-Ordner des neuen Mods
├─ (Gradle-Dateien)                    ← Optionale Gradle-Builddateien
├─ mod.json                    ← Konfigurationsdatei der Mod
└─ src/
   └─ main/
       ├─ java/
       │   └─ (dein Package)   ← Package aus groupId/artifactId
       │       └─ App.java        ← Beispiel-Klassen-Datei
       └─ resources/
           └─ config/             ← Optional: zusätzliche Ressourcen/Configs

Dependency einbinden

Groovy (Gradle):

implementation 'de.qstudios.underground:underground:v0.5.0-alpha.dev-SNAPSHOT'

und für Kotlin-Nutzer:

implementation("de.qstudios.underground:underground:v0.5.0-alpha.dev-SNAPSHOT")

Alternativ kann das JAR manuell heruntergeladen und dem Classpath hinzugefügt werden. hier

Schritt 2: mod.json erstellen

Bearbeiten Quelltext bearbeiten

Falls ihr kein Maven nutzt, müsst ihr die Datei selbst erstellen:

{
    "name": "<Modname>",
    "version": "1.0",
    "author": "<Ihr>",
    "description": "Eine neue Mod für dein Spiel",
    "extension": {
        "where": "(Deprecated, einfach leerlassen)",
        "file": "(Link zur kompilierten Datei)"
    }
}

Wichtig: Beim Bauen muss die Main-Class ins Manifest eingetragen werden!

Damit eure Mod funktioniert, muss eure Hauptklasse das Interface implementieren: de.qstudios.underground.mod.Modfile

public interface Modfile {
   void activity();

   void onLogin();

   void onLaunch();

   void onGameStart();
   
   void onEnable();
}
  • activity – Wird im Endmenü nach einem Spieltag ausgeführt
  • onLogin – Beim Login des Spielers
  • onLaunch – Beim Start des Simulators (Begrüßung)
  • onGameStart – Beim Start einer Runde
  • onEnable – Wird beim Laden der Mod ausgeführt (z. B. für Shop-Registrierung)

Die Modularisierung erlaubt es nun, viele Dinge dynamisch zu erweitern – früher war z. B. der Shop fest im Code eingebaut, jetzt kann man ihn modden. Viel Spaß beim Programmieren!


Schritt 4: exportieren & ausprobieren

Bearbeiten Quelltext bearbeiten

WICHTIG: Main-Class ins Manifest eintragen!

  • Apache Maven:
mvn clean package
  • Gradle:
gradle build

Ohne Build-Tool (manuell)

Bearbeiten Quelltext bearbeiten

Wenn ihr weder Maven noch Gradle nutzt, könnt ihr eure Mod auch manuell bauen:

javac -d out src/**/.java && jar cfm mod.jar MANIFEST.MF -C out .

Beispiel für eine MANIFEST.MF:

Main-Class: de.qstudios.underground.Main

Anschließend müsst ihr den Pfad zur erzeugten JAR in der mod.json eintragen.

Schritt 5: fertigstellen und in den Ordner verschieben

Bearbeiten Quelltext bearbeiten

Um es für den Underground Simulator Kompatibel zu machen, müssen wir den Ordner mit dem JAR und dem JSON noch zippen, und dann nach $HOME/FnF-Apps/US/stable/resources/extensions/ verlegen. Bitte überprüft nochmal, dass ihr es so habt, dass direkt im innern der ZIP-Datei das JAR und JSON drin sind, nicht in einem Unterordner.

Jetzt könnt ihr eure Mod im Underground Simulator laden und testen 🚀

  • Bei mir lädt es irgendwie nicht: schau dir nochmal die Tipps an und überprüfe ob du alles richtig gemacht hast.
  • Bei mir kommt "Manifest nicht gefunden.": Du hast einen Fehler gemacht, da du kein Manifest in das JAR inkludiert hast. Wie das geht, schau oben.
  • Bei mir steht da: Die Klasse (Klasse) implementiert Modfile nicht.: Du hast vergessen, oben in deine Modhauptklasse implements de.qstudios.underground.mod.Modfile reinzuschreiben.

Mehr Fragen ohne Antwort? schreib mir!