Skip to content

Landmark model (molen/landmark@1) ​

Reusable sign or furniture geometry recipe, with colors, facade appearance and detail levels.

Example ​

json
{
  "format": "molen/landmark@1",
  "id": "sign.grocery",
  "version": 1,
  "title": "GROCERY",
  "generator": "sign",
  "sign": {
    "text": "GROCERY",
    "background": "#315949",
    "foreground": "#f5f0df",
    "mark": "#d7ac59",
    "symbol": "letters",
    "letters": "G"
  },
  "appearance": {
    "wall": "#ccc4b4",
    "accent": "#315949"
  },
  "storefront": {
    "width": 18,
    "sharedWidth": 9
  }
}

JSON Schema ​

json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "format": {
          "type": "string",
          "const": "molen/landmark@1"
        },
        "id": {
          "type": "string",
          "pattern": "^[a-z][a-z0-9_.]*$",
          "description": "Stable builtin model name, such as sign.burger_restaurant."
        },
        "version": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        "title": {
          "type": "string",
          "minLength": 1
        },
        "generator": {
          "type": "string",
          "const": "sign"
        },
        "sign": {
          "type": "object",
          "properties": {
            "text": {
              "type": "string",
              "minLength": 1,
              "maxLength": 40
            },
            "background": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "foreground": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "mark": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "symbol": {
              "type": "string",
              "enum": [
                "arches",
                "spark",
                "disc",
                "target",
                "cross",
                "letters",
                "cup",
                "tag",
                "roofline",
                "star",
                "burger",
                "bell",
                "bucket",
                "domino"
              ]
            },
            "letters": {
              "type": "string",
              "maxLength": 3
            }
          },
          "required": [
            "text",
            "background",
            "foreground",
            "mark",
            "symbol"
          ],
          "additionalProperties": false
        },
        "appearance": {
          "type": "object",
          "properties": {
            "wall": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            },
            "accent": {
              "type": "string",
              "pattern": "^#[0-9a-fA-F]{6}$"
            }
          },
          "required": [
            "wall",
            "accent"
          ],
          "additionalProperties": false
        },
        "storefront": {
          "type": "object",
          "properties": {
            "width": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 100
            },
            "sharedWidth": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 100
            },
            "style": {
              "description": "Preferred architectural style for a directly identified low-rise host, when the active pack includes it. Tenants never select the host style.",
              "type": "string",
              "pattern": "^[a-z][a-z0-9_.]*$"
            }
          },
          "required": [
            "width",
            "sharedWidth"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "format",
        "id",
        "version",
        "title",
        "generator",
        "sign",
        "appearance",
        "storefront"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "format": {
          "type": "string",
          "const": "molen/landmark@1"
        },
        "id": {
          "type": "string",
          "pattern": "^[a-z][a-z0-9_.]*$",
          "description": "Stable builtin model name, such as sign.burger_restaurant."
        },
        "version": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        "title": {
          "type": "string",
          "minLength": 1
        },
        "generator": {
          "type": "string",
          "const": "boxes"
        },
        "parts": {
          "minItems": 1,
          "maxItems": 256,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "center": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "number"
                  }
                ],
                "items": false,
                "minItems": 3,
                "maxItems": 3
              },
              "size": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "number",
                    "exclusiveMinimum": 0
                  },
                  {
                    "type": "number",
                    "exclusiveMinimum": 0
                  },
                  {
                    "type": "number",
                    "exclusiveMinimum": 0
                  }
                ],
                "items": false,
                "minItems": 3,
                "maxItems": 3
              },
              "color": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "yaw": {
                "type": "number"
              },
              "tiers": {
                "minItems": 1,
                "maxItems": 3,
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "number",
                      "const": 0
                    },
                    {
                      "type": "number",
                      "const": 1
                    },
                    {
                      "type": "number",
                      "const": 2
                    }
                  ]
                }
              }
            },
            "required": [
              "center",
              "size",
              "color"
            ],
            "additionalProperties": false
          },
          "description": "Ordered metric box parts; omitted tiers means all three detail levels."
        }
      },
      "required": [
        "format",
        "id",
        "version",
        "title",
        "generator",
        "parts"
      ],
      "additionalProperties": false
    }
  ]
}

37 guides · 36 schema formats · 41 API entry points · 10 samples. API, CLI and schema pages are generated from the shipped build.