Skip to content

Placeable Types

Achimobil edited this page Oct 7, 2026 · 1 revision

Production Revamp ships three placeable types of its own. They are needed only for the blocks that go directly under <placeable>: <revampObjectFillLevels>, <revampDisplays> and <revampSpawner>. Everything that goes under <productionPoint> — recipes, storage, weather, animals — works without a special type.

Type Extends the vanilla type Intended for
RevampProductionPoint productionPoint Production points
RevampSilo silo Silos and storage buildings
RevampGreenhouse greenhouse Greenhouses

All three bring the same specializations. Nothing else changes on the placeable: the Revamp types inherit everything from their vanilla counterpart, and an existing production, silo or greenhouse XML keeps working unchanged after switching over.

The greenhouse does not need a specialization of its own: the vanilla type greenhouse already brings the productionPoint specialization itself, so for the displays a greenhouse is a production point like any other.

Why separate types instead of extending the vanilla types: this way the modder decides per placeable whether it gets the additional displays. Placeables of other modders are not touched.

The type name needs the mod prefix

The game registers types from a mod internally as <Modname>.<Typname>. When looking one up, it first tries the name as written and, as a fallback, prefixes it with the mod name of the XML file being read. For a placeable in the Revamp mod itself the short name therefore works; in another mod the fallback points to the wrong mod and finds nothing.

In another mod, the full name is therefore used:

<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">

The 0_ is part of it and not a mistake: it controls the load order and stays that way in the released version as well. This makes the folder name part of the interface — renaming the zip breaks every placeable in another mod that refers to it.

The types are deliberately not registered under the short name as well: that would be a global entry next to the types of all other mods, a second spelling for the same thing, and it would obscure which mod a type comes from. modName.typeName is the engine's convention and known from FS22.

The mod has to be present

The type name comes from Production Revamp. If the mod is missing, the game does not know it and the placeable does not load. There are two ways to handle this, and the choice depends on whether the building may require Revamp:

Required dependency — the building only exists with Revamp, and without Revamp the player should notice that immediately:

<dependencies>
    <dependency>FS25_0_ProductionRevamp</dependency>
</dependencies>

The name is written there without .zip.

Optional — the mod should also run normally without Revamp and then simply not offer the building: in that case the store item does not go into your own modDesc, but is registered by Revamp at runtime. A <dependency> is not needed for this and not wanted. See Connecting Other Mods.

A third way is to ship two variants of the placeable — one with and one without a Revamp type.

Porting from FS22

The three type names have stayed unchanged, so a type="RevampProductionPoint" from an FS22 placeable can stay as it is, as long as the placeable is in the Revamp mod itself. What has changed are the XML blocks inside the placeable, see Displays on the Building and Unloading and Spawners.

Clone this wiki locally