FS25_lsfmHoseSystem

Dokumentation für das Schlauchsystem im Landwirtschafts-Simulator 25: Stationen, Trailer-Connectoren, Kupplungstypen, Schlauchoptik, Eingaben, Savegame-Verhalten und eine separate Einbauanleitung.

Inhalt

Überblick

Das Modsystem erweitert platzierbare Pumpstationen um einen sichtbaren, fest gefärbten GIANTS-Connection-Hose-Schlauch. Der Schlauch wird an vorbereitete Connector-Nodes von Trailern gekoppelt und kann je nach Pumprichtung Flüssigkeiten von der Station in den Trailer oder vom Trailer zurück in die Station bewegen.

Aktueller Standard:
Trailer und Stationen bekommen feste Connector-Nodes direkt in i3d/XML. Zusätzlich gibt es einen separaten Ingame-Konfigurator, mit dem geeignete Fahrzeuge ohne vorbereitete Connector-Nodes nachgerüstet werden können.
Wichtig:
Die Station triggert die Schlauchlogik. Fahrzeuge liefern nur die vorbereiteten oder per Konfigurator gespeicherten Anschlusspositionen, Visuals, Kupplungstypen und FillUnit-Zuordnung.

Aufbau des Mods

Die aktive Logik liegt im Placeable-Script:

scripts/placeables/PlaceableLSFMHoseStation.lua

Fahrzeuganschlüsse, Runtime-Konfiguration und Schlauchlogik liegen in:

scripts/vehicles/LSFMHoseTrailerConnection.lua
scripts/vehicles/LSFMHoseConnectorConfigurator.lua
scripts/placeables/PlaceableLSFMHoseStation.lua
scripts/shared/LSFMHoseSystemSettings.lua
settings.xml
gui/LSFMHoseConnectorToolbar.xml
shared/assets/connectors/connectors.xml
shared/assets/connectors/connectors.i3d

Typische Modstruktur:

FS25_lsfmHoseSystem/
├─ modDesc.xml
├─ settings.xml
├─ scripts/
│  ├─ placeables/
│  │  └─ PlaceableLSFMHoseStation.lua
│  ├─ vehicles/
│  │  ├─ LSFMHoseTrailerConnection.lua
│  │  └─ LSFMHoseConnectorConfigurator.lua
│  └─ shared/
│     └─ LSFMHoseSystemSettings.lua
├─ gui/
│  └─ LSFMHoseConnectorToolbar.xml
├─ shared/
│  └─ assets/
│     └─ connectors/
│        ├─ connectors.xml
│        └─ connectors.i3d
├─ placeables/
│  └─ hoseStation/
│     ├─ hoseStation.xml
│     ├─ hoseStation.i3d
│     ├─ hoseStationMini.xml
│     └─ hoseStationMini.i3d
├─ vehicles/
│  └─ *.xml
├─ sounds/
│  └─ hoseAttachDetach.ogg
└─ translations/
   ├─ l10n_de.xml
   └─ l10n_en.xml

modDesc.xml

Die modDesc.xml registriert die Placeable-Spezialisierung, die StoreItems und die Input-Actions. Da dort schnell neue Fahrzeuge hinzukommen, sollte diese Datei nie blind mit einer alten Version überschrieben werden.

Bereich Zweck
specializations Registriert PlaceableLSFMHoseStation für den Placeable-Typ.
storeItems Listet Stationen und fertig vorbereitete Trailer.
actions Enthält Pumprichtung, Trailer-zu-Trailer-Aktionen und den Konfigurationsmodus.
multiplayer supported Multiplayer ist aktiviert. Schlauchstatus, Pumprichtung und selbst montierte Connectoren werden über Server-Events und Fahrzeug-Initialdaten synchronisiert; Dedicated-Server-Tests sollten nach Änderungen gezielt über die Log geprüft werden.

settings.xml

Globale Mod-Einstellungen liegen in settings.xml im Mod-Hauptordner. Diese Datei ist für Werte gedacht, die nicht jedes Mal im Script hart geändert werden sollen.

<lsfmHoseSystemSettings>
    <debug trailerConnections="false" placeableStations="false"/>

    <transferSpeeds>
        <hoseCoupling type="perrot" loadingLitersPerSecond="500" unloadingLitersPerSecond="500"/>
        <hoseCoupling type="camLock" loadingLitersPerSecond="100" unloadingLitersPerSecond="100"/>
    </transferSpeeds>
</lsfmHoseSystemSettings>
Pfad / Attribut Beschreibung
debug#trailerConnectionsAktiviert Debug-Logging für Trailer-zu-Trailer-Verbindungen und die Fahrzeug-Suchlogik.
debug#placeableStationsAktiviert Debug-Logging für platzierbare Schlauchstationen.
hoseCoupling#typeKupplungstyp, aktuell perrot oder camLock.
loadingLitersPerSecondGeschwindigkeit beim Befüllen des Zielobjekts über das Schlauchsystem.
unloadingLitersPerSecondGeschwindigkeit beim Zurückpumpen bzw. Entladen über das Schlauchsystem.
Die Werte gelten global pro Kupplungssystem. Perrot ist für große Gülle-/Gärrestschläuche vorgesehen, CamLock für kleinere Flüssigkeitssysteme.

Stationsarten

Große Schlauchstation

perrot

Die große Station ist für Gülle- und Gärrest-Szenarien gedacht. Sie nutzt den Kupplungstyp perrot und aktuell die FillTypes LIQUIDMANURE und DIGESTATE.

placeables/hoseStation/hoseStation.xml

Mini-Schlauchstation

camLock

Die Mini-Station ist für dünnere Schläuche gedacht, zum Beispiel Wasser, Milch, Flüssigdünger, Herbizid, Diesel und DEF. Sie nutzt den Kupplungstyp camLock.

placeables/hoseStation/hoseStationMini.xml
Hinweis zur Mini-Station: Der aktuelle Schlauchdurchmesser in der Mini-XML wurde manuell angepasst. Beim Bearbeiten der XML nicht versehentlich giantsHoseDiameter oder die Schlauchoptik auf alte Werte zurücksetzen.

Kupplungstypen

Der Kupplungstyp trennt große Gülleanschlüsse von kleinen CamLock-Anschlüssen. FillTypes verhindern zwar viele falsche Kombinationen, aber nicht jede reale technische Verwechslung. Deshalb sollte der Kupplungstyp zusätzlich sauber gesetzt werden.

Kupplung Einsatz Typische FillTypes
perrot Großer Gülle-/Gärrestschlauch LIQUIDMANURE, DIGESTATE
camLock Dünne Schläuche für Flüssigkeiten WATER, MILK, LIQUIDFERTILIZER, HERBICIDE, DIESEL, DEF

Station-XML Referenz

Die Station wird über den Block <lsfmHoseStation> in der Placeable-XML konfiguriert. Die wichtigsten Attribute sind unten gruppiert.

Beispiel: große Güllestation

<lsfmHoseStation
    activationTrigger="activationTrigger"
    hoseEndTrigger="hoseEndTrigger"
    stationDockNode="stationDockNode"
    hoseStartNode="hoseStartNode"
    hoseRestNode="hoseRestNode"
    hoseConnectorNode="hoseConnector"
    disconnectedHoseVisualNode="disconnectedHoseVisual"
    leverNode="lever"
    leverOpenRotation="0 0 -90"
    searchRadius="30"
    hoseCouplingType="perrot"
    flowProfile="slurryMedium"
    hoseDiameterMm="100"
    maxFlowLitersPerMinute="3500"
    fillTypes="LIQUIDMANURE DIGESTATE"
    useGiantsConnectionHoseVisual="true"
    giantsHoseDiameter="0.14"
    giantsHoseUvScaleMultiplier="0.45" />

Beispiel: Mini-/CamLock-Station

<lsfmHoseStation
    activationTrigger="activationTrigger"
    hoseEndTrigger="hoseEndTrigger"
    stationDockNode="stationDockNode"
    hoseStartNode="hoseStartNode"
    hoseRestNode="hoseRestNode"
    hoseConnectorNode="hoseConnector"
    disconnectedHoseVisualNode="disconnectedHoseVisual"
    leverNode="lever"
    leverOpenRotation="0 -90 0"
    searchRadius="10"
    hoseCouplingType="camLock"
    flowProfile="liquidSmall"
    hoseDiameterMm="75"
    maxFlowLitersPerMinute="1500"
    fillTypes="WATER MILK LIQUIDFERTILIZER HERBICIDE DIESEL DEF"
    useGiantsConnectionHoseVisual="true"
    giantsHoseDiameter="0.08"
    giantsHoseUvScaleMultiplier="1" />

Nodes

Attribut Beschreibung
activationTriggerTriggerbereich, in dem die Station als interaktives Objekt erkannt wird.
hoseEndTriggerTrigger am Schlauchende bzw. Anschlussbereich.
linkedStationNodeReferenznode für die Station, optional für räumliche Berechnungen.
stationDockNodeDock-/Ankerpunkt an der Station.
hoseStartNodeStartpunkt des sichtbaren Schlauchs.
hoseDynamicStartNodeOptionaler dynamischer Startpunkt, falls die Optik getrennt geführt wird.
hoseRestNodeAblageposition, wenn kein Trailer verbunden ist.
disconnectedHoseVisualNodeSichtbarer abgelegter Schlauch, solange nichts angeschlossen ist.
hoseConnectorNodeStationseitiges Anschlussmodell.
connectionReadyFeedbackNodeOptionales Feedback-Visual für passende Verbindung.
connectionInvalidFeedbackNodeOptionales Feedback-Visual für ungültige Verbindung.
leverNodeHebel, der beim Verbinden animiert wird.
directionLoadingNodeOptionales Visual für Pumprichtung Station zu Trailer.
directionUnloadingNodeOptionales Visual für Pumprichtung Trailer zu Station.

Verbindung und Suche

Attribut Standard Beschreibung
searchRadius8Maximaler Suchradius für passende Trailer.
hoseMaxConnectionDistance0Maximal erlaubter Abstand zwischen Station/Schlauch und Connector. 0 nutzt interne Logik.
hoseDisconnectDistance0Explizite Trennentfernung. 0 wird aus anderen Werten abgeleitet.
hoseDisconnectExtraDistance0.25Zusätzliche Toleranz vor automatischer Trennung.
hoseMaxConnectionAngle-Maximaler Winkel zur Verbindung in Grad.
hoseMaxConnectorAngle-Maximaler Winkel am Trailer-Connector in Grad.
hoseUseConnectionCorridortrueAktiviert Korridorprüfung statt nur Kreisprüfung.
hoseConnectionCorridorBaseWidth0.10Basisbreite des Verbindungskorridors.
hoseConnectionCorridorWidthPerMeter0.07Zusätzliche Breite pro Meter Abstand.
hoseConnectionCorridorMaxWidth0.35Maximale Breite des Verbindungskorridors.
requireTrailerConnectorNodestrueNur Trailer mit vorbereiteten Connector-Nodes akzeptieren.

HUD, Richtung und Pumpe

Attribut Standard Beschreibung
showConnectionAssistHudtrueZeigt den Anschluss-Helfer mit Abstand/Richtung.
connectionAssistMaxVehicleDistance25Maximale Fahrzeugdistanz für den Helfer.
connectionAssistMaxPlayerDistance12Maximale Spielerdistanz für den Helfer.
connectionAssistInvertDirectionfalseInvertiert die Richtungshinweise, falls das i3d anders ausgerichtet ist.
flowProfileslurryMediumRealistisches Durchflussprofil: waterSmall, liquidSmall, camlockMedium, slurryMedium, slurryLarge oder slurryProfessional.
hoseDiameterMmProfilwertOptionaler Nenndurchmesser des Schlauchs in Millimetern. Wenn gesetzt, skaliert er den Profil-Durchfluss.
maxFlowLitersPerMinuteProfilwertOptionale obere Pumpenleistung in Litern pro Minute.
hoseFlowRateFactor1Multiplikator für Feintuning der realistischen Durchflussberechnung.
useLegacyLitersPerSecondfalseAktiviert den alten direkten Durchflusswert. Nur damit überschreibt litersPerSecond die Profilberechnung.
litersPerSecond-Legacy-Wert in Litern pro Sekunde. Greift nur mit useLegacyLitersPerSecond="true".
stationModeautoauto, loading oder unloading.
pumpDirectionautoStart-Pumprichtung: auto, loading oder unloading.
showStatusMessagestrueZeigt Meldungen beim Verbinden, Trennen und Umschalten.

Die realistische Durchflussrate wird sowohl beim Befüllen als auch beim Abladen über den Schlauch angewendet. Beim Standard-Abladen über die Fahrzeug-Entladefunktion begrenzt das Script die tatsächlich bewegte Menge nachträglich auf die Schlauchrate. Die aktuell aktiven Überladegeschwindigkeiten können zusätzlich global in settings.xml pro Kupplungstyp getrennt für Laden und Abladen überschrieben werden.

Schlauchoptik

Attribut Standard Beschreibung
dynamicHoseVisualtrueAktiviert dynamische sichtbare Schlauchführung.
hoseShakeWhilePumpingtrueLeichte Bewegung des Schlauchs während des Pumpens.
hoseShakeAmplitude0.018Stärke des Shake-Effekts.
hoseShakeSpeed16Geschwindigkeit des Shake-Effekts.
useGiantsConnectionHoseVisualtrueNutzt GIANTS Connection Hose statt einfacher Ersatzoptik.
giantsHoseTypeTOOL_CONNECTOR_TOP_RIGHTGIANTS-Hose-Template/Typ.
giantsHoseMaterialRUBBERMaterialtyp der GIANTS-Hose.
giantsHoseBrandColorSystemfarbeOptionaler XML-Farbwert als RGB-Vektor. Ohne Override nutzt Perrot Schwarz und CamLock Blau.
giantsHoseBrandMaterialTemplateplasticPaintedMaterialtemplate für die Farbgebung.
giantsHoseLength3Grundlänge der GIANTS-Hose.
giantsHoseDiameter0.14Durchmesser des Schlauchs.
giantsHoseUvScaleMultiplier0.45Textur-/Rillen-Skalierung. Höher bedeutet optisch gestrecktere Wiederholung, niedriger engere Rillen.
giantsHoseSagFactor0.35Durchhang des Schlauchs.
giantsHoseExtraLength0Zusätzliche Länge für natürlicheren Durchhang.
giantsHoseMinSag0Mindestdurchhang.
giantsHoseStartStraightening-Geradeführung am Schlauchanfang.
giantsHoseEndStraightening-Geradeführung am Schlauchende.
giantsHoseIsWorldSpacetrueKoordinaten werden in Worldspace verarbeitet.
giantsHoseUseConnectorRotationfalseConnectorrotation für die Schlauchrichtung verwenden.

Hebelanimation

Attribut Beschreibung
leverNodeNode des Hebels.
leverOpenRotationRotation in Grad als Vektor, z.B. 0 0 -90 oder 0 -90 0.
leverOpenRotationZAltes Einzelachsen-Attribut für Z-Rotation. Nur verwenden, wenn kein Vektor nötig ist.
leverAnimationDurationDauer der Hebelbewegung in Sekunden.

Trailer-XML Referenz

Fahrzeuge bekommen einen <lsfmHoseSystem>-Block. Jeder Connector beschreibt einen realen Schlauchanschluss am Fahrzeug. Mehrere Connectoren pro Trailer sind erlaubt, zum Beispiel links und rechts am T-Stück.

Beispiel: Güllefass mit T-Stück links/rechts

<lsfmHoseSystem>
    <connectors>
        <connector node="lsfmHoseConnectorLeft"
                   visualNode="lsfmHoseConnectorLeftVisual"
                   extraVisualNode="distributor"
                   hoseCouplingType="perrot"
                   fillUnitIndex="1"/>

        <connector node="lsfmHoseConnectorRight"
                   visualNode="lsfmHoseConnectorRightVisual"
                   extraVisualNode="distributor"
                   hoseCouplingType="perrot"
                   fillUnitIndex="1"/>
    </connectors>
</lsfmHoseSystem>
Attribut Beschreibung
node TransformGroup am echten Schlauchanschlusspunkt. Diese Node wird für Abstand, Winkel und Schlauchende genutzt.
visualNode Sichtbares Anschlussmodell für diesen Connector. Wird je nach Verbindungszustand geschaltet.
extraVisualNode Zusätzliches gemeinsames Visual, z.B. T-Stück oder Verteiler. Kann von links und rechts gemeinsam verwendet werden.
sharedVisualNode Alias für extraVisualNode.
tPieceVisualNode Alias für extraVisualNode.
hoseCouplingType Kupplungstyp dieses Fahrzeuganschlusses, z.B. perrot oder camLock.
fillUnitIndex FillUnit, die über diesen Anschluss befüllt/entleert wird. Empfohlen, damit Mehrkammerfahrzeuge eindeutig bleiben.

i3dMappings

Alle im XML genannten Nodes müssen in <i3dMappings> vorhanden sein. Ein typisches Mapping sieht so aus:

<i3dMapping id="distributor" node="0>0|8|0" />
<i3dMapping id="lsfmHoseConnectorLeftVisual" node="0>0|8|1" />
<i3dMapping id="lsfmHoseConnectorLeft" node="0>0|8|1|0" />
<i3dMapping id="lsfmHoseConnectorRightVisual" node="0>0|8|2" />
<i3dMapping id="lsfmHoseConnectorRight" node="0>0|8|2|0" />
Die Connector-Node selbst sollte dort sitzen, wo der Schlauch wirklich andocken soll. Das sichtbare Anschlussmodell kann die Connector-Node als Kind enthalten, damit Position und Optik sauber zusammenbleiben.

Freigabe für selbst verbaute Anschlüsse

Der Ingame-Konfigurator wird nicht mehr bei jeder beliebigen FillUnit angeboten. Standardmäßig werden nur passende Flüssigkeits-FillUnits freigegeben. Ein Fahrzeug kann zusätzlich explizit erlaubt oder gesperrt werden.

<lsfmHoseConnectorConfigurator allow="true" />
<lsfmHoseConnectorConfigurator allow="false" />

Alternativ kann die Freigabe auch direkt am HoseSystem-Block stehen:

<lsfmHoseSystem allowConnectorConfiguration="true">
    ...
</lsfmHoseSystem>

Connector-Bibliothek

Die auswählbaren Anschlüsse für den Ingame-Konfigurator liegen in shared/assets/connectors/connectors.xml und greifen auf shared/assets/connectors/connectors.i3d zu. Die Namen der Nodes in der i3d müssen eindeutig sein, damit Connector, Kupplungsteil und Schlauchziel sauber gefunden werden.

Beispiel

<connectors defaultI3dFilename="connectors.i3d">
    <connector name="perrot"
               system="perrot"
               label="Perrot Var. 01"
               nodeName="perrot_var01"
               connectionVisualNodeName="coupling_perrot2"
               connectorNodeName="perrot_var01_couplingNode"
               couplerConnectionNodeName="coupling_perrot2_connectorNode"
               targetNodeName="coupling_perrot2_hoseNode"
               mountedVisualVisibleAfterMount="false" />
</connectors>
Attribut Beschreibung
nameStabile ID des Connector-Typs. Wird im Savegame gespeichert und sollte nachträglich nicht umbenannt werden.
systemLogische Familie, z.B. perrot oder camLock.
labelName in der Werkzeugleiste.
nodeNameHaupt-Visual in der Connector-i3d. Wird beim Positionieren geklont.
connectionVisualNodeNameKupplungsteil/Gegenstück, das erst sichtbar wird, wenn der Schlauch verbunden ist.
connectorNodeNameNode am Fahrzeuganschluss, an der das Kupplungsteil ausgerichtet wird.
couplerConnectionNodeNameNode am Kupplungsteil, die auf den Connector gesetzt wird.
targetNodeNameNode, an der das Schlauchende sitzt. Diese Node bestimmt die tatsächliche Hose-Position.
mountedVisualVisibleAfterMountfalse bei Güllefässern mit bereits vorhandener optischer Anschlussgeometrie; true, wenn der montierte Connector dauerhaft sichtbar bleiben soll.
visualTranslation, visualRotation, visualScaleOptionale lokale Korrektur für geklonte Visuals.
Die Position des Kupplungsteils entsteht nicht durch Verschieben des Meshs allein. Entscheidend ist die Kombination aus connectorNodeName, couplerConnectionNodeName und targetNodeName.

Selbst verbaute Anschlüsse

Fahrzeuge ohne vorbereiteten <lsfmHoseSystem>-Connector können im Spiel nachgerüstet werden, wenn sie eine passende FillUnit besitzen oder per Fahrzeug-XML freigegeben wurden. Die Aktion erscheint als einziger Eintrag in der F1-Hilfe: Schlauchanschluss konfigurieren.

Standard-Freigabe

Ohne XML-Override werden nur diese FillTypes für den Konfigurator akzeptiert:

DIESEL und DEF sind absichtlich nicht im Standardfilter, damit normale Traktoren nicht wegen ihrer Verbrauchs- FillUnits als konfigurierbar erkannt werden.

Ablauf im Spiel

  1. Zu Fuß zum passenden Fahrzeug gehen.
  2. In der F1-Hilfe Schlauchanschluss konfigurieren auslösen.
  3. Der exklusive Konfigurationsmodus startet mit freier Editor-Kamera.
  4. In der Werkzeugleiste rechts den Connector-Typ wählen.
  5. Den Anschluss über die X/Y/Z-Gizmoachsen positionieren und drehen.
  6. Mit Anschluss montieren speichern oder mit Konfiguration abbrechen verwerfen.

Bearbeiten und abbauen

Ist bereits ein selbst verbauter Anschluss vorhanden, öffnet dieselbe F1-Aktion den Bearbeitungsmodus. Die Werkzeugleiste wechselt dann auf Anschluss speichern und zeigt zusätzlich Anschluss abbauen. Beim Abbrechen wird die vorherige Position wiederhergestellt.

Werkzeugleiste

Die Werkzeugleiste basiert auf GIANTS-GUI-Elementen und liegt als eigene XML unter gui/LSFMHoseConnectorToolbar.xml. Während der Konfiguration werden die früheren F1-Aktionen für Montieren, Typwechsel und Abbrechen nicht mehr verwendet; die Bedienung erfolgt über Maus und Toolbar.

FillTypes und Kategorien

Das Script liest sowohl direkte fillTypes als auch fillTypeCategories. Dadurch funktionieren auch Tanks, die ihre erlaubten Inhalte nur über Kategorien wie SLURRYTANK definieren.

Station

<lsfmHoseStation fillTypes="LIQUIDMANURE DIGESTATE" />
<lsfmHoseStation fillTypeCategories="SLURRYTANK" />

Trailer-FillUnit

<fillUnit fillTypeCategories="SLURRYTANK"
          capacity="15000"
          allowAILoading="true" />

Für den regulären Einbau ist die Kombination aus FillType-Prüfung und Kupplungstyp die sauberste Variante:

Bedienung

Aktion Tastatur Gamepad laut modDesc Hinweis
Schlauch verbinden/trennen Über die angezeigte Interaktion Über die angezeigte Interaktion Bei Stationen muss die Station im Interaktionsbereich sein. Bei Trailer-zu-Trailer muss ein passender zweiter Anschluss erkannt werden.
Pumprichtung umschalten Left Alt + K BUTTON_5 BUTTON_6 BUTTON_9 Schaltet zwischen Station/aktivem Trailer zu Ziel und zurück.
Schlauchanschluss konfigurieren Über F1-Hilfe am passenden Fahrzeug Über F1-Hilfe am passenden Fahrzeug Startet den exklusiven Konfigurationsmodus mit Toolbar, Editor-Kamera und Gizmoachsen.

Die manuelle Farbwahl wurde entfernt. Perrot-Schläuche nutzen standardmäßig Schwarz, CamLock-Schläuche standardmäßig Blau.

Werkzeugleiste im Konfigurationsmodus

Extra Einbauanleitung

Diese Anleitung beschreibt den sauberen Einbau einer neuen Station oder eines neuen Trailers in das Schlauchsystem.

A. Neue Station einbauen

  1. i3d vorbereiten: Lege mindestens activationTrigger, hoseEndTrigger, stationDockNode, hoseStartNode, hoseRestNode, hoseConnector und optional disconnectedHoseVisual sowie lever an.
  2. Nodes sichtbar mappen: Trage alle Nodes in den i3dMappings der Station-XML ein. Namen müssen exakt mit den Attributen in <lsfmHoseStation> übereinstimmen.
  3. Kupplung wählen: Große Güllestation mit hoseCouplingType="perrot", dünne Station mit hoseCouplingType="camLock".
  4. FillTypes setzen: Nutze fillTypes oder fillTypeCategories. Bei gemischten Flüssigkeiten vorher prüfen, ob das Szenario im Spiel wirklich sinnvoll ist.
  5. Schlauchoptik einstellen: Setze giantsHoseDiameter, giantsHoseUvScaleMultiplier, Durchhang und Straightening-Werte passend zur Station.
  6. StoreItem ergänzen: Falls die Station neu ist, in der modDesc.xml als StoreItem ergänzen. Die Datei nicht blind überschreiben, weil dort oft neue Fahrzeuge eingetragen werden.

B. Neuen Trailer einbauen

  1. Connector-Position festlegen: Baue die Connectoren direkt in die Trailer-i3d. Bei Heckanschlüssen ist ein T-Stück mit linkem und rechtem Anschluss sinnvoll.
  2. Visuals vorbereiten: Erstelle pro Seite ein eigenes visualNode. Das gemeinsame T-Stück oder der Verteiler kann als extraVisualNode von beiden Seiten genutzt werden.
  3. Connector-Node setzen: Die eigentliche node sitzt dort, wo das Schlauchende andocken soll. Die Ausrichtung sollte zur erwarteten Schlauchrichtung passen, damit Winkelprüfungen sauber arbeiten.
  4. XML-Block einfügen: Füge <lsfmHoseSystem> mit einem oder mehreren <connector>-Einträgen in die Fahrzeug-XML ein.
  5. FillUnit zuordnen: Setze fillUnitIndex auf die passende Tank-FillUnit. Das ist besonders wichtig bei Fahrzeugen mit mehreren Kammern.
  6. Kupplungstyp setzen: Güllefässer verwenden perrot, Universal-/Milch-/Wasser- oder Flüssigdünger-Tanks verwenden je nach Anschluss camLock.
  7. i3dMappings ergänzen: Alle neuen Nodes in <i3dMappings> ergänzen.

C. Sauberes XML-Beispiel für einen Trailer

<lsfmHoseSystem>
    <connectors>
        <connector node="lsfmHoseConnectorLeft"
                   visualNode="lsfmHoseConnectorLeftVisual"
                   extraVisualNode="lsfmHoseConnectorTVisual"
                   hoseCouplingType="perrot"
                   fillUnitIndex="1"/>

        <connector node="lsfmHoseConnectorRight"
                   visualNode="lsfmHoseConnectorRightVisual"
                   extraVisualNode="lsfmHoseConnectorTVisual"
                   hoseCouplingType="perrot"
                   fillUnitIndex="1"/>
    </connectors>
</lsfmHoseSystem>

D. Einbau in einen externen Mod

Wenn ein Trailer in einem anderen Mod liegt, kann dessen XML ebenfalls mit <lsfmHoseSystem> erweitert werden. Entscheidend ist, dass die Connector-Nodes in der i3d dieses Fahrzeugs existieren und die FillUnit/Fülltypprüfung mit der Station kompatibel ist.

Bei externen Mods immer eine Sicherung anlegen, bevor XML oder i3d angepasst werden. Besonders i3d-Dateien nicht automatisiert ersetzen.

Testplan nach Änderungen

  1. Spiel starten und Log auf Lua-Errors prüfen.
  2. Station im Shop kaufen und platzieren.
  3. Passenden Trailer in den Suchbereich fahren.
  4. Prüfen, ob der Anschluss-HUD-Helfer angezeigt wird.
  5. Schlauch verbinden und auf sichtbaren Schlauch, Hebel, T-Stück und Visuals achten.
  6. Station zu Anhänger pumpen und prüfen, ob der Trailer gefüllt wird.
  7. Pumprichtung wechseln und prüfen, ob Anhänger zu Station funktioniert.
  8. Trailer-zu-Trailer verbinden, Pumprichtung wechseln und beide Richtungen testen.
  9. Prüfen, ob unpassende Systeme abgelehnt werden, z.B. perrot an camLock.
  10. Schlauchfarben prüfen: Perrot schwarz, CamLock blau.
  11. settings.xml-Geschwindigkeiten testweise ändern und prüfen, ob Laden/Abladen pro Kupplungssystem angepasst wird.
  12. Bei einem geeigneten Fahrzeug ohne festen Connector die Ingame-Konfiguration starten, Anschluss montieren, Savegame neu laden und Verbindung testen.
  13. Im Savegame prüfen, ob lsfmHoseSystem.xml für selbst montierte Anschlüsse geschrieben wird.
  14. Dedicated-Server/MP: selbst montierten Anschluss speichern, Server neu starten, Client neu verbinden und prüfen, ob der Anschluss geladen und sichtbar/benutzbar ist.
  15. Bearbeitungsmodus eines selbst verbauten Anschlusses testen: verschieben, speichern, abbrechen und abbauen.
  16. Bei einem normalen Traktor ohne passenden Flüssigkeits-FillType prüfen, dass Schlauchanschluss konfigurieren nicht erscheint.
  17. Bei einem per XML gesperrten Fahrzeug mit allow="false" prüfen, dass die Konfiguration nicht angeboten wird.
  18. Log erneut auf Fehler, Warnungen und unerwartete Einträge aus dem Schlauchscript prüfen.

Wartung und Regeln

Fehlersuche

Trailer wird nicht erkannt

Schlauchanschluss konfigurieren erscheint nicht

Selbst verbauter Connector verbindet falsch

Selbst verbauter Connector wird nicht gespeichert oder geladen

Schlauch sieht falsch aus

Pumpen funktioniert nur in eine Richtung

Standard-Entladefunktion stört

Debugging

Debug-Logging ist in der Release-Konfiguration abgeschaltet, damit die Log nicht durch Such-, Kompatibilitäts- und Transfermeldungen gefüllt wird. Für gezielte Fehlersuche können die Schalter in settings.xml getrennt aktiviert werden: trailerConnections für Trailer-zu-Trailer und Fahrzeug-Suchlogik, placeableStations für platzierbare Schlauchstationen. Bei Stationen kann zusätzlich debug="true" in der Station-XML genutzt werden.

Savegame-Verhalten

Die manuelle Schlauchfarbwahl ist entfernt. Die festen Standardfarben werden beim Laden aus dem jeweiligen Kupplungssystem abgeleitet: Perrot nutzt Schwarz, CamLock nutzt Blau.

Selbst verbaute Fahrzeuganschlüsse werden weiterhin im Vehicle-Savegameblock mitgeschrieben. Erfasst werden Connector-Typ, FillUnit, lokale Position, Rotation und Montagezustand.

<lsfmTrailerHose>
    <connectorConfigurations>
        <connector couplingType="camlock_var02"
                   fillUnitIndex="1"
                   translation="0 1 -2"
                   rotation="0 0 0"
                   mounted="true" />
    </connectorConfigurations>
</lsfmTrailerHose>

Zusätzlich schreibt der Mod eine eigene Datei im Savegame:

lsfmHoseSystem.xml

Diese Datei ordnet selbst montierte Anschlüsse über die stabile vehicle.uniqueId dem jeweiligen Fahrzeug zu. Das ist vor allem für Dedicated Server wichtig, weil die Runtime-Connectoren dort zuverlässig geladen werden müssen, auch wenn der normale Vehicle-Savepfad nicht ausreicht.

<lsfmHoseSystem>
    <connectorConfigurations>
        <vehicle uniqueId="vehicle-123" filename="...">
            <connector couplingType="camlock_var02"
                       fillUnitIndex="1"
                       translation="0 1 -2"
                       rotation="0 0 0"
                       mounted="true" />
        </vehicle>
    </connectorConfigurations>
</lsfmHoseSystem>
Gespeicherte Runtime-Connectoren werden auch dann geladen, wenn das Fahrzeug nach einem späteren Filterwechsel nicht mehr neu konfigurierbar wäre. Im Multiplayer werden geladene Connectoren zusätzlich über den Fahrzeug-Initialstream an neu verbindende Clients übertragen, damit sie nach Server-Neustart sichtbar und benutzbar sind.

Lokalisierung

Texte für den Anschluss-Helfer und die Bedienung sollten über translations/l10n_de.xml und translations/l10n_en.xml gepflegt werden. Die sichtbaren Texte bleiben neutral, damit sie auch in anderen Modpacks nicht wie ein Fremdkörper wirken.

Wichtige l10n-Keys:

Kurzer Merksatz

Station definiert System, Schlauch und erlaubte Flüssigkeiten. Trailer definiert feste Anschlusspositionen oder gespeicherte Runtime-Anschlüsse, Visuals, Kupplungstyp und FillUnit. Nur wenn Flüssigkeit, Kupplung und Zielnode zusammenpassen, wird verbunden.