Skip to content

TopSpin

TheClowner edited this page Dec 31, 2021 · 7 revisions

Added in v1.7.0

TopSpin Ride Demo Video (Youtube)

Also known as Talocan. A single row of seats supported on two rotating arms.
The arms and seats can rotate independently, as well as swing by gravity - depending on the ride sequence.

Setting types:
Integer = a whole number
Double = a decimal Number
Boolean = true/false
Location = In-game coordinates

Ride Settings

Also see Global Ride Settings for other settings.

Size & Seat Layout

Setting Name Type Default Value Description
AXIS Boolean false Changes the main direction of the swinging between the x or z axis. False is along the z axis, True is along the x axis.
FLIP Boolean false Reverses the direction of the ride seats.
SEAT_LENGTH Double, blocks 10.5 The length of the row of seats, in blocks.
ARM_RADIUS Double, blocks 3.62 The radius of the two support arms. The default of 3.62 perfectly lines up with an end rod as the centre of rotation when BASE_LOCATION has a y value ending .5

Ride Motion

Setting Name Type Default Value Description
SEAT_MAX_ROTATE_SPEED Double 9.0 The maximum speed of the seat rotation, in degrees per tick.
ARM_MAX_ROTATE_SPEED Double 4.0 The maximum speed of the arm rotation. in degrees per tick.
ACCELERATION Double 1.0 Relative acceleration rate for rotation.
FRICTION Double 1.0 Rate of friction during swinging.
GRAVITY Double 1.0 Rate of gravity during swinging.

Decoration

Setting Name Type Default Value Description
SHOW_ARMS Boolean true Enable or disable adding extra entities to represent the support arm.
SHORT_ARMS Boolean false Halves the length of the arms, so they don't extend beyond the centre of rotation.
ARM_MATERIAL Material IRON_BLOCK Change the item used to make up the arm.
ARM_ENTITIES Integer 12 Sets how many entities to use along the arm. 2x ARM_LENGTH will prevent any gaps showing.
ARM_CUSTOM_MODEL_DATA Integer 0 Sets the custom model data (1.14+) or durability value (1.13 only) for using a custom model as the arm entities. See the custom models wiki page for details on creating a resource pack.

Ride Sequence

Setting Name Default Value
SEQUENCE [0.35:lock:50],[-0.6:lock:110],[0.0:swing:60],[0.5:swing:140],[-0.0:swing:60],[-0.7:lock:60],[-1.0:1.0:25],[0.0:1.0:80],[-0.8:1.0:80],[-0.8:swing:40],[0.0:swing:150],[0.4:lock:60],[0.05:lock:80],[swing:swing:320],[end:40]

Sequence options
The sequence is split into steps, which each take the format: [armSpeed:seatSpeed:time],[step2...],[...],[end:time]
ArmSpeed and SeatSpeed are double values that are relative to the max speed settings, 1.0 putting the ride to that max speed. Negative values are supported. You can also use lock or swing in place of a speed to lock the arm/seats in place, or allow them to swing via gravity (pendulum style).

Note: Lock will cause the arms and seats to immediately stop where they are, set their speed to 0.0 to have them slow down to a static position.

Time is in server ticks. (20 = 1 second).

There is one special step [end:time] which will return the ride to it's level/loading position over the time specified.

Note: The default sequence takes up the entire command length, so for longer sequences you may need to enter them in the ride config. Rather than comma separation the config will have each step on a new line. The default sequence is shown below with some comments explaining what the steps do:

TopSpin:
  Motion:
    sequence:
    - '[0.35:lock:50]' # Raise arms, with seats locked to the arm's rotation
    - '[-0.6:lock:110]' # Reverse
    - '[0.0:swing:60]' # Slow arms to stop. Release seats so they swing
    - '[0.5:swing:140]' # Reverse arms while seats can swing
    - '[0.0:swing:60]' # Slow arms to stop, seats can swing (timed so they end up perpendicular)
    - '[-0.7:lock:60]' # Start rotating arms with seats locked
    - '[-1.0:-1.0:25]' # Speed up, rotate seats at fixed speed.
    - '[0.0:-1.0:80]' # Slow arms to stop (timed to hold at top), continue seat rotation
    - '[-0.8:-1.0:80]' # Resume rotation
    - '[-0.8:swing:40]' # Release seats to swing
    - '[0.0:swing:150]' # Slow arms to stop
    - '[0.4:lock:60]' # Slowly tilt forward with seats locked. (timed so seats end up almost parallel to arms)
    - '[0.05:lock:80]' # Slow arms to near stop
    - '[swing:swing:290]' # Allow arms and seats to swing to level
    - '[end:40]' # Force to level loading position and end ride