Skip to main content

Custom Time Rotors

As of version 5.5.0 you can add custom time rotor models for the TARDIS console.

For TARDIS v6.x.x and Minecraft 1.21.4+

The files for these examples are included in the TARDIS Resource Pack.

Custom time rotor models are defined in plugins/TARDIS/custom_time_rotors.yml, an example entry is shown below:

/plugins/TARDIS/custom_time_rotors.yml
# this entry is FuzzyLeo's classic time rotor
classic:
# the material of the animated rotor item
# material must be unique for each rotor, the plugin already uses:
# BLACK_DYE, ORANGE_DYE, BROWN_DYE, GRAY_DYE, CYAN_DYE, LIGHT_BLUE_DYE, BLUE_DYE, WHITE_DYE
animated_material: YELLOW_DYE
# a comma separated list of frame numbers to determine the
# model definition file names e.g. time_rotor_classic_0.json
# animation states will need to be set with model definitions
# in the assets/tardis/items/ resource pack folder
animation_sequence: 0,1,2,3,4,5,6,7
# the animation frame rate in ticks
frame_rate: 6

Model definitions

A model definition for the rotor's inventory item must be added as a "minecraft:custom_name" predicate in assets/minecraft/items/light_gray_dye.json

assets/minecraft/items/light_gray_dye.json
{
"model": {
"type": "minecraft:select",
"property": "component",
"component": "minecraft:custom_name",
"fallback": {
"type": "minecraft:model",
"model": "minecraft:item/light_gray_dye"
},
"cases": [
...,
{
"when": {
"color": "white",
"text": "Time Rotor Classic",
"italic": false
},
"model": {
"type": "minecraft:model",
"model": "tardis:item/time_rotor/time_rotor_classic_off"
}
},
...
]
}
}

Time rotor off state

The time rotor off state will need to be set with model definitions in the assets/tardis/items/ resource pack folder.

The file name should follow the format:

time_rotor_XXX_off.json

Where XXX is the time rotor name from custom_time_rotors.yml e.g.:

time_rotor_classic_off.json

The model definition should point to the item model for the off state somewhere in assets/tardis/models/item/, for example:

assets/tardis/items/time_rotor_classic_off.json
{
"model": {
"type": "minecraft:model",
"model": "tardis:item/time_rotor/time_rotor_classic_off"
}
}

Time rotor animation states

The time rotor animation states will need to be set with model definitions in the assets/tardis/items/ resource pack folder.

The file names should follow the format:

time_rotor_XXX_N.json

Where XXX is the time rotor name from custom_time_rotors.yml and N is the number in the animation sequence e.g.:

time_rotor_classic_0.json
time_rotor_classic_1.json
time_rotor_classic_2.json
time_rotor_classic_3.json
time_rotor_classic_4.json
time_rotor_classic_5.json
time_rotor_classic_6.json
time_rotor_classic_7.json

The model definition should point to the item model for the animation somewhere in assets/tardis/models/item/, for example:

assets/tardis/items/time_rotor_classic_4.json
{
"model": {
"type": "minecraft:model",
"model": "tardis:item/time_rotor/classic/classic_4"
}
}

Prior to TARDIS v6.x.x

Custom time rotor models are defined in plugins/TARDIS/custom_time_rotors.yml, an example entry is shown below:

/plugins/TARDIS/custom_time_rotors.yml
classic:
off_custom_model_data: 10000010
animated_material: YELLOW_DYE
animation_sequence: 0,1,2,3,4,5,6,7
frame_rate: 6
ConfigTypeDefault
classic:
off_custom_model_datanumber10000010
Custom model data for the rotor's inventory item and off state model, must be added as a "custom_model_data" predicate in assets/minecraft/models/item/light_gray_dye.json - must be higher than 10000009
animated_materialstringYELLOW_DYE
The material of the animated rotor item, animation states will need to be set with "custom_model_data" predicates in assets/minecraft/models/item/[animated_material].json, starting at 1021. Material must be unique for each rotor, the plugin already uses BLACK_DYE, ORANGE_DYE, BROWN_DYE, GRAY_DYE, CYAN_DYE, LIGHT_BLUE_DYE, BLUE_DYE, WHITE_DYE
animation_sequencestring0,1,2,3,4,5,6,7
A comma separated list of frame numbers where the number is added to the starting animation frame to get the "custom_model_data" predicate e.g. 1021 + 3 = 1024
frame_ratenumber6
The animation frame rate in server ticks

Example model overrides

Inventory item / off state go in light_gray_dye.json:

assets/minecraft/models/item/light_gray_dye.json
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "minecraft:item/light_gray_dye"
},
"overrides": [
# {other predicates}...
{"predicate": {"custom_model_data": 10000010}, "model": "tardis:item/time_rotor/classic/classic_0"}
]
}

Animation states go in yellow_dye.json:

assets/minecraft/models/item/yellow_dye.json
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "minecraft:item/yellow_dye"
},
"overrides": [
# {other predicates}...
{"predicate": {"custom_model_data":1021}, "model": "tardis:item/time_rotor/classic/classic_0"},
{"predicate": {"custom_model_data":1022}, "model": "tardis:item/time_rotor/classic/classic_1"},
{"predicate": {"custom_model_data":1023}, "model": "tardis:item/time_rotor/classic/classic_2"},
{"predicate": {"custom_model_data":1024}, "model": "tardis:item/time_rotor/classic/classic_3"},
{"predicate": {"custom_model_data":1025}, "model": "tardis:item/time_rotor/classic/classic_4"},
{"predicate": {"custom_model_data":1026}, "model": "tardis:item/time_rotor/classic/classic_5"},
{"predicate": {"custom_model_data":1027}, "model": "tardis:item/time_rotor/classic/classic_6"},
{"predicate": {"custom_model_data":1028}, "model": "tardis:item/time_rotor/classic/classic_7"},
# {other predicates}...
]
}

Placing custom rotors

  • Craft one and place it - see Adding a time rotor.
  • Use tab completion for the /trecipe command to see the recipe.
  • Time rotor recipes are all generic, the plugin generates a recipe from the animated_material you specify in the custom time rotor config.