Skip to content

(95) Contentpacks 1.2.0

Daniel Schmidt edited this page Nov 12, 2023 · 3 revisions

Contentpacksystem v2

Creating a new contentpack

A example pack

Files:
/landofsignals.json

/assets/landofsignals/streckenblock/streckenblock.json
/assets/landofsignals/streckenblock/streckenblock.obj
/assets/landofsignals/streckenblock/[Textures, MTL, a.s.o.]

/assets/landofsignals/formsignal/formsignal.json
/assets/landofsignals/formsignal/formsignal.obj
/assets/landofsignals/formsignal/[Textures, MTL, a.s.o.]

/assets/landofsignals/pedestrianlight/pedestrianlight.json
/assets/landofsignals/pedestrianlight/pedestrianlight.obj
/assets/landofsignals/pedestrianlight/[Textures, MTL, a.s.o.]

/assets/landofsignals/signallever/signallever.json
/assets/landofsignals/signallever/signallever.obj
/assets/landofsignals/signallever/[Textures, MTL, a.s.o.]

Files and/or paths marked as code need to be taken over as is and can't be changed.

Contentpack base

landofsignals.json

{
    "name": "Stellwand: Streckenblock",
    "packversion": "1.1",
    "author" : "SeltixSub aka Danielxs01",
    "addonversion": "2",
    "content": {
        "assets/landofsignals/streckenblock/streckenblock.json": "BLOCKCOMPLEXSIGNAL",
        "assets/landofsignals/formsignal/formsignal.json": "BLOCKCOMPLEXSIGNAL",
        "assets/landofsignals/pedestrianlight/pedestrianlight.json": "BLOCKSIGNAL",
        "assets/landofsignals/signallever/signallever.json": "BLOCKLEVER"
    }
}
Field Description
name The name of your contentpack. Will be used for the IDs saved in each block.
Shouldn't be changed later and should be unique.
packversion The version of your contentpack.
Can be changed later on.
author The author of this contentpack.
Can be changed later on.
addonversion The addonversion used. Should be "2" (latest).
Can be changed later on. (Take a look at "Converting v1 to v2 contentpacks")
content The content field is used for registering all your blocks. It contains paths to files with the type afterwards.
Can be extended later on.

content-types:

  • BLOCKSIGNAL Signals with different states (basically the same as with v1)
  • BLOCKCOMPLEXSIGNAL Signals with different states and groups (more complex, more features)
  • BLOCKSIGN Signs that have one state (text rendering will follow with another version)
  • BLOCKSIGNALBOX Signalboxes that have one state (can be connected to signals)
  • BLOCKDECO Assets that have one state
  • BLOCKLEVER Levers that have an active and inactive state (provide redstone power)

Contentpack signalboxes and deco

{
  "id": "my-deco-block",
  "name": "My Decoblock",
  "rotationSteps": 90,
  "base": {
    "mydecoblock/decoblock.obj": [
      {
        "textures": "white",
        "obj_groups": [],
        "item": {
          "DEFAULT": {
            "translation": [
              0.5,
              0,
              0.5
            ],
            "rotation": [
                0,
                0,
                0
            ],
            "scaling": [
              0.5,
              0.5,
              0.5
            ]
          }
        },
        "block": {
          "translation": [
            0.5,
            0,
            0.5
          ],
          "rotation": [
            0,
            180,
            0
          ],
          "scaling": [
            1,
            1,
            1
          ]
        }
      }
    ]
  }
}

General fields

Field Default Description
id - The ID of the block.
Shouldn't be changed later and should be unique.
name - The name of the block
Can be changed later on.
rotationSteps 10 The steps in which the block can be rotated.
Optional. Allowed values: 10 - 90
references - The references contain values that can be linked via the name.
More informations below.
base - The base contains all OBJs used for rendering including textures, obj-groups and so on.
Can be used for all contentpack entries, it will always be rendered.

Base field

Field Default Description
"OBJ" - The base field must contain atleast one "OBJ" path. Same OBJ can be inserted multiple times.

( i ) The path needs to contain everything after assets/landofsignals/

OBJ fields

Field Default Description
textures - The textures wanted for the OBJ.
If empty, MTL textures will be used.
obj_groups - The groups wanted for the OBJ.
If empty, all groups will be used. Will filter for values that start with the name.
item - The item field contains rendering properties for the various item-types.
Can be replaced with "itemRefs".
block - The block field contains rendering properties for the block.
Can be replaced with "blockRef".
itemRefs - The itemRefs contain item-types and reference-names.
Optional. Replaces "item".
blockRef - The blockRef contains the reference-name.
Optional. Replaces "block".

item-types:

  • DEFAULT Used for all item-types. (In-Hand, Inventory, Dropped Item, a.s.o.)

Will be extended with a future version. (Needs new UMC version as well)

obj_groups will filter for groups that start with the same name.
For example you have the following groups: "white", "white1", "yellow", "red".
If you added "obj_groups": ["white"], the renderer would render the group "white" and "white1" as they start with this entry.

Contentpack levers

{
  "id": "my-signallever",
  "name": "My Signallever",
  "rotationSteps": 90,
  "inactive": {
    "signallever/signallever.obj": [
      {
        "textures": "off",
        "obj_groups": [],
        "item": {
          "DEFAULT": {
            "translation": [
              0.5,
              0,
              0.5
            ],
            "rotation": [
                0,
                0,
                0
            ],
            "scaling": [
              0.5,
              0.5,
              0.5
            ]
          }
        },
        "block": {
          "translation": [
            0.5,
            0,
            0.5
          ],
          "rotation": [
            0,
            180,
            0
          ],
          "scaling": [
            1,
            1,
            1
          ]
        }
      }
    ]
  },
  "active": {
    "signallever/signallever.obj": [
      {
        "textures": "on",
        "obj_groups": [],
        "item": {
          "DEFAULT": {
            "translation": [
              0.5,
              0,
              0.5
            ],
            "rotation": [
                0,
                0,
                0
            ],
            "scaling": [
              0.5,
              0.5,
              0.5
            ]
          }
        },
        "block": {
          "translation": [
            0.5,
            0,
            0.5
          ],
          "rotation": [
            0,
            180,
            0
          ],
          "scaling": [
            1,
            1,
            1
          ]
        }
      }
    ]
  }
}

General fields

Field Default Description
id - The ID of the block.
Shouldn't be changed later and should be unique.
name - The name of the block
Can be changed later on.
rotationSteps 10 The steps in which the block can be rotated.
Optional. Allowed values: 10 - 90
references - The references contain values that can be linked via the name.
More informations below.
active - It contains all OBJs used for rendering the active-state (redstone power) including textures, obj-groups and so on.
inactive - It contains all OBJs used for rendering the inactive-state (no redstone power - default state) including textures, obj-groups and so on.

active/inactive field

Field Default Description
"OBJ" - The active/inactive field must contain atleast one "OBJ" path. Same OBJ can be inserted multiple times.

( i ) The path needs to contain everything after assets/landofsignals/

OBJ fields

Field Default Description
textures - The textures wanted for the OBJ.
If empty, MTL textures will be used.
obj_groups - The groups wanted for the OBJ.
If empty, all groups will be used. Will filter for values that start with the name.
item - The item field contains rendering properties for the various item-types.
Can be replaced with "itemRefs".
block - The block field contains rendering properties for the block.
Can be replaced with "blockRef".
itemRefs - The itemRefs contain item-types and reference-names.
Optional. Replaces "item".
blockRef - The blockRef contains the reference-name.
Optional. Replaces "block".

item-types:

  • DEFAULT Used for all item-types. (In-Hand, Inventory, Dropped Item, a.s.o.)

Will be extended with a future version. (Needs new UMC version as well)

obj_groups will filter for groups that start with the same name.
For example you have the following groups: "white", "white1", "yellow", "red".
If you added "obj_groups": ["white"], the renderer would render the group "white" and "white1" as they start with this entry.

Contentpack signs

{
  "id": "my-sign",
  "name": "My Sign",
  "rotationSteps": 90,
  "writeable": true,
  "base": {
    "mysign/mysign.obj": [
      {
        "textures": "text_de",
        "obj_groups": [],
        "item": {
          "DEFAULT": {
            "translation": [
              0.5,
              0,
              0.5
            ],
            "rotation": [
              0,
              90,
              0
            ],
            "scaling": []
          }
        },
        "block": {
          "translation": [
            0.5,
            0,
            0.5
          ],
          "rotation": [
            0,
            180,
            0
          ],
          "scaling": [
            1,
            1,
            1
          ]
        }
      }
    ]
  }
}

General fields

Field Default Description
id - The ID of the block.
Shouldn't be changed later and should be unique.
name - The name of the block
Can be changed later on.
rotationSteps 10 The steps in which the block can be rotated.
Optional. Allowed values: 10 - 90
writeable false The writable attribute determines if you can write onto that sign.
Optional. Allowed values: true, false
references - The references contain values that can be linked via the name.
More informations below.
base - The base contains all OBJs used for rendering including textures, obj-groups and so on.
Can be used for all contentpack entries, it will always be rendered.

writable currently activates the GUI for entering and saving a text. There is no validation nor rendering of the text. This will be added in the future with the new UMC version. This feature may change in the future as well. (According to the functions available)

Base field

Field Default Description
"OBJ" - The base field must contain atleast one "OBJ" path. Same OBJ can be inserted multiple times.

( i ) The path needs to contain everything after assets/landofsignals/

OBJ fields

Field Default Description
textures - The textures wanted for the OBJ.
If empty, MTL textures will be used.
obj_groups - The groups wanted for the OBJ.
If empty, all groups will be used. Will filter for values that start with the name.
item - The item field contains rendering properties for the various item-types.
Can be replaced with "itemRefs".
block - The block field contains rendering properties for the block.
Can be replaced with "blockRef".
itemRefs - The itemRefs contain item-types and reference-names.
Optional. Replaces "item".
blockRef - The blockRef contains the reference-name.
Optional. Replaces "block".

item-types:

  • DEFAULT Used for all item-types. (In-Hand, Inventory, Dropped Item, a.s.o.)

Will be extended with a future version. (Needs new UMC version as well)

obj_groups will filter for groups that start with the same name.
For example you have the following groups: "white", "white1", "yellow", "red".
If you added "obj_groups": ["white"], the renderer would render the group "white" and "white1" as they start with this entry.

Contentpack signals (BLOCKSIGNAL)

Pedestrian light

This is like before with v1 with a little more options available now

Signals: green, red

{
  "id": "pedestrian-light",
  "name": "Pedestrian light (green/red)",
  "model": "pedestrianlight/pedestrianlight.obj",
  "rotationSteps": 10,
  "translation": [
    0.5,
    0,
    0.5
  ],
  "itemTranslation": [
    0.5,
    0,
    0.5
  ],
  "scaling": [
    1,
    1,
    1
  ],
  "itemScaling": [
    1,
    1,
    1
  ],
  "states": [
    "green",
    "red"
  ],
  "itemState": "red",
  "useBase": true,
  "base": "basetexture"
}
General fields
Field Default Description
id - The ID of the block.
Shouldn't be changed later and should be unique.
name - The name of the block
Can be changed later on.
model - The OBJ used for this block
Shouldn't be changed later on.
rotationSteps 10 The steps in which the block can be rotated.
Optional. Allowed values: 10 - 90
useBase false The useBase attribute states if a base texture should be used.
Optional. Allowed values: true, false
base - The base can be set to render the OBJ with the given texture ignoring any states
Optional. (EXPERIMENTAL)
states [null] The signals field contains all textures/states.
Can be extended later on.
scaling [1, 1, 1] The scaling used for the block. Comes before translation.
Optional.
translation [0, 0, 0] The translation used for the block. Comes after scaling.
Optional. Shouldn't be too large. (>2)
itemState states[0] The states attribute can be used to specify a specific texture for the item.
Optional. If not set, first state from states will be used.
itemScaling [1, 1, 1] The item-scaling used for the item. Comes before item-translation.
Optional.
itemTranslation [0, 0, 0] The item-translation used for the item. Comes after item-scaling.
Optional.

Contentpack complex signals (BLOCKCOMPLEXSIGNAL)

Signal 1 (Simplest - one group, no references)

This will be the simplest of signals. Containing only one group without any references.

Group: main_lamp (Name: "Main lamp")

Signals: off (Name: "Off"), white (Name: "White"), red (Name: "Red")

{
  "id": "simple-single-lamp",
  "name": "Simple Single Lamp Signal",
  "rotationSteps": 10,
  "base": {
    "singlelampsignal/singlelampsignalbase.obj": [
      {
        "textures": "base",
        "obj_groups": [],
        "item": {
          "DEFAULT": {
            "translation": [
              0.625,
              0.125,
              0
            ],
            "rotation": [
              0,
              180,
              0
            ],
            "scaling": [
              0.8,
              0.8,
              0.8
            ]
          }
        },
        "block": {
          "translation": [
            0.5,
            0,
            0.5
          ],
          "rotation": [
            0,
            180,
            0
          ],
          "scaling": [
            1,
            1,
            1
          ]
        }
      }
    ]
  },
  "signals": {
    "main_lamp": {
      "groupName": "Main lamp",
      "states": {
        "off": {
          "signalName": "Off",
          "models": {
            "singlelampsignal/singlelampsignal.obj": [
              {
                "textures": "off",
                "obj_groups": [],
                "item": {
                  "DEFAULT": {
                    "translation": [
                      0.625,
                      0.125,
                      0
                    ],
                    "rotation": [
                      0,
                      180,
                      0
                    ],
                    "scaling": [
                      0.8,
                      0.8,
                      0.8
                    ]
                  }
                },
                "block": {
                  "translation": [
                    0.5,
                    0,
                    0.5
                  ],
                  "rotation": [
                    0,
                    180,
                    0
                  ],
                  "scaling": [
                    1,
                    1,
                    1
                  ]
                }
              }
            ]
          }
        },
        "white": {
          "signalName": "White",
          "models": {
            "singlelampsignal/singlelampsignal.obj": [
              {
                "textures": "white",
                "obj_groups": [],
                "item": {
                  "DEFAULT": {
                    "translation": [
                      0.625,
                      0.125,
                      0
                    ],
                    "rotation": [
                      0,
                      180,
                      0
                    ],
                    "scaling": [
                      0.8,
                      0.8,
                      0.8
                    ]
                  }
                },
                "block": {
                  "translation": [
                    0.5,
                    0,
                    0.5
                  ],
                  "rotation": [
                    0,
                    180,
                    0
                  ],
                  "scaling": [
                    1,
                    1,
                    1
                  ]
                }
              }
            ]
          }
        },
        "red": {
          "signalName": "Red",
          "models": {
            "singlelampsignal/singlelampsignal.obj": [
              {
                "textures": "red",
                "obj_groups": [],
                "item": {
                  "DEFAULT": {
                    "translation": [
                      0.625,
                      0.125,
                      0
                    ],
                    "rotation": [
                      0,
                      180,
                      0
                    ],
                    "scaling": [
                      0.8,
                      0.8,
                      0.8
                    ]
                  }
                },
                "block": {
                  "translation": [
                    0.5,
                    0,
                    0.5
                  ],
                  "rotation": [
                    0,
                    180,
                    0
                  ],
                  "scaling": [
                    1,
                    1,
                    1
                  ]
                }
              }
            ]
          }
        }
      }
    }
  }
}
General fields
Field Default Description
id - The ID of the block.
Shouldn't be changed later and should be unique.
name - The name of the block
Can be changed later on.
rotationSteps 10 The steps in which the block can be rotated.
Optional. Allowed values: 10 - 90
references - The references contain values that can be linked via the name.
More informations below.
base - The base contains all OBJs used for rendering including textures, obj-groups and so on.
Can be used for all contentpack entries, it will always be rendered.
signals - The signals field contains all groups (This can be a single lamp or a constellation of signals that need to be switched together).
Can be extended later on.

signals contains group-ids and the group itself. A group can be a single lamp or connected lamps. If your signal contains lamps that can be switched independetly, they can be seperated into different groups. There needs to be atleast one group!

Base field
Field Default Description
"OBJ" - The base field must contain atleast one "OBJ" path. Same OBJ can be inserted multiple times.

( i ) The path needs to contain everything after assets/landofsignals/

OBJ fields can be found under "Model field" "Model field" equals "Base field"

Signals field
Field Default Description
"Group ID" - The group ID contains the group itself. It needs to be unique and will be used internally.
Can't be changed later on.
Group field
Field Default Description
groupName - The groupName will be displayed in the signalbox on the button to switch through the groups.
Can be changed later on.
states - The states the group can have. (On, Off or Black, White, Yellow, Red for example.)
Can be extended later on.
States field
Field Default Description
"State ID" - The state ID contains the state itself. It needs to be unique and will be used internally.
Can't be changed later on.

Important States are displayed by priority. Sort them in your contentpack by least important (off?) to most important (red?).

State field
Field Default Description
signalName - The signalName will be displayed.
Can be changed later on.
models - The OBJ models that will be rendered.
Can be changed later on.
Model field
Field Default Description
"OBJ" - The state field must contain atleast one "OBJ" path. Same OBJ can be inserted multiple times.

( i ) The path needs to contain everything after assets/landofsignals/

OBJ fields
Field Default Description
textures - The textures wanted for the OBJ.
If empty, MTL textures will be used.
obj_groups - The groups wanted for the OBJ.
If empty, all groups will be used. Will filter for values that start with the name.
item - The item field contains rendering properties for the various item-types.
Can be replaced with "itemRefs".
block - The block field contains rendering properties for the block.
Can be replaced with "blockRef".
itemRefs - The itemRefs contain item-types and reference-names.
Optional. Replaces "item".
blockRef - The blockRef contains the reference-name.
Optional. Replaces "block".

item-types:

  • DEFAULT Used for all item-types. (In-Hand, Inventory, Dropped Item, a.s.o.)

Will be extended with a future version. (Needs new UMC version as well)

obj_groups will filter for groups that start with the same name.
For example you have the following groups: "white", "white1", "yellow", "red".
If you added "obj_groups": ["white"], the renderer would render the group "white" and "white1" as they start with this entry.

Signal 2 (one group, with references)

This will be a simple signal. Containing only one group but references.

{
  "id": "simple-single-lamp",
  "name": "Simple Single Lamp Signal",
  "rotationSteps": 10,
  "references": {
    "contentPackItemRefs": {
      "defaultItem": {
        "translation": [
          0.625,
          0.125,
          0
        ],
        "rotation": [
          0,
          180,
          0
        ],
        "scaling": [
          0.8,
          0.8,
          0.8
        ]
      }
    },
    "contentPackBlockRefs": {
      "defaultBlock": {
        "translation": [
          0.5,
          0,
          0.5
        ],
        "rotation": [
          0,
          180,
          0
        ],
        "scaling": [
          1,
          1,
          1
        ]
      }
    }
  },
  "base": {
    "singlelampsignal/singlelampsignalbase.obj": [
      {
        "textures": "base",
        "obj_groups": [],
        "itemRefs": {
          "DEFAULT": "defaultItem"
        },
        "blockRef": "defaultBlock"
      }
    ]
  },
  "signals": {
    "main_lamp": {
      "groupName": "Main lamp",
      "states": {
        "off": {
          "signalName": "Off",
          "models": {
            "singlelampsignal/singlelampsignal.obj": [
              {
                "textures": "off",
                "obj_groups": [],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        },
        "white": {
          "signalName": "White",
          "models": {
            "singlelampsignal/singlelampsignal.obj": [
              {
                "textures": "white",
                "obj_groups": [],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        },
        "red": {
          "signalName": "Red",
          "models": {
            "singlelampsignal/singlelampsignal.obj": [
              {
                "textures": "red",
                "obj_groups": [],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        }
      }
    }
  }
}
General fields
Field Default Description
id - The ID of the block.
Shouldn't be changed later and should be unique.
name - The name of the block
Can be changed later on.
rotationSteps 10 The steps in which the block can be rotated.
Optional. Allowed values: 10 - 90
references - The references contain values that can be linked via the name.
More informations below.
base - The base contains all OBJs used for rendering including textures, obj-groups and so on.
Can be used for all contentpack entries, it will always be rendered.
signals - The signals field contains all groups (This can be a single lamp or a constellation of signals that need to be switched together).
Can be extended later on.

signals contains group-ids and the group itself. A group can be a single lamp or connected lamps. If your signal contains lamps that can be switched independetly, they can be seperated into different groups. There needs to be atleast one group!

References field
Field Default Description
translationRefs - Contains translations and their referencenames.
Optional. Arrays of 3 decimals.
rotationRefs - Contains rotations and their referencenames.
Optional. Arrays of 3 decimals.
scalingRefs - Contains scalings and their referencenames.
Optional. Arrays of 3 decimals.
textureRefs - Contains texture references and their referencenames.
Optional. Arrays with text/strings.
obj_groupRefs - Contains OBJ groups and their referencenames.
Optional. Arrays with text/strings.
contentPackItemRefs - Contains rendering properties for the various item-types and their referencenames.
Optional.
contentPackBlockRefs - Contains rendering properties for the blocks and their referencenames.
Optional.

item-types:

  • DEFAULT Used for all item-types. (In-Hand, Inventory, Dropped Item, a.s.o.)

Will be extended with a future version. (Needs new UMC version as well)

Base field
Field Default Description
"OBJ" - The base field must contain atleast one "OBJ" path. Same OBJ can be inserted multiple times.

( i ) The path needs to contain everything after assets/landofsignals/

OBJ fields can be found under "Model field" "Model field" equals "Base field"

Signals field
Field Default Description
"Group ID" - The group ID contains the group itself. It needs to be unique and will be used internally.
Can't be changed later on.
Group field
Field Default Description
groupName - The groupName will be displayed in the signalbox on the button to switch through the groups.
Can be changed later on.
states - The states the group can have. (On, Off or Black, White, Yellow, Red for example.)
Can be extended later on.
States field
Field Default Description
"State ID" - The state ID contains the state itself. It needs to be unique and will be used internally.
Can't be changed later on.

Important States are displayed by priority. Sort them in your contentpack by least important (off?) to most important (red?).

State field
Field Default Description
signalName - The signalName will be displayed.
Can be changed later on.
models - The OBJ models that will be rendered.
Can be changed later on.
Model field
Field Default Description
"OBJ" - The state field must contain atleast one "OBJ" path. Same OBJ can be inserted multiple times.

( i ) The path needs to contain everything after assets/landofsignals/

OBJ fields
Field Default Description
textures - The textures wanted for the OBJ.
If empty, MTL textures will be used.
obj_groups - The groups wanted for the OBJ.
If empty, all groups will be used. Will filter for values that start with the name.
item - The item field contains rendering properties for the various item-types.
Can be replaced with "itemRefs".
block - The block field contains rendering properties for the block.
Can be replaced with "blockRef".
itemRefs - The itemRefs contain item-types and reference-names.
Optional. Replaces "item".
blockRef - The blockRef contains the reference-name.
Optional. Replaces "block".

item-types:

  • DEFAULT Used for all item-types. (In-Hand, Inventory, Dropped Item, a.s.o.)

Will be extended with a future version. (Needs new UMC version as well)

obj_groups will filter for groups that start with the same name.
For example you have the following groups: "white", "white1", "yellow", "red".
If you added "obj_groups": ["white"], the renderer would render the group "white" and "white1" as they start with this entry.

Signal 3 (multiple groups, with references)

This will be a moderate signal. Containing multiple groups and references.

{
  "id": "streckenblock",
  "name": "Streckenblock (Off, White, Red)",
  "rotationSteps": 45,
  "references": {
    "contentPackItemRefs": {
      "defaultItem": {
        "translation": [
          0.625,
          0.125,
          0
        ],
        "rotation": [
          0,
          180,
          0
        ],
        "scaling": [
          0.8,
          0.8,
          0.8
        ]
      }
    },
    "contentPackBlockRefs": {
      "defaultBlock": {
        "translation": [
          0.5,
          0,
          0.5
        ],
        "rotation": [
          0,
          180,
          0
        ],
        "scaling": [
          1,
          1,
          1
        ]
      }
    }
  },
  "base": {
    "streckenblock/streckenblock.obj": [
      {
        "obj_groups": [
          "generalCube"
        ],
        "itemRefs": {
          "DEFAULT": "defaultItem"
        },
        "blockRef": "defaultBlock"
      }
    ]
  },
  "signals": {
    "group_top_left": {
      "groupName": "Top left lamp",
      "states": {
        "off": {
          "signalName": "Off",
          "models": {
            "streckenblock/streckenblock.obj": [
              {
                "obj_groups": [
                  "topLeftBlack"
                ],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        },
        "white": {
          "signalName": "White",
          "models": {
            "streckenblock/streckenblock.obj": [
              {
                "obj_groups": [
                  "topLeftWhite"
                ],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        },
        "red": {
          "signalName": "Red",
          "models": {
            "streckenblock/streckenblock.obj": [
              {
                "obj_groups": [
                  "topLeftRed"
                ],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        }
      }
    },
    "group_top_right": {
      "groupName": "Top right lamp",
      "states": {
        "off": {
          "signalName": "Off",
          "models": {
            "streckenblock/streckenblock.obj": [
              {
                "obj_groups": [
                  "topRightBlack"
                ],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        },
        "white": {
          "signalName": "White",
          "models": {
            "streckenblock/streckenblock.obj": [
              {
                "obj_groups": [
                  "topRightWhite"
                ],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        },
        "red": {
          "signalName": "Red",
          "models": {
            "streckenblock/streckenblock.obj": [
              {
                "obj_groups": [
                  "topRightRed"
                ],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        }
      }
    },
    "group_bottom_left": {
      "groupName": "Bottom left lamp",
      "states": {
        "off": {
          "signalName": "Off",
          "models": {
            "streckenblock/streckenblock.obj": [
              {
                "obj_groups": [
                  "bottomLeftBlack"
                ],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        },
        "white": {
          "signalName": "White",
          "models": {
            "streckenblock/streckenblock.obj": [
              {
                "obj_groups": [
                  "bottomLeftWhite"
                ],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        },
        "red": {
          "signalName": "Red",
          "models": {
            "streckenblock/streckenblock.obj": [
              {
                "obj_groups": [
                  "bottomLeftRed"
                ],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        }
      }
    },
    "group_bottom_right": {
      "groupName": "Bottom right lamp",
      "states": {
        "off": {
          "signalName": "Off",
          "models": {
            "streckenblock/streckenblock.obj": [
              {
                "obj_groups": [
                  "bottomRightBlack"
                ],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        },
        "white": {
          "signalName": "White",
          "models": {
            "streckenblock/streckenblock.obj": [
              {
                "obj_groups": [
                  "bottomRightWhite"
                ],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        },
        "red": {
          "signalName": "Red",
          "models": {
            "streckenblock/streckenblock.obj": [
              {
                "obj_groups": [
                  "bottomRightRed"
                ],
                "itemRefs": {
                  "DEFAULT": "defaultItem"
                },
                "blockRef": "defaultBlock"
              }
            ]
          }
        }
      }
    }
  }
}
General fields
Field Default Description
id - The ID of the block.
Shouldn't be changed later and should be unique.
name - The name of the block
Can be changed later on.
rotationSteps 10 The steps in which the block can be rotated.
Optional. Allowed values: 10 - 90
references - The references contain values that can be linked via the name.
More informations below.
base - The base contains all OBJs used for rendering including textures, obj-groups and so on.
Can be used for all contentpack entries, it will always be rendered.
signals - The signals field contains all groups (This can be a single lamp or a constellation of signals that need to be switched together).
Can be extended later on.

signals contains group-ids and the group itself. A group can be a single lamp or connected lamps. If your signal contains lamps that can be switched independetly, they can be seperated into different groups. There needs to be atleast one group!

References field
Field Default Description
translationRefs - Contains translations and their referencenames.
Optional. Arrays of 3 decimals.
rotationRefs - Contains rotations and their referencenames.
Optional. Arrays of 3 decimals.
scalingRefs - Contains scalings and their referencenames.
Optional. Arrays of 3 decimals.
textureRefs - Contains texture references and their referencenames.
Optional. Arrays with text/strings.
obj_groupRefs - Contains OBJ groups and their referencenames.
Optional. Arrays with text/strings.
contentPackItemRefs - Contains rendering properties for the various item-types and their referencenames.
Optional.
contentPackBlockRefs - Contains rendering properties for the blocks and their referencenames.
Optional.

item-types:

  • DEFAULT Used for all item-types. (In-Hand, Inventory, Dropped Item, a.s.o.)

Will be extended with a future version. (Needs new UMC version as well)

Base field
Field Default Description
"OBJ" - The base field must contain atleast one "OBJ" path. Same OBJ can be inserted multiple times.

( i ) The path needs to contain everything after assets/landofsignals/

OBJ fields can be found under "Model field" "Model field" equals "Base field"

Signals field
Field Default Description
"Group ID" - The group ID contains the group itself. It needs to be unique and will be used internally.
Can't be changed later on.
Group field
Field Default Description
groupName - The groupName will be displayed in the signalbox on the button to switch through the groups.
Can be changed later on.
states - The states the group can have. (On, Off or Black, White, Yellow, Red for example.)
Can be extended later on.
States field
Field Default Description
"State ID" - The state ID contains the state itself. It needs to be unique and will be used internally.
Can't be changed later on.

Important States are displayed by priority. Sort them in your contentpack by least important (off?) to most important (red?).

State field
Field Default Description
signalName - The signalName will be displayed.
Can be changed later on.
models - The OBJ models that will be rendered.
Can be changed later on.
Model field
Field Default Description
"OBJ" - The state field must contain atleast one "OBJ" path. Same OBJ can be inserted multiple times.

( i ) The path needs to contain everything after assets/landofsignals/

OBJ fields
Field Default Description
textures - The textures wanted for the OBJ.
If empty, MTL textures will be used.
obj_groups - The groups wanted for the OBJ.
If empty, all groups will be used. Will filter for values that start with the name.
item - The item field contains rendering properties for the various item-types.
Can be replaced with "itemRefs".
block - The block field contains rendering properties for the block.
Can be replaced with "blockRef".
itemRefs - The itemRefs contain item-types and reference-names.
Optional. Replaces "item".
blockRef - The blockRef contains the reference-name.
Optional. Replaces "block".

item-types:

  • DEFAULT Used for all item-types. (In-Hand, Inventory, Dropped Item, a.s.o.)

Will be extended with a future version. (Needs new UMC version as well)

obj_groups will filter for groups that start with the same name.
For example you have the following groups: "white", "white1", "yellow", "red".
If you added "obj_groups": ["white"], the renderer would render the group "white" and "white1" as they start with this entry.