Repository navigation
Placeable Typen
Production Revamp bringt drei eigene Placeable-Typen mit. Gebraucht werden sie nur für die Blöcke, die direkt unter <placeable> stehen: <revampObjectFillLevels>, <revampDisplays> und <revampSpawner>. Alles, was unter <productionPoint> steht — Rezepte, Lager, Wetter, Tiere — funktioniert ohne besonderen Typ.
| Typ | Erweitert den Vanilla-Typ | Gedacht für |
|---|---|---|
RevampProductionPoint |
productionPoint |
Produktionsstätten |
RevampSilo |
silo |
Silos und Lagergebäude |
RevampGreenhouse |
greenhouse |
Gewächshäuser |
Alle drei bringen dieselben Spezialisierungen mit. Sonst ändert sich an der Placeable nichts: die Revamp-Typen erben alles von ihrem Vanilla-Gegenstück, eine bestehende Produktions-, Silo- oder Gewächshaus-XML läuft nach dem Umstellen unverändert weiter.
Das Gewächshaus braucht dabei keine eigene Spezialisierung: der Vanilla-Typ greenhouse bringt die productionPoint-Spezialisierung selbst mit, für die Anzeigen ist ein Gewächshaus also eine Produktionsstätte wie jede andere.
Warum eigene Typen statt einer Erweiterung der Vanilla-Typen: so entscheidet der Modder pro Placeable, ob sie die Zusatzanzeigen bekommt. Placeables anderer Modder werden nicht angefasst.
Das Spiel registriert Typen aus einem Mod intern als <Modname>.<Typname>. Beim Nachschlagen probiert es zuerst den geschriebenen Namen und hängt als Rückfall den Modnamen der lesenden XML-Datei davor. Für eine Placeable im Revamp-Mod selbst geht deshalb der kurze Name; in einem fremden Mod zeigt der Rückfall auf den falschen Mod und findet nichts.
In einem fremden Mod steht also der vollständige Name:
<placeable type="FS25_0_ProductionRevamp.RevampSilo" xsi:noNamespaceSchemaLocation="https://validation.gdn.giants-software.com/xml/fs25/placeable.xsd">
<placeable type="FS25_0_ProductionRevamp.RevampProductionPoint" xsi:noNamespaceSchemaLocation="https://validation.gdn.giants-software.com/xml/fs25/placeable.xsd">
<placeable type="FS25_0_ProductionRevamp.RevampGreenhouse" xsi:noNamespaceSchemaLocation="https://validation.gdn.giants-software.com/xml/fs25/placeable.xsd">Die 0_ gehört dazu und ist kein Versehen: sie steuert die Ladereihenfolge und bleibt auch in der veröffentlichten Fassung so. Damit ist der Ordnername Teil der Schnittstelle — ein Umbenennen der Zip bricht jede fremde Placeable, die darauf verweist.
Die Typen werden bewusst nicht zusätzlich unter dem kurzen Namen angemeldet: das wäre ein globaler Eintrag neben den Typen aller anderen Mods, eine zweite Schreibweise für dieselbe Sache, und es würde verschleiern, aus welchem Mod ein Typ stammt. modName.typeName ist die Konvention der Engine und aus dem LS22 bekannt.
Der Typname kommt aus Production Revamp. Fehlt der Mod, kennt das Spiel ihn nicht und die Placeable lädt nicht. Dafür gibt es zwei Wege, und die Wahl hängt davon ab, ob das Gebäude Revamp voraussetzen darf:
Pflichtabhängigkeit — das Gebäude gibt es nur mit Revamp, und ohne Revamp soll der Spieler das sofort merken:
<dependencies>
<dependency>FS25_0_ProductionRevamp</dependency>
</dependencies>Der Name steht dort ohne .zip.
Optional — der Mod soll auch ohne Revamp normal laufen und das Gebäude dann einfach nicht anbieten: dann gehört das Store-Item nicht in die eigene modDesc, sondern wird von Revamp zur Laufzeit angemeldet. Eine <dependency> ist dabei nicht nötig und nicht erwünscht. Siehe Fremde Mods anbinden.
Als dritter Weg bleibt, zwei Varianten der Placeable auszuliefern — eine mit und eine ohne Revamp-Typ.
Die drei Typnamen sind unverändert geblieben, ein type="RevampProductionPoint" aus einer LS22-Placeable kann also so stehen bleiben, solange die Placeable im Revamp-Mod selbst liegt. Geändert haben sich die XML-Blöcke innerhalb der Placeable, siehe Anzeigen am Gebäude und Auslagern und Spawner.