Use Ctrl+F, or ⌘+F on Mac to search for information you need.

    variables:
      - &ComponentsUpdatedEvent
        documentation: This event never seems to fire, only tested on the deprecated Blade part, though.
        parameters:
          - name: ...
            type: any
            documentation: Unknown.
      - &ConfiguredEvent
        documentation: Fires when the object is configured.
        parameters:
          - name: configurerId
            type: number
            documentation: The UserId of the player who configured the object.
      - &DamagedEvent
        documentation: Fires when the object is damaged.
        parameters:
          - name: damage
            type: number
            documentation: The numerical damage dealt.
          - name: damageType
            string-union:
              - Kinetic
              - Energy
            documentation: The type of damage dealt.
          - name: damageSource
            nullable-type: PilotObject
            documentation: Will return a reference to the attacking object, seems to provide references to EnergyGuns, Lasers and Guns, but not Blades or PlasmaCannons, there are other members of these lists that are untested.
      - &LoopEvent
        documentation: Fires when the object is updated by the game loop.
        parameters:
          - name: tickInterval
            type: number
            documentation: The inverse of the tick rate. For example, if the tick rate is `20`, this will be `1 / 20` (or just `0.05`). If the tick rate commands are accessible, running them *will* change this value.
      - &OnClickEvent
        documentation: Fires when the object is clicked.
        parameters:
          - name: clickerId
            type: number
            documentation: The UserId of the player who clicked the object.
      - &TriggeredEvent
        documentation: |-
          Fires when the object is triggered and provides a reference to the part that triggered it.

          If a Microcontroller indirectly initiated the triggering of an object, it will return the object rather than the Microcontroller, whereas in the case of directly triggering the object (i.e., calling :Trigger, but not TriggerPort), it will return the microcontroller.

          The trigger source remains unchanged if the trigger is sent through something such as an Antenna, but will be set to a RemoteControl if one is present along the trigger line.
        parameters:
          - name: otherPart
            type: PilotObject
            documentation: The source of the trigger signal.
      - &UserInputEvent
        documentation:
          description: Will fire when a user presses a key, it is already filtered to gameProcessedEvent being false.
          code-sample: user-input.luau
        parameters:
          - name: inputObject
            type: UserInputObject
            documentation: The UserInputObject produced by the player, is not whitelisted to any Enum.UserInputState.
          - name: userId
            type: number
            documentation: The UserId of the player who pressed the input.
      - &KeyPressedEvent
        documentation:
          description: Fires when the user presses a key.
          code-sample: key-pressed.luau
        parameters:
          - name: key
            type: Enum.KeyCode
            documentation: The Enum.KeyCode of the key that was pressed.
          - name: keyName
            type: string
            documentation: The letter of the key that was pressed. If the key is non-printable (i.e. shift or backspace) keyString will be an empty string. If Shift is held, it will be capitalised.
          - name: userId
            type: number
            documentation: The UserId of the player who pressed the key.
      - &ContainerChangedEvent
        documentation: Fires when the amount of the resource in the container changes.
        parameters:
          - name: resourceType
            string-union:
              - Power
              - Solid
              - Fluid
          - name: resourceAmount
            type: number
      - &SetColorMethod
        documentation:
          description: Sets the color of the object.
          code-sample: disco-lights.luau
        parameters:
          - name: color
            type: Color3
            documentation: The Color3 of the color you want to set the object to.
      - &GetResourceMethod
        documentation: Gets the name of the resource contained, will return the string "nil" if nothing is stored, rather than actually returning nil.
        returns:
          - name: resource
            union:
              - type: string
              - string-type: nil
      - &GetResourceAmountMethod
        documentation: Gives you the total amount of objects in the container.
        returns:
          - name: amount
            documentation: The amount of objects in the container.
            type: number
      - &GetAmountMethod
        documentation:
          description: Gives you the total amount of objects in the container.
          deprecated: Use :GetResourceAmount() instead.
        returns:
          - name: amount
            documentation: The amount of objects in the container.
            type: number
      - &SwitchValueConfigurable
        documentation:
          description: Determines whether the switch is active or not.
          code-sample: switch-flicker.luau
        type: boolean

    types:
      ResourceString:
        documentation: A string representing an object's [ClassName](</objects/PilotObject#ClassName>)
        type: string
      PortLike:
        documentation: A value that will be accepted as a port by the GetPart(s)(FromPort) functions.
        union:
          - type: Port
          - type: number
      Range:
        documentation: Specifies a range of values, it is a string of the form min:max.
        type: string

      Events:
        EventConnection:
          generic-definitions:
            - name: Name
              type: string
            - name: Callback
              function:
                parameters:
                  - name: ...
                    type: unknown
          type:
            _eventName:
              type: Name
            Callback:
              documentation: The function that will be called when the event is fired.
              type: Callback
          metatable:
            type: EventConnectionMetatable
            generics:
              - type: Name
              - type: Callback
        EventConnectionMetatable:
          export: false
          generic-definitions:
            - name: Name
              type: string
            - name: Callback
              function:
                parameters:
                  - name: ...
                    type: unknown
          type:
            Disconnect:
              documentation: Disconnects the event connection, meaning the callback will no longer be ran when the event is fired.
              method: {}
            Unbind:
              method: {}
            __mode:
              string-type: v
            __index:
              type: EventConnectionMetatable
              generics:
                - type: Name
                - type: Callback
          self:
            type: EventConnection
            generics:
              - type: Name
              - type: Callback
        Event:
          generic-definitions:
            - name: Name
              type: string
            - name: Callback
              function:
                parameters:
                  - name: ...
                    type: unknown
            - name: Parameters...
              type: ...unknown
          type:
            _eventName:
              type: Name
            Connect:
              documentation: Connect the provided callback to be called when the event is fired.
              method:
                parameters:
                  - name: callback
                    type: Callback
                returns:
                  - name: connection
                    type: EventConnection
                    generics:
                      - type: Name
                      - type: Callback

      JSON:
        JSONValue:
          export: false
          documentation: An individual JSON value, can be a string, number, boolean, buffer.
          union:
            - type: string
            - type: number
            - type: boolean
            - type: buffer
        JSON:
          export: false
          documentation: A full JSON value, can be a string, number, boolean, buffer, a JSON array, or another JSON dictionary.
          union:
            - type:
                !indexer JSONValue:
                  type: JSON
            - array-type: JSON
            - type: JSONValue

      Universe Info:
        Coordinates:
          CoordinatesMetatable:
            export: false
            self-type: Coordinates
            type:
              __add:
                method:
                  parameters:
                    - type: Coordinates
                  returns:
                    - type: Coordinates
              __div:
                method:
                  parameters:
                    - type: Coordinates
                  returns:
                    - type: Coordinates
              __eq:
                method:
                  parameters:
                    - type: Coordinates
                  returns:
                    - type: boolean
              __mul:
                method:
                  parameters:
                    - type: Coordinates
                  returns:
                    - type: Coordinates
              __tostring:
                method:
                  returns:
                    - type: string
              __index:
                type: CoordinatesMetatable
              Clone:
                documentation: Makes a copy of the coordinates.
                method:
                  returns:
                    - type: Coordinates
                      documentation: A copy of the coordinates.
              CoordStringWithoutPlanet:
                documentation: Returns a string representation of the coordinates without the planet.
                method:
                  returns:
                    - type: string
                      documentation: A string representation of the coordinates without the planet.
              GetRandom:
                documentation: Returns a Random object seeded with the coordinates.
                method:
                  returns:
                    - type: Random
              GetSeed:
                documentation: Returns the seed for the coordinates, which is used to generate region.
                method:
                  returns:
                    - type: number
              ToArray:
                documentation:
                  description: Converts the coordinates to an array representation.
                  code-sample: |-
                    local coordinate = require("coordinate")
                    local coordinates = coordinate.new(0, 0, 0, 0, false)
                    local array = coordinates:ToArray() -- {0, 0, 0, 0, false}
                method:
                  returns:
                    - union-array:
                        - type: number
                        - type: boolean
                      documentation: An array representation of the coordinates.
              type:
                string-type: Coordinates
          Coordinates:
            documentation: |-
              The class that represents universe coordinates.
              Provides the ability to do mathematical operations on coordinates, such as addition, subtraction and even multiplication.
            type:
              InPlanet:
                documentation: Whether the coordinates are within a planet's atmosphere.
                type: boolean
              SolarCoordinates:
                documentation: The coordinates within the solar system, i.e., the coordinates relative to the parent star or black hole.
                type: Vector2
              UniverseCoordinates:
                documentation: The coordinates in the universe, i.e., the coordinates of the solar system.
                type: Vector2
            metatable-type: CoordinatesMetatable
        Universe Enums:
          CelestialBodyType:
            documentation: The type of a celestial body.
            string-union:
              - Planet
              - BlackHole
              - Star
          PlanetType:
            documentation: The type of a planet.
            string-union:
              - Desert
              - Terra
              - EarthLike
              - Ocean
              - Tundra
              - Forest
              - Exotic
              - Barren
              - Gas
              - RobotDepot
              - RobotFactory
          StarType:
            documentation: The type of a star.
            string-union:
              - Red
              - Orange
              - Yellow
              - Blue
              - Neutron
        Complex Region Info:
          RegionColor:
            documentation: The color of the region, used for planets.
            export: false
            type:
              R:
                documentation:
                  description: The red channel of the region color.
                  range: [0, 1]
                type: number
              G:
                documentation:
                  description: The green channel of the region color.
                  range: [0, 1]
                type: number
              B:
                documentation:
                  description: The blue channel of the region color.
                  range: [0, 1]
                type: number
          RegionEntryLocation:
            documentation: The location where the player warps into a region.
            export: false
            type:
              X:
                documentation:
                  description: The X position of the location.
                  range: [-5000, 5000]
                  increment: 1
                type: number
              Y:
                documentation:
                  description: The Y position of the location.
                  range: [4000, 6000]
                  increment: 1
                type: number
              Z:
                documentation:
                  description: The Z position of the location.
                  range: [-5000, 5000]
                  increment: 1
                type: number
          RingData:
            documentation: The data about the rings of a planet, if it has any.
            export: false
            type:
              RingStart:
                documentation:
                  range: [6000, 12000]
                  increment: 1
                type: number
              RingsEnd:
                documentation:
                  range: [6800, 15000]
                  increment: 1
                type: number
              RingsAmount:
                documentation:
                  description: The total amount of individual asteroids within the rings.
                  range: [500, 1250]
                  increment: 1
                type: number
              RingsType:
                documentation: The physical material the majority of the rings are made of.
                string-union:
                  - Ice
                  - Stone
          TerrainData:
            documentation: The data about how the terrain of a planet generates.
            export: false
            type:
              Height:
                documentation:
                  length: 2
                array-type: number
              Life:
                documentation: Inherits the value of the planet's Atmosphere.
                type: boolean
              MountainDensity:
                documentation:
                  length: 2
                array-type: number
              RockDensity:
                documentation:
                  length: 2
                array-type: number
              Roughness:
                documentation:
                  length: 2
                array-type: number
              Slopes:
                documentation:
                  length: 2
                array-type: number
              Temperature:
                documentation:
                  length: 2
                array-type: number
              TreeSettings:
                type:
                  amount_of_branches:
                    documentation:
                      length: 2
                    array-type: number
                  amount_of_splits:
                    documentation:
                      length: 2
                    array-type: number
                  branch_angles:
                    documentation:
                      length: 2
                    array-type: number
                  branch_offset:
                    documentation:
                      length: 2
                    array-type: number
                  branch_size_percentage:
                    type:
                      max:
                        type:
                          width:
                            type: number
                          height:
                            type: number
                      min:
                        type:
                          width:
                            type: number
                          height:
                            type: number
                  trunk_size:
                    type:
                      max:
                        type:
                          width:
                            type: number
                          height:
                            type: number
                      min:
                        type:
                          width:
                            type: number
                          height:
                            type: number
              Water:
                documentation: Inherits the value of the planet's WaterLevel ~= nil.
                type: boolean

          PlayableRegionInfo:
            documentation: A region that can be entered by the player, say, the orbit of a planet, the planet itself or a space region.
            type:
              Coordinate:
                documentation: The coordinates of the region in the non-serialisable Coordinates format.
                type: Coordinates
              EnterLocation:
                documentation: The location where the player warps into the region.
                type: RegionEntryLocation
              Name:
                documentation: The name of the region.
                type: string
              RegionSeed:
                type: number
              RegionServer:
                type: string
              StringCoordinate:
                documentation: The coordinates of the region as a string (i.e., 0, 0, 0, 0, false).
                type: string
          OrbitRegionInfo:
            intersection:
              - type:
                  OrbitBody:
                    union:
                      - type: BlackHoleRegionInfo
                      - type: StarRegionInfo
                      - type: PlanetRegionInfo
                  RegionType:
                    string-type: Orbit
              - type: PlayableRegionInfo
          SpaceRegionInfo:
            documentation: The region info format of an empty region of space.
            intersection:
              - type:
                  RegionType:
                    string-type: Space
                  OrbitBody:
                    type: never
              - type: PlayableRegionInfo
          BlackHoleRegionInfo:
            documentation: The region info format of a black hole.
            intersection:
              - type:
                  BlackHoleSize:
                    documentation:
                      range: [500, 15000]
                      increment: 1
                    type: number
                  EnterLocation:
                    type: RegionEntryLocation
                  PlanetData:
                    type: never
                  StarSize:
                    type: never
                  StarType:
                    type: never
                  OrbitBody:
                    type: never
              - type: PlayableRegionInfo
          StarRegionInfo:
            documentation: The region info format of a star.
            intersection:
              - type:
                  EnterLocation:
                    type: RegionEntryLocation
                  StarType:
                    type: StarType
                  StarSize:
                    documentation:
                      range: [2000, 6000]
                      increment: 1
                    type: number
                  BlackHoleSize:
                    type: never
                  PlanetData:
                    type: never
                  OrbitBody:
                    type: never
              - type: PlayableRegionInfo
          PlanetRegionInfo:
            documentation: The region info format of a planet.
            intersection:
              - type:
                  PlanetData:
                    type:
                      Atmosphere:
                        type: boolean
                      DayCycleIncrement:
                        type: number
                      EnterLocation:
                        type: RegionEntryLocation
                      GenerationHeightScale:
                        type: number
                      Gravity:
                        type: number
                      PlanetMaterial:
                        string-union:
                          - Grass
                          - Sand
                          - Snow
                          - Rock1
                          - Rock2
                      PlanetType:
                        type: PlanetType
                      PrimaryColor:
                        type: RegionColor
                      Resources:
                        array-type: string
                      Rings:
                        nullable-type: RingData
                      SecondaryColor:
                        type: RegionColor
                      StartingTime:
                        type: number
                      Temperature:
                        type: number
                      TerrainConfig:
                        type: TerrainData
                  BlackHoleSize:
                    type: never
                  StarType:
                    type: never
                  StarSize:
                    type: never
                  OrbitBody:
                    type: never
              - type: PlayableRegionInfo
          CompleteRegionInfo:
            documentation: A type that demonstrates how the different region info types are returned interchangeably.
            union:
              - type: OrbitRegionInfo
              - type: SpaceRegionInfo
              - type: BlackHoleRegionInfo
              - type: StarRegionInfo
              - type: PlanetRegionInfo
        Simple Region Info:
          RegionInfo:
            union:
              - type: SimpleSpaceRegionInfo
              - type: SimplePlanetRegionInfo
              - type: SimpleBlackHoleRegionInfo
              - type: SimpleStarRegionInfo
          SimpleSpaceRegionInfo:
            type:
              BeaconCount:
                documentation: The amount of beacons in the region at the time of the scan.
                type: number
              HasRings:
                documentation: Whether the region has planetary rings.
                type: boolean
              Name:
                documentation: The name of the region.
                type: string
              SubType:
                type: never
              TidallyLocked:
                documentation: This value contains meaningless data for a space region, but is nonetheless present.
                type: boolean
              Type:
                documentation: The type of the region.
                string-type: Planet
          SimplePlanetRegionInfo:
            type:
              Temperature:
                documentation: The ambient temperature of the planet.
                type: number
              BeaconCount:
                documentation: The amount of beacons in the region at the time of the scan.
                type: number
              Color:
                documentation: The primary color of the planet.
                type: Color3
              Gravity:
                documentation: The gravity of the planet.
                type: number
              HasAtmosphere:
                documentation: Whether the planet has an atmosphere.
                type: boolean
              HasRings:
                documentation: Whether the planet has planetary rings.
                type: boolean
              Name:
                documentation: The name of the planet.
                type: string
              Resources:
                documentation: The resources that can be found on the planet.
                array-type: string
              SubType:
                documentation: The type of the planet, such as Desert, Terra, EarthLike, etc.
                type: PlanetType
              TidallyLocked:
                documentation: Whether the planet is tidally locked, meaning, whether it has a day/night cycle.
                type: boolean
              Type:
                documentation: The type of the region.
                string-type: Planet
          SimpleBlackHoleRegionInfo:
            type:
              BeaconCount:
                documentation: The amount of beacons in the region at the time of the scan.
                type: number
              Name:
                documentation: The name of the region.
                type: string
              Size:
                documentation:
                  description: The visual size of the black hole.
                  range: [500, 15000]
                  increment: 1
                type: number
              Type:
                documentation: The type of the region.
                string-type: BlackHole
          SimpleStarRegionInfo:
            type:
              BeaconCount:
                documentation: The amount of beacons in the region at the time of the scan.
                type: number
              Name:
                documentation: The name of the region.
                type: string
              Size:
                documentation:
                  description: The visual size of the star.
                  range: [2000, 6000]
                  increment: 1
                type: number
              SubType:
                documentation: The type of the star, such as Red, Orange, Yellow, etc.
                type: StarType
              Type:
                documentation: The type of the region.
                string-type: Star
      File System:
        FileSystem:
          type:
            __index:
              type: FileSystem
            chdir:
              method:
                parameters:
                  - name: pathname
                    type: string
                returns:
                  - type: string
            copy:
              method:
                parameters:
                  - name: pathnameFrom
                    type: string
                  - name: pathnameTo
                    nullable-type: string
            mkdir:
              method:
                parameters:
                  - name: pathname
                    nullable-type: string
            mklink:
              method:
                parameters:
                  - name: linkName
                    type: string
                  - name: targetName
                    nullable-type: string
            moveMerge:
              method:
                parameters:
                  - name: pathnameFrom
                    type: string
                  - name: pathnameTo
                    nullable-type: string
            readdir:
              method:
                parameters:
                  - name: pathname
                    type: string
                returns:
                  - array-type: string
            readfile:
              method:
                parameters:
                  - name: filepath
                    type: string
                returns:
                  - type: string
            rename:
              method:
                parameters:
                  - name: pathnameFrom
                    type: string
                  - name: pathnameTo
                    nullable-type: string
            unlink:
              method:
                parameters:
                  - name: pathname
                    type: string
            writefile:
              method:
                parameters:
                  - name: filepath
                    type: string
                  - name: contents
                    type: string
            pwd:
              method:
                returns:
                  - type: string

            new:
              function:
                parameters:
                  - name: source
                    nullable-union:
                      - type: FileSystemRoot
                      - type: FileSystemDirectory
                returns:
                  - type: FileSystem
            exists:
              function:
                parameters:
                  - name: pathname
                    type: string
                returns:
                  - type: boolean
            filename:
              function:
                parameters:
                  - name: pathname
                    type: string
                returns:
                  - type: string
            join:
              function:
                parameters:
                  - name: ...
                    type: string
                returns:
                  - type: string
            parentdir:
              function:
                parameters:
                  - name: pathname
                    type: string
                returns:
                  - type: string
            resolve:
              function:
                parameters:
                  - name: pathname
                    type: string
                returns:
                  - type: string
            split:
              function:
                parameters:
                  - name: pathname
                    type: string
                returns:
                  - array-type: string
            separator:
              type: string
        RawFileSystem:
          type:
            Device:
              function:
                parameters:
                  - name: device
                    type: any
                  - name: attributes
                    type: FileAttributes
                returns:
                  - type: FileSystemDevice
            Directory:
              function:
                parameters:
                  - name: contents
                    type:
                      !indexer string:
                        type: FileSystemFileNode
                  - name: attributes
                    type: FileAttributes
                  - name: readonly
                    nullable-type: boolean
                returns:
                  - type: FileSystemDirectory
            File:
              function:
                parameters:
                  - name: contents
                    type: string
                  - name: attributes
                    type: FileAttributes
                returns:
                  - type: FileSystemFile
            Link:
              function:
                parameters:
                  - name: pathname
                    type: string
                  - name: attributes
                    type: FileAttributes
                returns:
                  - type: FileSystemLink
            Root:
              function:
                parameters:
                  - name: root
                    type: FileSystemDirectory
                  - name: attributes
                    type: FileAttributes
                returns:
                  - type: FileSystemRoot
            SYSTEM_NOACCESS:
              type: FileAttributes
            SYSTEM_READONLY:
              type: FileAttributes
            read:
              method:
                parameters:
                  - name: root
                    type: FileSystemRoot
                  - name: pathname
                    type: string
                  - name: options
                    nullable-type: FileSystemOperationOptions
                returns:
                  - nullable-type: FileSystemFileNode
            readlink:
              method:
                parameters:
                  - name: root
                    type: FileSystemRoot
                  - name: link
                    type: FileSystemLink
                  - name: options
                    nullable-type: FileSystemOperationOptions
                returns:
                  - nullable-type: FileSystemFileNode
            write:
              method:
                parameters:
                  - name: root
                    type: FileSystemRoot
                  - name: pathname
                    type: string
                  - name: node
                    type: FileSystemFileNode
                  - name: options
                    nullable-type: FileSystemOperationOptions
        primitive:
          documentation: A primitive type, used to represent a primitive value stored within the file system.
          export: false
          union:
            - type: string
            - type: number
            - type: boolean
            - array-type: primitive
            - type:
                !indexer primitive:
                  type: primitive

        File Metadata:
          FileAttributes:
            type:
              metadata:
                nullable-type:
                  !indexer primitive:
                    type: primitive
              permissions:
                nullable-union:
                  - type:
                      owner:
                        union:
                          - string-type: system
                          - type: number
                      userPermissions:
                        nullable-type:
                          !indexer number:
                            type: FilePermissions
                  - type: FilePermissions
          FilePermissions:
            type:
              read:
                nullable-type: boolean
              write:
                nullable-type: boolean
          FileSystemOperationOptions:
            type:
              ignoreLinks:
                nullable-type: boolean
              ignorePermissions:
                nullable-type: boolean
        File Types:
          FileSystemRoot:
            type:
              attributes:
                nullable-type: FileAttributes
              kind:
                string-type: root
              pwd:
                type: string
              root:
                type: FileSystemDirectory
          FileSystemDevice:
            type:
              attributes:
                nullable-type: FileAttributes
              device:
                type: any
              kind:
                string-type: device
          FileSystemDirectory:
            type:
              attributes:
                nullable-type: FileAttributes
              contents:
                type:
                  !indexer string:
                    type: FileSystemFileNode
              kind:
                string-type: directory
          FileSystemFile:
            type:
              attributes:
                nullable-type: FileAttributes
              contents:
                type: string
              kind:
                string-type: file
          FileSystemLink:
            type:
              attributes:
                nullable-type: FileAttributes
              target:
                type: string
              kind:
                string-type: link
          FileSystemFileNode:
            union:
              - type: FileSystemDirectory
              - type: FileSystemFile
              - type: FileSystemLink
              - type: FileSystemRoot
              - type: FileSystemDevice
      Method & Configurable Data:
        MethodParameter:
          export: false
          type:
            Description:
              documentation: A description of the method parameter.
              nullable-type: string
            Name:
              documentation: The name of the method parameter.
              nullable-type: string
            Type:
              documentation: The type of the method parameter.
              nullable-type: string
        MethodData:
          type:
            Arguments:
              documentation: The arguments that the method takes.
              array-type: MethodParameter
            Description:
              documentation: A description of the method.
              nullable-type: string
            Name:
              documentation: The name of the method.
              type: string
            Results:
              array-type: MethodParameter
        ConfigurableData:
          type:
            DefaultValue:
              documentation: The default value of the configurable, if it has one.
              nullable-type: any
            Description:
              documentation: A description of the configurable.
              type: string
            Name:
              documentation: The name of the configurable.
              type: string
            Options:
              documentation: The options that the configurable can take.
              nullable-union:
                - array-type: string
                - array-type: number
            Type:
              documentation: The type of the configurable.
              type: string
      Modems:
        ModemRequest:
          type:
            Body:
              documentation: The body of the request, is usually a JSON string.
              nullable-type: string
            Compress:
              documentation: What type of compression to use for the request.
              nullable-type: Enum.HttpCompression
            Headers:
              documentation: The headers of the request.
              nullable-type:
                !indexer string:
                  type: any
            Method:
              documentation: The HTTP method to use for the request.
              nullable-string-union:
                - GET
                - POST
                - PUSH
                - PATCH
                - DELETE
            Url:
              documentation: The real world URL to send the request to.
              type: string
        ModemRequestResponse:
          type:
            Body:
              documentation: The body of the response, is usually a JSON string.
              type: any
            Headers:
              documentation: The headers of the response.
              type:
                !indexer string:
                  type: any
            StatusCode:
              documentation: The HTTP status code of the response.
              type: number
            StatusMessage:
              documentation: The HTTP status message of the response.
              type: string
            Success:
              documentation: Whether the request was successful or not.
              type: boolean
      Object Detector:
        ObjectDetectorHitNothing:
          documentation: The data provided by the object detector when it doesn't hit anything.
          type:
            isTerrain:
              documentation: Whether or not the hit object is terrain.
              type: true
            Distance:
              documentation: Will be greater than or equal to the ObjectDetector's MaxDistance configuration, note, there is a slight error in this value so it may be ~1e-3 less than it should be.
              type: number
            Name:
              type: never
            Position:
              type: never
            Color:
              type: never
            CFrame:
              type: never
            Size:
              type: never
        ObjectDetectorHitTerrain:
          documentation: The data provided by the object detector when it hits terrain.
          type:
            isTerrain:
              documentation: Whether or not the hit object is terrain.
              type: true
            Name:
              documentation: |-
                The name of the hit object. If it is "Collider" then the object detector is hitting an EnergyShield, it can also be a player's limb, it will not provide the name of the player, just the name of the hit limb.
              open-string-union:
                - Head
                - Torso
                - Left Arm
                - Right Arm
                - Left Leg
                - Right Leg
                - Collider
            Color:
              documentation: The Color of the hit object.
              type: Color3
            Position:
              documentation: The Position of the hit object itself, not the Position of contact between the ray and the object.
              type: Vector3
            CFrame:
              documentation: The CFrame of the hit object.
              type: CFrame
            Size:
              documentation: The Size of the hit object.
              type: Vector3
            Distance:
              documentation: The distance between the start of the ray and the contact point.
              type: number
        ObjectDetectorHitObject:
          documentation: The data provided by the object detector when it hits an object.
          type:
            isTerrain:
              documentation: Whether or not the hit object is terrain.
              type: false
            CreatedBy:
              documentation: |-
                The UserId of the person who created the part.
                Parts created by "THE DEVELOPERS" or "???" have a CreatedBy value of -1.
                It can be nil if the game doesn't know who created the part.
              nullable-type: number
            LockedBy:
              documentation: |-
                The UserId of the person who locked the part.
                Parts locked by "THE DEVELOPERS" have a LockedBy value of -2
                Parts locked by "???" have a LockedBy value of -1
                This value will be nil if the part is unlocked.
              nullable-type: number
            Name:
              documentation: The name of the hit object.
              type: string
            Color:
              documentation: The Color of the hit object.
              type: Color3
            Position:
              documentation: The Position of the hit object itself, not the Position of contact between the ray and the object.
              type: Vector3
            CFrame:
              documentation: The CFrame of the hit object.
              type: CFrame
            Size:
              documentation: The Size of the hit object.
              type: Vector3
            Distance:
              documentation: The distance between the start of the ray and the contact point.
              type: number
        ObjectDetectorHitData:
          documentation: A type that demonstrates the fact that what type the object detector returns depends on what it hits.
          union:
            - type: ObjectDetectorHitNothing
            - type: ObjectDetectorHitTerrain
            - type: ObjectDetectorHitObject
      Black Box Logs:
        RegionLogType:
          documentation: The type of a region log, used to describe what happened in the region.
          string-union:
            - HyperDrive is warping to
            - Aliens were spawned from an obelisk located at
            - Spawned
            - Death
            - ExitRegion
            - Poison
            - Irradiated
            - Suffocating
            - Freezing
            - Melting
        RegionLog:
          documentation: A log of an event that happened in a region, such as a player spawning into or warping out of the region.
          type:
            Desc:
              documentation: A description of the event that happened in the region.
              type: string
            Event:
              documentation: The type of event that happened in the region.
              type: RegionLogType
            TimeAgo:
              documentation: The time since the event happened, in seconds. Does not update in real time.
              type: number
      User Input Mediums:
        UserInputObject:
          documentation: The Waste of Space equivalent of ROBLOX's InputObject.
          type:
            KeyCode:
              documentation: Contains a Enum.KeyCode enum that describes what kind of input was used. For types of input like keyboard, this describes what key was pressed. For inputs like the mouse, this provides no additional information.
              type: Enum.KeyCode
            KeyName:
              documentation: Will be capitalised if Enum.KeyCode.LeftShift or Enum.KeyCode.RightShift was held at the time of the input.
              type: string
            UserInputState:
              documentation: Describes what the state of input this UserInputObject represents, such as whether the input has began, ended, or been changed somehow.
              type: Enum.UserInputState
            UserInputType:
              documentation: Describes what kind of input this UserInputObject represents, such as mouse, keyboard, touch or gamepad input.
              type: Enum.UserInputType
        Cursor:
          documentation: A specific user's cursor on a TouchScreen.
          type:
            Player:
              documentation: The Username of the Cursor's owner.
              type: string
            UserId:
              documentation: The UserId of the Cursor's owner.
              type: number
            Pressed:
              documentation: Whether or not the left mouse button is held.
              type: boolean
            X:
              documentation: The X position of the Cursor relative to the top left corner of the display.
              type: number
            Y:
              documentation: The Y position of the Cursor relative to the top left corner of the display.
              type: number
        AR:
          ARInput:
            documentation: This class is obtained through ARCursor.UserInput and provides information about the user's input.
            export: false
            type:
              Gamepad:
                documentation:
                  description: A dictionary of Enum.UserInputType.GamepadX keys to an array of InputObjects representing the current state of all available inputs for said gamepad as values.
                  source: https://discord.com/channels/616089055532417036/823313507167502336/1038621144397381692
                type:
                  !indexer Enum.UserInputType:
                    array-type: InputObject
              GamepadEnabled:
                documentation: This property describes whether the device being used by a user has an available gamepad. If gamepads are available.
                type: boolean
              Keyboard:
                documentation:
                  description: An array of InputObjects associated with the keys currently being pressed.
                  source: https://create.roblox.com/docs/reference/engine/classes/UserInputService#GetKeysPressed
                array-type: InputObject
              KeyboardEnabled:
                documentation:
                  description: This property describes whether the user's device has a keyboard available. This property is true when the user's device has an available keyboard, and false when it does not.
                  source: https://create.roblox.com/docs/reference/engine/classes/UserInputService#KeyboardEnabled
                type: boolean
              LastInputType:
                documentation:
                  description: The Enum.UserInputType associated with the user's most recent input.
                  source: https://create.roblox.com/docs/reference/engine/classes/UserInputService#GetLastInputType
                type: Enum.UserInputType
              Mouse:
                documentation:
                  description: An array of InputObjects corresponding to the mouse buttons currently being currently held down.
                  source: https://create.roblox.com/docs/reference/engine/classes/UserInputService#GetMouseButtonsPressed
                array-type: InputObject
              TouchEnabled:
                documentation:
                  description: This property describes whether the user's current device has a touch screen available.
                  source: https://create.roblox.com/docs/reference/engine/classes/UserInputService#TouchEnabled
                type: boolean
              VREnabled:
                documentation:
                  description: This property describes whether the user is using a virtual reality (VR) device.
                  source: https://create.roblox.com/docs/reference/engine/classes/UserInputService#VREnabled
                type: boolean
          ARCamera:
            documentation: The player's camera, used for AR devices.
            type:
              CFrame:
                documentation:
                  source: https://create.roblox.com/docs/reference/engine/classes/Camera#CFrame
                readonly: true
                type: CFrame
              CameraType:
                documentation:
                  source: https://create.roblox.com/docs/reference/engine/classes/Camera#CameraType
                readonly: true
                type: Enum.CameraType
              DiagonalFieldOfView:
                documentation:
                  source: https://create.roblox.com/docs/reference/engine/classes/Camera#DiagonalFieldOfView
                readonly: true
                type: number
              FieldOfView:
                documentation:
                  source: https://create.roblox.com/docs/reference/engine/classes/Camera#FieldOfView
                readonly: true
                type: number
              FieldOfViewMode:
                documentation:
                  source: https://create.roblox.com/docs/reference/engine/classes/Camera#FieldOfViewMode
                readonly: true
                type: Enum.FieldOfViewMode
              Focus:
                documentation:
                  source: https://create.roblox.com/docs/reference/engine/classes/Camera#Focus
                readonly: true
                type: CFrame
              HeadScale:
                documentation:
                  source: https://create.roblox.com/docs/reference/engine/classes/Camera#HeadScale
                readonly: true
                type: number
              MaxAxisFieldOfView:
                documentation:
                  source: https://create.roblox.com/docs/reference/engine/classes/Camera#MaxAxisFieldOfView
                readonly: true
                type: number
              NearPlaneZ:
                documentation:
                  source: https://create.roblox.com/docs/reference/engine/classes/Camera#NearPlaneZ
                readonly: true
                type: number
              RenderCFrame:
                documentation:
                  description: The CFrame the camera is rendered at (for VR).
                  source: https://create.roblox.com/docs/reference/engine/classes/Camera#RenderCFrame
                readonly: true
                type: CFrame
              ViewportSize:
                documentation:
                  description: The size of the camera viewport.
                  source: https://create.roblox.com/docs/reference/engine/classes/Camera#ViewportSize
                readonly: true
                type: Vector2
              ViewportSizeUI:
                documentation: The size of the camera viewport (2D UI context)
                readonly: true
                type: Vector2
          ARCursor:
            documentation: A cursor that represents a player's mouse in the 3D world. For use with AR devices.
            type:
              Player:
                documentation: The name of the player the cursor is for.
                type: string
              UserId:
                documentation: The user ID of the player.
                type: number
              Origin:
                documentation: A CFrame indicating where the mouse originated from. It is positioned at the camera and oriented toward the mouse's 3D position.
                type: Vector3
              UnitRay:
                documentation: A Ray directed toward the mouse's position in 3D space. It originates from the CFrame of the camera. Like all unit rays, it has a magnitude of 1.
                type: Ray
              WorldPosition:
                documentation: The world position of the mouse cursor.
                type: Vector3
              Target:
                documentation: The PartObject that is being hovered over. You can call methods on this part!
                type: PilotObject
              Pressed:
                documentation: A boolean for whether or not the mouse button is pressed.
                type: boolean
              UserInput:
                documentation: A table of input data (would suggest printing with repr) - Contains Mouse, Keyboard, Gamepad, VREnabled, KeyboardEnabled, TouchEnabled, GamepadEnabled, and LastInputType.
                type: ARInput
              ScreenPosition:
                documentation: The XY screen position of the mouse cursor.
                type: Vector2
              UserCFrames:
                documentation: Contains Head, LeftHand, and RightHand CFrames for VR.
                type:
                  RightHand:
                    type: CFrame
                  LeftHand:
                    type: CFrame
                  Head:
                    type: CFrame
              X:
                documentation: The X position of the cursor on the screen.
                type: number
              Y:
                documentation: The Y position of the cursor on the screen.
                type: number
              VirtualWorldPosition:
                documentation: The world position of the mouse cursor in the virtual 3D space.
                type: Vector3
              Hit:
                documentation: The CFrame the user's mouse is located at.
                type: CFrame
              VirtualTarget:
                documentation: The hovered part in the virtual 3D space.
                type: BasePart
              MouseDelta:
                documentation: The current change in position of the mouse for the frame that was sent.
                type: Vector2
              Camera:
                documentation: The camera of the player associated with the mouse.
                type: ARCamera
      String Enums:
        General:
          ComponentName:
            documentation: A name of a Component object.
            string-union:
              - Blade
              - KeyButton
              - ClickButton
              - Hull
              - Door
          TemperatureUnit:
            documentation: A unit of temperature, i.e., fahrenheit, celsius, or kelvin.
            string-union:
              - K
              - F
              - C
          Permission:
            documentation: Different types of permissions that can be granted to players.
            string-union:
              - Modify
              - Unlock
              - Paint
              - Configure
              - Interact
              - Attach
          CanvasContext:
            documentation: The context of different canvases, for use in AR (where you can have 2D interfaces and 3D objects at once)
            string-union:
              - 2D
              - 3D
        Configuration:
          PolysiliconMode:
            documentation: The mode of polysilicon, used in the Polysilicon part.
            string-union:
              - Activate
              - Deactivate
              - FlipFlop
          BladeShape:
            documentation: The shape of the blade, used in the Blade part.
            string-union:
              - Block
              - Spheroid
              - Cone
          RemoteControlMode:
            documentation: The mode of the remote control, used in the RemoteControl part.
            string-union:
              - EmitFromTarget
              - SendDirectly
          PlayerLimb:
            documentation: The limb of the player, used in the Player part.
            string-union:
              - Head
              - Torso
              - Left Arm
              - Right Arm
              - Left Leg
              - Right Leg
              - HumanoidRootPart
          VehicleSeatMode:
            documentation: The mode of the vehicle seat, used in the VehicleSeat part.
            string-union:
              - Horizontal
              - Yaw/Pitch
              - Full
              - Mouse
          HandleTriggerMode:
            documentation: The mode of the handle trigger, used in the Handle part.
            string-union:
              - MouseDown
              - MouseUp
              - Both
          HandleSwingMode:
            documentation: The mode of the handle swing, used in the Handle part.
            string-union:
              - None
              - Swing
              - Point
          RelayMode:
            documentation: The mode of the relay, used in the Relay part.
            string-union:
              - Send
              - Receive
          InstrumentType:
            documentation: The type of instrument reading desired, used in the Instrument part.
            string-union:
              - Speed
              - AngularSpeed
              - Temperature
              - Time
              - Power
              - Size
              - Position
              - TemperatureF
              - Orientation
              - TemperatureC
              - AirTemperatureF
              - AirTemperatureC

      Network:
        documentation:
          description: A network object.
          code-sample: |-
            -- Handles an individual reactor subnet
            local function handleReactor(network: Network)
                -- Get all of the relevant parts relative to the reactor subnet
                local reactor = network:GetPart("Reactor")
                local polysilicon = network:GetPart("Polysilicon")
                local dispenser = network:GetPart("Dispenser")

                -- stuff
            end

            -- Handles all reactors on a subnet full of reactor modules
            local function handleReactors(network: Network)
                for _, port in network:GetPorts() do
                    -- Handle the reactor on the subnet
                    handleReactor(network:GetSubnet(port))
                end
            end

            -- Handles the reactor modules on Port 1
            handleReactors(Network:GetSubnet(1))
        type:
          Clone:
          GetHistory:
            documentation: Returns a list of all objects that have been traversed by the network. Note this makes a copy of the internal state and is therefore modifying it does not affect the network itself whatsoever.
            method:
              returns:
                - name: history
                  type:
                    !indexer PilotObject:
                      type: true
          GetPart:
            documentation:
              code-sample: |-
                -- Get a `Screen` from any port
                local screen = Network:GetPart("Screen")
              description: Gets a part of the specified type from any connected ports.
            hydrator:
              name: get-part
              port: false
              multiple: false
              method: true
            method:
              parameters:
                - name: className
                  nullable-type: string
              returns:
                - name: object
                  nullable-type: PilotObject
          GetPartFromPort:
            documentation:
              code-sample: |-
                -- Get a `TouchScreen` from port 1
                local touchScreen = Network:GetPartFromPort(1, "TouchScreen")
              description: Gets a part of the specified type from any port of the specified ID.
            hydrator:
              name: get-part
              port: true
              multiple: false
              method: true
            method:
              parameters:
                - name: port
                  nullable-type: PortLike
                - name: className
                  nullable-type: string
              returns:
                - name: object
                  nullable-type: PilotObject
          GetParts:
            documentation:
              code-sample: |-
                -- Get all `Switch`es connected to any port
                local switches = Network:GetParts("Switch")
              description: Gets all the parts of the specified type that are directly connected to the microcontroller (they must not be on a port whatsoever, they maybe on an ethernet cable that directly touches the microcontroller, though).
            hydrator:
              name: get-part
              port: false
              multiple: true
              method: true
            method:
              parameters:
                - name: className
                  nullable-type: string
              returns:
                - name: objects
                  array-type: PilotObject
          GetPartsFromPort:
            documentation:
              code-sample: |-
                -- Get all `Light`s from port 1
                local lights = Network:GetPartsFromPort(1, "Light")
              description: Gets all the parts of the specified type from any port of the specified ID.
            hydrator:
              name: get-part
              port: true
              multiple: true
              method: true
            method:
              parameters:
                - name: port
                  nullable-type: PortLike
                - name: className
                  nullable-type: string
              returns:
                - name: objects
                  array-type: PilotObject
          GetPort:
            method:
              parameters:
                - name: port
                  nullable-type: PortLike
              returns:
                - name: objects
                  type: Port
          GetPorts:
            method:
              parameters:
                - name: port
                  nullable-type: PortLike
              returns:
                - name: objects
                  array-type: Port
          GetSubnet:
            documentation: Creates a new network with its root set to the specified Port.
            method:
              parameters:
                - name: port
                  nullable-type: PortLike
              returns:
                - name: subnet
                  type: Network
          __index:
            type: Network
          new:
            documentation:
              warning: This function is volatile and may be subject to change as it is primarily for internal use.
            function:
              parameters:
                - name: rootParts
                  documentation: An array of objects to be the roots of the network
                  array-type: PilotObject
                - name: parentNetwork
                  documentation: You can use this to make a new network that will never explore along the path that was taken by the network you pass.
                  nullable-type: Network
              returns:
                - name: network
                  type: Network

    globals:
      Functions:
        Miscellaneous:
          Beep:
            documentation:
              code-sample: |-
                -- Beep!
                Beep(1)
              description: Produces a beep sound using a triangle wave.
              sources:
                - https://discord.com/channels/616089055532417036/823313507167502336/1228725037448564808
            function:
              parameters:
                - name: frequency
                  nullable-type: number
          GetCPUTime:
            documentation:
              deprecated: Use pilot.getCPUTime instead.
              description: Returns the current elapsed CPU time.
            function:
              returns:
                - type: number
          logError:
            documentation:
              description: Logs an error in the output, without actually throwing an error.
              sources:
                - https://discord.com/channels/616089055532417036/823313507167502336/1037962036149235743
            function:
              parameters:
                - name: message
                  type: string
                - name: level
                  nullable-type: number
        Part Getters:
          GetPart:
            documentation:
              code-sample: |-
                -- Get a `Screen` from any port
                local screen = GetPart("Screen")
              description: Gets a part of the specified type from any connected ports.
              deprecated: Use Network:GetPart() instead.
            hydrator:
              name: get-part
              port: false
              multiple: false
          GetPartFromPort:
            documentation:
              code-sample: |-
                -- Get a `TouchScreen` from port 1
                local touchScreen = GetPartFromPort(1, "TouchScreen")
              description: Gets a part of the specified type from any port of the specified ID.
              deprecated: Use Network:GetPartFromPort() instead.
            hydrator:
              name: get-part
              port: true
              multiple: false
          GetParts:
            documentation:
              code-sample: |-
                -- Get all `Switch`es connected to any port
                local switches = GetParts("Switch")
              description: Gets all the parts of the specified type from any connected ports.
              deprecated: Use Network:GetParts() instead.
            hydrator:
              name: get-part
              port: false
              multiple: true
          GetPartsFromPort:
            documentation:
              code-sample: |-
                -- Get all `Light`s from port 1
                local lights = GetPartsFromPort(1, "Light")
              description: Gets all the parts of the specified type from any port of the specified ID.
              deprecated: Use Network:GetPartsFromPort() instead.
            hydrator:
              name: get-part
              port: true
              multiple: true
        Ports:
          GetPort:
            documentation:
              code-sample: |-
                -- Get port with an ID of 1
                local port = GetPort(1)
              description: Gets the connected port of the specified ID.
              deprecated: Use Network:GetPort() instead.
            function:
              parameters:
                - name: id
                  nullable-type: number
              returns:
                - nullable-type: Port
          GetPorts:
            documentation:
              code-sample: |-
                -- Get all ports, no matter the ID
                local ports = GetPort()
              description: Gets all the connected ports of the specified ID.
              deprecated: Use Network:GetPorts() instead.
            function:
              parameters:
                - name: id
                  nullable-type: number
              returns:
                - array-type: Port
          TriggerPort:
            documentation: Triggers the specified port.
            function:
              parameters:
                - name: port
                  type: PortLike
        JSON:
          JSONDecode:
            documentation:
              code-sample: |-
                -- Decode a JSON string
                local jsonString = '{"name": "example", "value": 42}'
                print(repr(JSONDecode(jsonString))) -- { name = "example", value = 42 }
              description: Decodes JSON.
              source: https://create.roblox.com/docs/reference/engine/classes/HttpService#JSONDecode
            function:
              parameters:
                - name: data
                  type: string
              returns:
                - type: JSON
          JSONEncode:
            documentation:
              code-sample: |-
                local data = { name = "example", value = 42 }
                print(JSONEncode(data)) -- {"name":"example","value":42}"
              description: Encodes JSON. Proxy for HttpService:JSONEncode.
              source: https://create.roblox.com/docs/reference/engine/classes/HttpService#JSONEncode
            function:
              parameters:
                - name: data
                  type: JSON
              returns:
                - type: string
      Values:
        Miscellaneous:
          Network:
            type: Network
          pilot:
            documentation: Provides functions for accessing/manipulating information about threads such as permissions, ownership, and interrupts.
            type:
              setTimeout:
                documentation: Sets the CPU timeout of the given thread. Requires ring -1 or lower. This will not let you exceed the game's timeout, but will let you set lower timeouts. This has to do with whatever thread happens to be actively running. Currently there is not a way for you to recover from a timeout, so you should use .setInterrupt to handle your own custom timeouts.
                function:
                  parameters:
                    - name: timeout
                      documentation: The CPU timeout in seconds.
                      nullable-type: number
                    - name: thread
                      documentation: The thread to apply the timeout to.
                      nullable-type: thread
              hasRing:
                documentation: Checks if the target (or running) thread has the specified ring privilege or lower.
                function:
                  parameters:
                    - name: ring
                      documentation: The ring to check for.
                      type: number
                    - name: thread
                      documentation: The thread to check for the ring on. If not specified, the running thread will be used.
                      nullable-type: thread
                  returns:
                    - type: boolean
              setInterrupt:
                documentation: Will repeatedly call the interrupt every period CPU time on a valid resumption time (ignores yields/waits). Returns a function which deletes the interrupt.
                function:
                  parameters:
                    - name: period
                      type: number
                    - name: callback
                      function: {}
                  returns:
                    - function: {}
              getTimeout:
                documentation: Gets the current CPU timeout, or the CPU timeout that the given thread will obey.
                function:
                  parameters:
                    - name: thread
                      nullable-type: thread
                  returns:
                    - type: number
              setRing:
                documentation: Sets the ring of the target (or running) thread. You can use .saveRing to store the current ring so you can escalate again later.
                function:
                  parameters:
                    - name: ring
                      type: number
                    - name: thread
                      nullable-type: thread
              claimThread:
                documentation: Sets the thread's parent to the running thread. The target thread must be part of the sandbox and may not exist on a lower ring otherwise nothing will happen.
                function:
                  parameters:
                    - name: thread
                      type: thread
                  returns:
                    - type: boolean
              getCPUTime:
                documentation: Returns the current elapsed CPU time.
                function:
                  returns:
                    - type: number
              getRing:
                documentation: Gets the ring of the target (or running) thread.
                function:
                  parameters:
                    - name: thread
                      nullable-type: thread
                  returns:
                    - type: number
              getThreadParent:
                documentation: Gets the parent of the target (or running) thread. The parent thread must be part of the sandbox and may not exist on a lower ring otherwise nil will be returned.
                function:
                  parameters:
                    - name: thread
                      nullable-type: thread
                  returns:
                    - nullable-type: thread
              saveRing:
                documentation: Creates a function which elevates the caller to the specified (or current) ring regardless of its privilege. You can use this to de-escalate, spawn a new thread, and then re-escalate your thread after. Requires ring 0 or lower.
                function:
                  parameters:
                    - name: ring
                      nullable-type: number
                  returns:
                    - function: {}
        Microcontroller:
          Microcontroller:
            documentation: The microcontroller object the program is running in.
            type: Microcontroller
          SandboxID:
            documentation: The GUID of the microcontroller the program is running in.
            type: string
          SandboxRunID:
            documentation: A GUID for the current running program, it is (re)generated when the microcontroller is turned on.
            type: string
        FileSystem:
          FileSystem:
            type: FileSystem
          RawFileSystem:
            type: RawFileSystem

    classes:
      PilotObject:
        documentation: The base object that all other objects inherit from.
        hydrator:
          name: wos-object
          abstract: true
          events:
            Destroying:
              documentation: Fires when the object is destroyed.
          methods:
            CanInstallComponent:
              documentation: Checks if the specified component can be installed on the object.
              parameters:
                - name: componentName
                  documentation: The name of the component to check whether it is installable or not.
                  nullable-type: ComponentName
              returns:
                - name: canInstall
                  documentation: Whether or not the component can be installed on the object.
                  type: boolean
            CanUninstallComponent:
              documentation: Checks if the specified component can be uninstalled from the object.
              parameters:
                - name: componentName
                  documentation: The name of the component to check whether it is uninstallable or not.
                  nullable-type: ComponentName
              returns:
                - name: canUninstall
                  documentation: Whether or not the component can be uninstalled from the object.
                  type: boolean
            Click:
              documentation: Emulates a user clicking on the object, seems dysfunctional in some cases, (i.e., ClickButton components do not get triggered).
            GetComponent:
              documentation: Gets the component of the specified type for the object.
              parameters:
                - name: componentName
                  documentation: The name of the component to get.
                  type: ComponentName
              returns:
                - name: component
                  documentation: The component of the requested type for the object, or nil if it does not have the component.
                  nullable-type: Component
            GetConfigurables:
              documentation: Gets information about the configurables of the object.
              returns:
                - name: configurables
                  documentation: An dictionary of configurable names to data about that configurable.
                  type:
                    !indexer string:
                      type: ConfigurableData
            GetEvents:
              documentation: Gets information about the events of the object.
              returns:
                - name: events
                  documentation: An array of event names.
                  array-type: string
            GetMethods:
              documentation: Gets information about the methods of the object.
              returns:
                - name: methods
                  documentation: An dictionary of method names to data about that method.
                  type:
                    !indexer string:
                      type: MethodData
            GetNameOfOwnerAsync:
              documentation:
                description: Returns the username of the owner of the part, if the part is locked, otherwise returns the username of the creator of the part.
                deprecated: Use require("players"):GetUsername instead.
              returns:
                - name: ownerUsername
                  documentation: The username of the 'owner' of the part.
                  nullable-type: string
            GetOwnerId:
              documentation: Returns who locked the part if the part is locked, otherwise returns who created the part.
              returns:
                - name: ownerId
                  documentation: The UserId of the 'owner' of the part.
                  nullable-type: number
            GetShape:
              documentation: Gets the shape of the part.
              returns:
                - name: shape
                  documentation: The shape of the part, or nil if the part is a block.
                  nullable-type: string
            GetDurability:
              documentation:
                description: Gets the maximum (not current) durability of the object.
                deprecated: Use PilotObject.Durability instead.
              returns:
                - name: durability
                  documentation: The maximum durability of the object.
                  type: number
            GetColor:
              documentation:
                description: Gets the color of the object.
                deprecated: Use PilotObject.Color instead.
              returns:
                - name: color
                  documentation: The color of the object.
                  type: Color3
            GetSize:
              documentation:
                description: Gets the size of the object.
                deprecated: Use PilotObject.Size instead.
              returns:
                - name: size
                  documentation: The size of the object.
                  type: Vector3
            GetTemperature:
              documentation:
                description: Gets the temperature of the object.
                deprecated: Use PilotObject.Temperature instead.
              returns:
                - name: temperature
                  documentation: The temperature of the object.
                  type: number
            HasComponent:
              documentation: Returns a boolean as to whether or not the object has the specified component.
              returns:
                - name: hasComponent
                  documentation: Whether or not the object has the specified component.
                  type: boolean
            HasPermission:
              documentation: Returns a boolean as to whether or not the microcontroller has permission to do the specified action.
              parameters:
                - name: permission
                  documentation: The permission to check for.
                  type: Permission
              returns:
                - name: hasPermission
                  documentation: Whether or not the microcontroller has the specified permission.
                  type: boolean
            IsDestroyed:
              documentation: Returns a boolean as to whether or not the object is destroyed.
              returns:
                - name: isDestroyed
                  documentation: Whether or not the object is destroyed.
                  type: boolean
            IsGrounded:
              documentation: Tells you if the part is grounded, meaning it does it have physics. If it is attached to terrain or an anchor for example, it will be grounded.
              returns:
                - name: isGrounded
                  documentation: Whether or not the object is grounded.
                  type: boolean
            ListComponents:
              documentation: Lists all the components installed on the object.
              returns:
                - name: components
                  documentation: An array of the names of the components installed on the object.
                  array-type: string
            Trigger:
              documentation: Triggers the object.
          properties:
            ClassName:
              documentation: A string representing the type of the object.
              type: string
            GUID:
              documentation: A unique identifier for the object, useful for comparing different references to the same object.
              type: string
            CFrame:
              documentation:
                description: The current CFrame of the object.
                source: https://create.roblox.com/docs/reference/engine/classes/BasePart#CFrame
              type: CFrame
            Position:
              documentation:
                description: The current position of the object.
                source: https://create.roblox.com/docs/reference/engine/classes/BasePart#Position
              type: Vector3
            Orientation:
              documentation:
                description: The current orientation of the object.
                source: https://create.roblox.com/docs/reference/engine/classes/BasePart#Orientation
              type: Vector3
            AssemblyCenterOfMass:
              documentation:
                description: The center of mass of the object's assembly.
                source: https://create.roblox.com/docs/reference/engine/classes/BasePart#AssemblyCenterOfMass
              type: Vector3
            AssemblyLinearVelocity:
              documentation:
                description: The velocity of the object's assembly.
                source: https://create.roblox.com/docs/reference/engine/classes/BasePart#AssemblyLinearVelocity
              type: Vector3
            AssemblyMass:
              documentation:
                description: The total mass of the object's assembly.
                source: https://create.roblox.com/docs/reference/engine/classes/BasePart#AssemblyMas
              type: number
            Mass:
              documentation:
                description: The mass of the object.
                source: https://create.roblox.com/docs/reference/engine/classes/BasePart#Mass
              type: number
            Anchored:
              documentation:
                description: Whether or not the object is anchored.
                source: https://create.roblox.com/docs/reference/engine/classes/BasePart#Anchored
              type: boolean
            Health:
              documentation:
                description: The health of the object as a percentage (between 0 and 1) of the total durability.
                range: [0, 1]
              type: number
            Durability:
              documentation:
                description: The total durability of the object.
                code-sample: |-
                  -- It can alternatively be calculated like so:
                  local partdata = require("partdata")
                  local partInfo = assert(partdata.Parts[part.ClassName], "unknown part")

                  local baseVolume = partInfo.BaseSize[1] * partInfo.BaseSize[2] * partInfo.BaseSize[3]
                  local volume = part.Size.X * part.Size.Y * part.Size.Z

                  local durability = ( volume / baseVolume ) ^ ( 1 / 3 ) * partInfo.BaseDurability
              type: number
            Temperature:
              documentation: The current [temperature](https://en.wikipedia.org/wiki/Temperature) of the object, this is different from the heat.
              type: number
            Heat:
              documentation: The current [heat](https://en.wikipedia.org/wiki/Heat) of the object, this is different from the temperature.
              type: number
            Color:
              documentation:
                description: The current color of the object.
                source: https://create.roblox.com/docs/reference/engine/classes/BasePart#Color
              type: Color3
            Size:
              documentation:
                description: The current size of the object.
                source: https://create.roblox.com/docs/reference/engine/classes/BasePart#Size
              type: Vector3
            Material:
              documentation:
                description: The current material of the object as an [Enum.Material](https://create.roblox.com/docs/reference/engine/enums/Material).
                source: https://create.roblox.com/docs/reference/engine/classes/BasePart#Material
              type: Enum.Material
            PartLocked:
              documentation: The UserId of the user who locked the part. Will be nil if the part is unlocked.
              nullable-type: number
            CreatedBy:
              documentation: The UserId of the user who created the part. Will be nil if the part was created by a constructor.
              nullable-type: number

      ARController:
        documentation:
          description: |-
            Like a TouchScreen, but for your actual screen.
            Has the capability to display augmented 3D objects and visuals in a virtualized world.
            Click to equip/unequip. Output may only be displayed from one ARController at a time.
          categories: [Logic, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetCanvas:
              overloads:
                - documentation: Returns the parent container of all the AR controller's 2D content.
                  parameters:
                    - name: context
                      nullable-string-type: 2D
                  returns:
                    - name: canvas
                      type: Folder
                - documentation: Returns the parent container of all the AR controller's 3D content.
                  parameters:
                    - name: context
                      string-type: 3D
                  returns:
                    - name: canvas
                      type: WorldModel
            ClearElements:
              documentation: Clears all objects that are descendants of the screen.
              parameters:
                - name: context
                  type: CanvasContext
            ClearElements3D:
              documentation: Clears 3D elements.
            CreateElement:
              documentation:
                description: Creates an element of the specified class name with the specified properties.
                code-sample: ar-create-element.luau
              parameters:
                - name: className
                  type: string
                - name: properties
                  type:
                    !indexer string:
                      type: any
                - name: context
                  type: CanvasContext
              returns:
                - name: element
                  type: Instance
            CreateElement3D:
              documentation: Creates a 3D part instance in the player's viewport.
              parameters:
                - name: shape
                  string-union:
                    - Ball
                    - Block
                    - Cylinder
                    - Wedge
                    - CornerWedge
                - name: properties
                  type:
                    !indexer string:
                      type: any
              returns:
                - name: part
                  type: Part
            GetCursors:
              documentation: Gets a dictionary of player UserIds to their cursors.
              returns:
                - name: cursors
                  type:
                    !indexer number:
                      type: ARCursor
            GetCursor:
              documentation: Returns the part owner's cursor, or, alternatively, any other player's cursor if the owner does not have a cursor (this is considered the primary user).
              returns:
                - name: cursor
                  type: ARCursor
          configurables:
            Transparency:
              type: number
              documentation:
                description: The transparency of the AR display.
                range: [0, 1]
                increment: 0.1
          events:
            CursorPressed:
              documentation: Fired when a player left clicks.
              parameters:
                - name: cursor
                  type: ARCursor
            OnClick:
              documentation: Fires when the object is clicked.
              parameters:
                - name: clickerId
                  type: number
            CursorMoved:
              documentation: Fired when a player's cursor updates.
              parameters:
                - name: cursor
                  type: ARCursor
            UserInput: *UserInputEvent
            CursorReleased:
              documentation: Fired when a player releases the left click button.
              parameters:
                - name: cursor
                  type: ARCursor
            KeyPressed: *KeyPressedEvent
            Configured: *ConfiguredEvent
      ARGlasses:
        documentation:
          description: |-
            Like a handheld Microcontroller, with a TouchScreen for your actual screen.
            Has the capability to display augmented 3D objects and visuals in a virtualized world.
          categories: [Tools, Electrical, Craftable, Spawnable]
        hydrator:
          name: wos-object
          extends: [ARController, Microcontroller, Antenna, Router, Tool]

      # Has both methods and events, is configurable, and is both craftable and spawnable
      Assembler:
        documentation:
          description: Assembles items as configured when the structure is supplied with the required power and resources.
          categories: [Starter, Electrical, Spawnable, Craftable]
          sources:
            - https://discord.com/channels/616089055532417036/1066536049876148414/1067544760052617327
        hydrator:
          name: wos-object
          methods:
            CalculateCraftingRecipe:
              documentation: Returns the ingredients (including Power), products, and time cost of a specified crafting operation.
              parameters:
                - name: items
                  union:
                    - array-type: string
                    - type:
                        !indexer string:
                          type: number
                  documentation: A list of parts or a dictionary of each part with how many of said part to craft.
              returns:
                - name: recipe
                  type:
                    Power:
                      type: number
                    !indexer string:
                      type: number
                  documentation: Information relating to the crafting recipe.
            CraftItems:
              documentation:
                description: Will craft the specified set of items.
                deprecated: true
              parameters:
                - name: items
                  union:
                    - array-type: string
                    - type:
                        !indexer string:
                          type: number
            GetRecipe:
              documentation: Returns the resource(s) required to craft the given item, or nil if the item doesn't have a recipe/doesn't exist.
              parameters:
                - name: itemName
                  type: string
              returns:
                - name: recipe
                  type:
                    !indexer string:
                      type: number
            Craft:
              documentation: |-
                Will pause and craft the desired item at the next available point, returning a boolean representing whether or not the item was successfully crafted.

                This uses a queue under the hood, the first thing to call it gets to craft first, and then finally the assembler performs its configured craft if nothing else is queued.
              parameters:
                - name: itemName
                  type: string
              returns:
                - name: success
                  type: boolean
          events:
            Configured: *ConfiguredEvent
            Loop: *LoopEvent
          configurables:
            Assemble:
              documentation: The name of the object to be assembled.
              type: string
      Constructor:
        documentation:
          description: |-
            Similar to an assembler, but constructs a model when triggered. However, the Constructor must be supplied with the correct materials for a model.
            For example, a car model requiring 50 iron and 30 wires will need a bin attached with 50 iron, a bin attached with 30 wires and 100 power.
            You can find out how many materials you need through the CalculateModelRecipe method.
            Has a 60 second cooldown to prevent model spamming.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            CalculateModelRecipe:
              documentation: Returns the required resources to construct the specified model.
              parameters:
                - name: modelCode
                  type: string
                  documentation: If left unspecified it will utilise the ModelCode configurable.
              returns:
                - name: materials
                  type:
                    !indexer string:
                      type: number
                  documentation: The materials required to generate the model.
          events:
            Configured: *ConfiguredEvent
            Triggered: *TriggeredEvent
          configurables:
            ModelCode:
              documentation: The model data of the model to be created by the Constructor.
              type: string
            Autolock:
              documentation: Determines if the created model should be locked by the owner of the Constructor.
              type: boolean
            RelativeToConstructor:
              documentation: Determines if the created model should be loaded in relative to the orientation of the Constructor.
              type: boolean
      Coupler:
        documentation:
          description: Will connect to nearby couplers with matching CouplerIDs when activated by Polysilicon. Deactivating via Polysilicon will detach two couplers. Repeatedly emits trigger signals when it is able to connect with another coupler of the same ID.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            IsCoupled:
              documentation: Returns whether or not the coupler is currently attached to another coupler.
              returns:
                - name: isCoupled
                  documentation: Whether or not the coupler is currently attached to another coupler.
                  type: boolean
            GetAttachedCoupler:
              documentation: Returns a reference to the current connected coupler, will return nil if no other coupler is connected.
              returns:
                - name: otherCoupler
                  documentation: The coupler that this coupler is currently attached to, or nil if it is not attached to any other coupler.
                  nullable-type: Coupler
          events:
            Couple:
              documentation: Fires when the coupler is attached to another coupler.
            Decouple:
              documentation: Fires when the coupler is detached from another coupler.
          configurables:
            CouplerID:
              documentation:
                description: The ID of this coupler.
                default: C1
                max-length: 64
              type: string
            AutoTrigger:
              documentation: Whether or not the coupler should emit trigger signals while in range of another valid coupler.
              type: boolean
      Dispenser:
        documentation:
          description: Releases items from attached bins.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            Dispense:
              documentation: Dispenses a single item instantly.
          events:
            Configured: *ConfiguredEvent
            Loop: *LoopEvent
          configurables:
            Filter:
              documentation:
                description: Which kinds of resources to drop, separated by commas.
                max-length: 256
              type: string
      EnergyShield:
        documentation:
          description: |-
            Generates a forcefield protecting its interior from energy-based weapons such as Lasers and PlasmaCannons, and offers full protection from Warhead explosions.
            An EnergyShield has a few sets of properties that you can fine tune to create a balanced shield.

            ShieldRadius - The size of the entire shield. This will exponentially consume more power the higher the radius is.
            RegenerationSpeed - Scale from 1 to 10 on how fast the shield will regenerate. The shield will not regenerate while unpowered.
            ShieldStrength - Scale from 1 to 10 on how much the shield can endure.

            RegenerationSpeed and ShieldStrength combined must not exceed 11.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetShieldHealth:
              documentation: Gets the current health of the shield as a percentage between 0 and 1.
              returns:
                - name: health
                  type: number
                  documentation:
                    description: The current health of the shield as a percentage between 0 and 1.
                    range: [0, 1]
            CalculateCost:
              documentation: Calculates the power cost of the shield based on its radius.
              parameters:
                - name: radius
                  documentation: |-
                    The radius of the theoretical energy shield you want to calculate the power cost for.
                    If nil, will default to the EnergyShield.Radius configuration.
                    The parameter is not bound by the constraints of EnergyShield.Radius and will accept any input.
                  nullable-type: number
              returns:
                - name: cost
                  documentation: The Power cost per game tick to keep the EnergyShield running.
                  type: number
            SetColor: *SetColorMethod
          events:
            Configured: *ConfiguredEvent
            Loop: *LoopEvent
          configurables:
            ShieldRadius:
              documentation:
                description: The size of the entire shield. The shield exponentially consumes more power the higher this is.
                default: 100
                range: [50, 1000]
              type: number
            RegenerationSpeed:
              documentation:
                description: Determines how fast the shield regenerates after being hit.
                default: 5
                range: [1, 10]
              type: number
            ShieldStrength:
              documentation:
                description: Determines the shield's resistance to damage.
                default: 5
                range: [1, 10]
              type: number
      Faucet:
        documentation:
          description: Releases liquids and gases from Tanks.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            Dispense:
              documentation: Dispenses a single item instantly.
          events:
            Configured: *ConfiguredEvent
            Loop: *LoopEvent
          configurables:
            Filter:
              documentation:
                description: Which kinds of resources to drop, separated by commas.
                max-length: 256
              type: string
      Gyro:
        documentation:
          description: |-
            Stabilizes vehicles and structures by pointing upwards. Useful for mechs or orientating structures to the correct rotation. Has a maximum range of 75000 studss. The gyro can also be configured to seek objects and players.

            When powered, the gyro will follow its seek commands that can be configured using hammer.
            The gyro has commands that allow it to find and seek objects and players.

            An example of gyro's seek configuration includes "Player1 Player2" which will seek and aim towards the nearest player.

            Putting "Radar" at the beginning of the seek configuration will make it target parts instead. For example, "Radar Gold Copper" will find the nearest Gold or Copper deposit.

            Putting "AllExcept" will make the seeker target everything except the given list, basically inverting it. For example, "AllExcept Player1 Player2" will target "Player3" or "Player"4 but not "Player1".

            The commands "Min" and "Max" set the minimum or maximum distance the seeker will target. For example, "Min20 Max500" will make the seeker only target objects within 500 studs and more than 20 studs away.

            TriggerWhenSeeked will trigger all connected parts every second when the Seek configurable is satisfied

            "TrigMin" and "TrigMax" work the same as "Min" and "Max" but it's for the trigger signal, trigger signal will only be sent if the above property is true.

            ExceptOwnedBy accepts a list with no spaces, targeting parts that are NOT owned by the people in the supplied list.

            Putting "Sun" as part of the list will make the seeker automatically target the main stellar body in the system.

            Gyros also have a property called MaxTorque. This allows you to control the max force on the gyro to stabilize it.
          code-sample: gyro-intersection.luau
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            PointAlong:
              documentation: Points the gyro along the specified vector. Pass nil or configure the gyro to stop pointing.
              parameters:
                - name: direction
                  type: Vector3
                  documentation: The vector for the gyro to point along.
                - name: up
                  nullable-type: Vector3
                  documentation: The UpVector of the gyro with a default of (0, 1, 0).
            PointAt:
              documentation: Points the gyro towards the specified position. Pass nil or configure the gyro to stop pointing.
              parameters:
                - name: position
                  type: Vector3
                  documentation: The position for the gyro to look at.
                - name: up
                  nullable-type: Vector3
                  documentation: The UpVector of the gyro with a default of (0, 1, 0).
          events:
            Configured: *ConfiguredEvent
            Loop: *LoopEvent
          configurables:
            Seek:
              documentation:
                description: The seek commands.
                max-length: 512
              type: string
            DisableWhenUnpowered:
              documentation: Determines whether this gyro should be disabled while it does not have power.
              type: boolean
            MaxTorque:
              documentation:
                description: The maximum force in each axis the gyro can exert.
                default: 10000000000
                range: [0, 10000000000]
              type: number
            TriggerWhenSeeked:
              documentation: Determines whether to send out a trigger signal when the gyro detects something to seek as determined by the Seek configurable.
              type: boolean
      HyperDrive:
        documentation:
          description: |-
            A device used to travel at faster than light speeds to other regions of the universe.

            Simply input the coordinates to your destination and have a sufficient amount of fuel, and you'll be on your way to your destination.
            To initiate warping, power the hyperdrive and trigger it. When warping, the hyperdrive will be anchored to prevent any movement.

            The power required for warping will be dependent on the distance travelled, as well as the size of the object being transported.
            The amount of power required will be displayed in the hyper drive, shown in the red text.

            All of the parts connected to the hyperdrive and every player sitting will be teleported, however any free floating parts or standing up players will be sucked into the vaccum of space, so be careful.
            Make sure the numbers on the hyperdrive is facing up to ensure correct stud alignment.
          categories: [Propulsion, Starter, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetRequiredPower:
              documentation: Returns the amount of power required for the warp.
          events:
            Configured: *ConfiguredEvent
            Triggered: *TriggeredEvent
          configurables:
            Coordinates:
              documentation: The coordinates to warp to.
              type: Coordinates
      Instrument:
        documentation:
          description: |-
            A part that measures information about the world.

            You can set it to measure one of:
            - Power is the total amount of power connected to the instrument.
            - Position is the position of the instrument in the world.
            - Orientation is the orientation of the instrument in the world.
            - Size is the size of the part attached to the instrument.
            - Speed is the speed of the instrument.
            - AngularSpeed is the angular speed of the instrument.
            - Temperature is the temperature of the instrument in Kelvin
            - TemperatureF is the temperature of the instrument in Fahrenheit.
            - TemperatureC is the temperature of the instrument in Celsius.
            - AirTemperature is the air temperature around the instrument in Kelvin.
            - AirTemperatureF is the air temperature around the instrument in Fahrenheit.
            - AirTemperatureC is the air temperature around the instrument in Celsius.
            - Time is the current region time.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetReading:
              documentation: Passing a number to GetReading is deprecated. Use the string name of the reading instead.
              parameters:
                - name: type
                  nullable-union:
                    - type: InstrumentType
                    - type: number
              returns:
                - name: reading
                  union:
                    - type: number
                    - type: Vector3
                    - type: string
          events:
            Loop: *LoopEvent
          configurables:
            Type:
              documentation: The type of instrument readout to display on the instrument.
              type: InstrumentType
      Light:
        documentation:
          description: Emits light when powered with electricity. Can be colored in different ways, changing the light color.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            SetColor: *SetColorMethod
          events:
            Configured: *ConfiguredEvent
          configurables:
            Brightness:
              documentation:
                description: The brightness of the light.
                default: 1
                range: [0, 2]
              type: number
            LightRange:
              documentation:
                description: The range of the light.
                default: 60
                range: [1, 60]
              type: number
            Shadows:
              documentation: Whether or not the light will cast shadows.
              type: boolean
      Microcontroller:
        documentation:
          description: |-
            Runs limited Roblox luau code in an environment called "pilot.lua".
            Triggering it with a polysillicon will either start, stop, or restart (FlipFlop mode) your code.
            You can also click it to turn it on/off.

            Microcontrollers consume power depending on the amount of CPU time you use, which is the number of milliseconds your code spends doing stuff.
            Pauses and waits don't count towards your CPU time since they allow the game to continue on to go do other work.
            One CPU unit costs 1 units of power.
            If you don't have enough power your Microcontroller will pause.

            Your code has a CPU limit, it can only spend up to 100 milliseconds every game tick. If you go over this limit it will pause until the next game tick.

            You can press F9 to view WoS's client-side output. Any logs or errors from your Microcontrollers will appear there.

            If you want to know about various globals you can use from Roblox's engine, you can take a look at Roblox's Developer Documentation and search for Roblox Globals and Lua Globals.
            For more info, check the game's wiki, or look at one of the game's social platforms if it's linked at the bottom of the game page.
          categories: [Logic, Spawnable, Craftable]
          code-samples:
              -- Microcontroller A
              local function receive(sender, command, ...)
                  if command == "Tell me a joke." then
                      sender:Send("Why did the chicken cross the road?")
                  elseif command == "I don't know, why?" then
                      sender:Send("To get to the other side.")
                  end
              end

              while true do
                  receive(Microcontroller:Receive())
              end
              -- Microcontroller B
              local otherMicrocontroller = Network:GetPartFromPort(1, "Microcontroller")

              local function receive(sender, command, ...)
                  if command == "Why did the chicken cross the road?" then
                      sender:Send("I don't know, why?")
                  elseif command == "To get to the other side." then
                      sender:Send("HAHAHA that's SO FUNNY!!!!")
                      sender:Shutdown() -- kill enemy
                  end
              end

              task.spawn(function()
                  while true do
                      receive(Microcontroller:Receive())
                  end
              end)

              otherMicrocontroller:Send("Tell me a joke.")
        hydrator:
          name: wos-object
          methods:
            Send:
              documentation: Sends the data you provide to a remote microcontroller. Parts you pass will be based on your microcontroller's context.
              parameters:
                - name: ...
                  type: any
                  documentation: The parameters to send to the other microcontroller.
            Receive:
              documentation: Waits for data to be received.
              returns:
                - name: sender
                  type: Microcontroller
                  documentation: The microcontroller sending the data.
                - name: ...
                  type: any
                  documentation: The parameters sent through by the other microcontroller.
            Shutdown:
              documentation: Kills the microcontroller.
          events:
            Loop: *LoopEvent
            OnClick: *OnClickEvent
          configurables:
            Code:
              documentation: The code to be executed on this microcontroller.
              type: string
            StartOnSpawn:
              documentation: Whether or not to start the Microcontroller when it spawns.
              type: boolean
      Modem:
        documentation:
          description: A part that allows you to send messages cross-region and make HTTP requests to the web.
          categories: [Logic, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetAsync:
              documentation: Identical to HttpService:GetAsync.
              source: https://create.roblox.com/docs/reference/engine/classes/HttpService#GetAsync
              parameters:
                - name: url
                  type: string
                - name: nocache
                  nullable-type: boolean
                - name: headers
                  nullable-type:
                    !indexer string:
                      type: any
              returns:
                - name: response
                  type: string
            PostAsync:
              documentation: Identical to HttpService:PostAsync.
              source: https://create.roblox.com/docs/reference/engine/classes/HttpService#PostAsync
              parameters:
                - name: url
                  type: string
                  documentation: The destination address for the data.
                - name: data
                  type: string
                  documentation: The data being sent.
                - name: contentType
                  nullable-type: Enum.HttpContentType
                  documentation: Modifies the value in the Content-Type header sent with the request.
                - name: compress
                  nullable-type: boolean
                  documentation: Determines whether the data is compressed (gzipped) when sent.
                - name: headers
                  nullable-type:
                    !indexer string:
                      documentation: A HTTP request header.
                      type: any
                  documentation: Used to specify some HTTP request headers.
              returns:
                - name: response
                  type: string
                  documentation: The HTTP response sent back indicating the request result.
            SendLocalMessage:
              documentation: Sends a message to all modems in the same region of the same NetworkID.
              parameters:
                - name: data
                  type: any
                - name: id
                  nullable-type: string
            PostRequest:
              documentation:
                deprecated: This function still 'exists', but has no effect.
              parameters:
                - name: domain
                  type: string
                - name: data
                  type: string
            UrlEncode:
              documentation: |-
                The UrlEncode function [percent-encodes](https://en.wikipedia.org/wiki/Percent-encoding) a given string so that reserved characters properly encoded with '%' and two hexadecimal characters.
                Identical to HttpService:UrlEncode.
              source: https://create.roblox.com/docs/reference/engine/classes/HttpService#UrlEncode
              parameters:
                - name: input
                  type: string
              returns:
                - name: encodedUrl
                  type: string
            GetRequest:
              documentation:
                deprecated: This function still 'exists', but has no effect.
              parameters:
                - name: domain
                  type: string
              returns:
                - name: response
                  type: string
            RealPostRequest:
              documentation:
                deprecated: Use Modem:PostAsync instead.
              parameters:
                - name: domain
                  type: string
                - name: data
                  type: string
                - name: asyncBool
                  type: boolean
                - name: transformFunction
                  function:
                    parameters:
                      - name: ...
                        type: any
                - name: optionalHeaders
                  nullable-type:
                    !indexer string:
                      type: any
              returns:
                - name: response
                  type:
                    success:
                      type: boolean
                    response:
                      type: string
            SendMessage:
              parameters:
                - name: data
                  type: JSON
                - name: id
                  nullable-type: string
            RequestAsync:
              documentation: Identical to HttpService:RequestAsync.
              source: https://create.roblox.com/docs/reference/engine/classes/HttpService#RequestAsync
              parameters:
                - name: options
                  type: ModemRequest
              returns:
                - name: response
                  type: ModemRequestResponse
          events:
            Loop: *LoopEvent
            MessageSent:
              parameters:
                - name: data
                  type: any
          configurables:
            NetworkID:
              documentation:
                description: The ID of the network this modem should connect to.
                default: M1
                max-length: 64
              type: string
      Piston:
        documentation:
          description: More accurately a linear actuator. There is a rail among us.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            SetPosition: {}
          events:
            Configured: *ConfiguredEvent
          configurables:
            Position1:
              documentation:
                description: Determines the position of the first state of the piston.
                default: 0
                range: [0, 100]
              type: number
            Position2:
              documentation:
                description: Determines the position of the second state of the piston.
                default: 100
                range: [0, 100]
              type: number
            Speed:
              documentation:
                description: Determines the speed of the piston.
                default: 10
                range: [0, 50]
              type: number
      Reactor:
        documentation:
          description: |-
            Generates steam using water and heat from radiation.
            Up to 4 pieces of uranium can be inserted into the reactor as fuel.
            If the temperature is above 400, it will begin to turn water into steam (rate dependent on temperature).
            If the temperature exceeds 1200 F, a meltdown will occur.
            The Reactor fuel status can be acquired through the :GetFuel() method with a microcontroller.
            Polysilicon is used to control a reactor, and fuel must be ejected manually:

            Activation lowers the control rods, decreasing reaction rate.
            Deactivation raises the control rods, allowing fuel to react.
            FlipFlop will eject fuel or waste from the fuel rod with the least fuel.
          categories: [Spawnable, Craftable]
          code-sample: reactor.luau
        hydrator:
          name: wos-object
          methods:
            GetEfficiency:
              returns:
                - name: efficiency
                  type: number
            GetFuel:
              documentation: Returns an array with four numeric values each representative of their fuel rod. The order is strict and goes from the first to the fourth fuel rod.
              returns:
                - name: fuelState
                  array-type: number
            GetTemp:
              documentation: Returns a numeric value representing the current temperature of the reactor in degrees fahrenheit.
              returns:
                - name: temperature
                  type: number
                  documentation: The current temperature of the reactor in degrees fahrenheit.
          events:
            Loop: *LoopEvent
          configurables:
            Alarm:
              documentation: Determines whether the reactor alarm system is enabled for when the reactor is near meltdown temperature.
              type: boolean
            TriggerWhenEmpty:
              documentation: Determines whether or not the reactor will emit a trigger signal when its fuel is empty.
              type: boolean
      Screen:
        documentation:
          description: |-
            Allows for the programmatic creation of GUI elements.

            Internally, it utilises a [SurfaceGUI](https://create.roblox.com/docs/reference/engine/classes/SurfaceGui), and is therefore no different from normal roblox GUIs.

            There are some limitations with Screens in Waste of Space, such as an inability to use [ViewportFrame](https://create.roblox.com/docs/reference/engine/classes/ViewportFrame)s
          categories: [Logic, Electrical, Spawnable, Craftable]
          code-sample: |-
            -- Try and get the screen part, throw an error if we don't find it using `assert`.
            local screen = assert(Network:GetPart("Screen"), "no screen connected")

            -- Create a text label with the text 'Hello, world!' which takes up the entire screen.
            local textLabel = Instance.new("TextLabel")
            textLabel.Text = "Hello, world!"
            textLabel.Size = UDim2.fromScale(1, 1)
            textLabel.BorderSizePixel = 0
            textLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255)

            -- Parent it to the 'canvas' of the screen.
            textLabel.Parent = screen:GetCanvas()

            -- Keep the microcontroller on by permanently 'yielding' the code (making it wait).
            coroutine.yield()
        hydrator:
          name: wos-object
          methods:
            GetCanvas:
              documentation: Returns the parent container of all the screen's content.
              returns:
                - name: canvas
                  type: Frame
            ClearElements:
              documentation: Clears all objects that are descendants of the screen.
            CreateElement:
              documentation:
                description: Creates an element of the specified class name with the specified properties.
                code-sample: screen-create-element.luau
              parameters:
                - name: className
                  type: string
                - name: properties
                  type:
                    !indexer string:
                      type: any
              returns:
                - name: element
                  type: Instance
            GetDimensions:
              documentation:
                description: Gets the size of the screen in pixels in the form of a Vector2.
                code-sample: screen-size.luau
              returns:
                - name: dimensions
                  type: Vector2
                  documentation: The size of the screen in pixels.
          events:
            Configured: *ConfiguredEvent
          configurables:
            VideoID:
              documentation:
                description: The ID of the camera feed being to be viewed, or 0 for none.
                default: 0
                range: [0, 10000000000]
                increment: 1
              type: number
      Servo:
        documentation:
          description: |-
            Spins objects attached to the hinge at the front when powered, to set angles.

            Polysilicon can be used to control its angle.
             - Activate will increment the goal angle by the configured angle step (clockwise looking at its face).
             - Deactivate will decrement the goal angle (counter-clockwise).
             - FlipFlop will reset the angle to 0.

            Microcontrollers can also set a servo's angle with :SetAngle(targetAngle)
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            SetAngle:
              documentation: Sets the target angle of a servo just as would if you were configuring it.
              parameters:
                - name: angle
                  type: number
                  documentation: The angle of the servo in angular degrees.
          events:
            Configured: *ConfiguredEvent
          configurables:
            Angle:
              documentation:
                description: Determines the angle of the servo. When configured with a value outside of the specified range, it will be calculated modulo 360 (i.e., 360 ⟹ 0, 375 ⟹ 15, -10 ⟹ 350).
                default: 0
                range: [0, 359]
              type: number
            ServoSpeed:
              documentation:
                description: Determines the speed at which the servo is driven.
                default: 10
                range: [0, 20]
              type: number
            AngleStep:
              documentation:
                description: Determines the change in angle when a pulse is received by Polysilicon.
                default: 5
                range: [-180, 180]
              type: number
            Responsiveness:
              documentation:
                description: Determines how fast the servo attempts to correct its angle.
                default: 45
                range: [0, 90]
              type: number
      Speaker:
        documentation:
          description: |-
            Plays audio of length up to 5 seconds, unless it is powered in which case it can play a full audio.
            When clicked or triggered, it will toggle playing music and will play the song id you give it.
            :LoadSound() will return a Sound object or nil.
          categories: [Electrical, Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            LoadSound:
              documentation:
                description: |-
                  Returns a roblox [Sound](https://create.roblox.com/docs/reference/engine/classes/Sound) object with the given soundId.
                  The provided sound ID is a [standard roblox asset URI](https://create.roblox.com/docs/projects/assets#asset-uris), most often of the form rbxassetid://id.
                  The resulting Sound exposes only the properties SoundId, Looped, PlaybackSpeed, Pitch, TimePosition and the methods :Play(), :Pause(), :Stop(), and :Destroy().
                  This function will also return nil if more than 10 sounds have been loaded, to clear these sounds use :ClearSounds().
                code-sample: |-
                  local LOOP_START = 2.5
                  local LOOP_END = 6.5

                  local speaker = assert(Network:GetPart("Speaker"), "no speaker connected")
                  speaker:ClearSounds()

                  local microwaveSound = assert(speaker:LoadSound("rbxassetid://4399963971"), "sound limit reached")
                  microwaveSound:Play()

                  for _ = 1, 4 do
                      microwaveSound.TimePosition = LOOP_START
                      task.wait(LOOP_END - LOOP_START)
                  end

                  microwaveSound:Stop()
                  microwaveSound:Destroy()

                  local endingSound = assert(speaker:LoadSound("rbxassetid://110253665387820"), "sound limit reached")
                  endingSound:Play()
              parameters:
                - name: soundId
                  type: string
                  documentation: The ID of the sound to load.
              returns:
                - name: loadedSound
                  nullable-type: Sound
                  documentation: The loaded sound object.
            ClearSounds:
              documentation: |-
                Stops and clears all sounds loaded via :LoadSound().
                Sounds remain loaded after the Microcontroller shuts down, so it is recommended to run :ClearSounds() at the start of any scripts which use :LoadSound().
            Chat:
              documentation: Displays the message in a chat bubble just like if a player said it.
              parameters:
                - name: message
                  type: string
                  documentation: The message to display in the chat bubble.
            PlaySound:
              documentation: Plays a sound with the given soundId. If no soundId is provided it will default to the Audio configuration of the speaker.
              parameters:
                - name: soundId
                  nullable-type: string
                  documentation: The ID of the sound to play. If nil, will default to the Audio configuration.
          events:
            Configured: *ConfiguredEvent
            Triggered: *TriggeredEvent
          configurables:
            Audio:
              documentation:
                description: The audio asset ID to be played.
                default: "5289642056"
                max-length: 64
              type: string
            Pitch:
              documentation:
                description: The pitch at which to play the audio.
                default: 1
                range: [0, 3]
              type: number
            Volume:
              documentation:
                description: The volume the audio plays at. The maximum volume is determined by the size of the speaker.
                default: 1
                range: [0, 1]
              type: number
      Telescope:
        documentation:
          description: |-
            A device that allows you to see and query information about other regions and planets in space while powered.
            Click on the Telescope to open up a menu that will display information about any location.
            To view a specific coordinate, configure the Telescope and set to the desired coordinates.

            There is no cooldown, and there is no range limit.

            The Telescope provides the following information:
            - Resources on the planet
            - The planet's temperature
            - The planet's distance from its star
            - The type of planet
          code-sample: telescope-retrieve-info.luau
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            WhenRegionLoads:
              documentation: Registers a callback that will be called when information is first loaded about a region.
              parameters:
                - name: callback
                  function:
                    parameters:
                      - name: regionInfo
                        type: CompleteRegionInfo
                        documentation: The information about the region that has loaded.
                  documentation: A callback that will be called when the region loads. The callback will receive a CompleteRegionInfo object containing information about the region.
            GetCoordinate:
              documentation: Gets information about the configured region.
              returns:
                - name: regionInfo
                  type: RegionInfo
            GetCurrentCoordinate:
              documentation: Returns the current region coordinates. If you are within a region with a RegionCloaker active, only the owner of the RegionCloaker can call this method.
              returns:
                - name: currentCoordinate
                  type: Coordinates
          events:
            Configured: *ConfiguredEvent
          configurables:
            ViewCoordinates:
              documentation: The coordinates to view.
              type: Coordinates
      TemperatureGate:
        documentation:
          description: |-
            The gate will allow power to pass through it while the temperature is in a certain range.
            It can be used in conjunction with a Transistor part to control the flow of generated trigger signals based on its temperature.

            Like the TemperatureSensor part, it will also use the attached Reactor temperature if there is one.
            Though, unlike the TemperatureSensor part, this one updates at a much faster 20 tps instead of 0.5 tps.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetTemp:
              documentation:
                description: Returns the current temperature of the gate.
                deprecated: Use TemperatureSensor:GetTemperature() instead.
              returns:
                - name: temperature
                  type: number
                  documentation: The current temperature of the gate in degrees Fahrenheit.
            GetState: {}
            GetTemperature:
              documentation: Returns the current temperature of the gate.
              returns:
                - name: temperature
                  type: number
                  documentation: The current temperature of the gate in degrees Fahrenheit.
          events:
            Configured: *ConfiguredEvent
          configurables:
            TemperatureRange:
              documentation: The range of temperatures (°F) within which the gate will be open.
              type: Range
            Inverted:
              documentation: Whether or not the state will be inverted.
              type: boolean
            SwitchValue: *SwitchValueConfigurable
      TemperatureSensor:
        documentation:
          description: |-
            When the surrounding temperature is within the defined range, it will emit a trigger signal every two seconds.
            When connected to a Reactor part, will use the Reactor's internal temperature.

            The more advanced twin of this part, the TemperatureGate part may be more useful in many cases.
            It updates at a quicker rate and is more versatile, due to it controlling power flow.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetTemp:
              returns:
                - name: temperature
                  type: number
          events:
            Loop: *LoopEvent
          configurables:
            TemperatureRange:
              documentation: The range of temperatures (°F) which this sensor will trigger at.
              type: Range
      TouchScreen:
        documentation:
          description: |-
            A Screen, but can handle player mouse input.
            This is to be used with programming.
          categories: [Logic, Electrical, Spawnable, Craftable]
          code-sample: draggable-frames.luau
        hydrator:
          name: wos-object
          extends: Screen
          methods:
            GetCursors:
              documentation: Gets a dictionary of player usernames to their cursors if their cursors are on the screen.
              returns:
                - name: cursors
                  type:
                    !indexer string:
                      type: Cursor
                  documentation: A dictionary of player usernames to their cursors.
            GetCursor:
              documentation: Gets the specified player's cursor.
              parameters:
                - name: username
                  type: string
                  documentation: The username of the player's cursor you want to get.
              returns:
                - name: cursor
                  type: Cursor
          events:
            Configured: *ConfiguredEvent
            CursorMoved:
              documentation: Fires when a cursor is moved.
              parameters:
                - name: Cursor
                  type: Cursor
            CursorPressed:
              documentation: Fires when a user presses their left mouse button.
              parameters:
                - name: Cursor
                  type: Cursor
            CursorReleased:
              documentation: Fires when a user releases their left mouse button.
              parameters:
                - name: Cursor
                  type: Cursor
      VehicleSeat:
        documentation:
          description: |-
            Allows players to control vehicles by rotating when sat on.
            It is incredibly important to have when creating vehicles.

            Attaching buttons to the vehicleseat will allow the player sitting on it to trigger the button by pressing a key.
            Simply attach the button to the vehicle seat, configure it to the keybind you would like, and it will allow you to trigger that button by pressing the key when sitting down in the seat.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetOccupant:
              documentation: Retrieves the UserId of the seat's occupant, it will be nil if there is no occupant.
              returns:
                - name: currentOccupant
                  nullable-type: number
            EjectOccupant:
              documentation: Ejects the seat occupant.
          events:
            Configured: *ConfiguredEvent
            OccupantChanged:
              documentation: Fires when the occupant of the seat changes.
              parameters:
                - name: newOccupant
                  documentation: The UserId of the seat's occupant, or nil if there is no occupant.
                  nullable-type: number
          configurables:
            Speed:
              documentation:
                description: The speed at which the seat will rotate.
                default: 1
                range: [0, 10]
              type: number
            Mode:
              documentation: "The control mode of the seat. Horizontal: Rotate horizontally with A/D. Full: Rotate horizontally and vertically with W/A/S/D. Mouse: point towards the player's mouse when holding click."
              type: VehicleSeatMode
            Enabled:
              documentation: Determines whether this seat should control its rotation. Turning this off results in a regular seat.
              type: boolean

      # Has both methods and events, is configurable, and is only spawnable
      DevSink:
        documentation:
          description: A debug item meant for developers.
          categories: [Unused, Spawnable]
        hydrator:
          name: wos-object
          methods:
            GetAmountConsumed:
              # Undocumented - requires rewriting
              parameters:
                - name: ...
                  type: any
                  documentation: Unknown.
              returns:
                - name: ...
                  type: any
                  documentation: Unknown.
            GetResource: *GetResourceMethod
            GetResourceAmount: *GetResourceAmountMethod
            GetAmount: *GetAmountMethod
          events:
            Configured: *ConfiguredEvent
            ContainerChanged: *ContainerChangedEvent
            OnClick: *OnClickEvent
          configurables:
            Resource:
              documentation: The name of the object to produce a sink for.
              type: ResourceString
      DevSource:
        documentation:
          description: A debug item meant for developers.
          categories: [Unused, Spawnable]
        hydrator:
          name: wos-object
          methods:
            GetAmountGenerated:
              # Undocumented - requires rewriting
              parameters:
                - name: ...
                  type: any
                  documentation: Unknown.
              returns:
                - name: ...
                  type: any
                  documentation: Unknown.
          events:
            Configured: *ConfiguredEvent
            OnClick: *OnClickEvent
          configurables:
            Resource:
              documentation: The name of the object to produce a source for.
              type: ResourceString

      # Has both methods and events and is both craftable and spawnable
      BlackBox:
        documentation:
          description: |-
            Records all activity in the region using very delicate instruments.
            Activates when locked and anchors to ensure accurate readings.
            ONLINE = Listening for event/Sharing event data, DATA = New data the owner hasn't seen.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetLogs:
              returns:
                - name: regionLogs
                  array-type: RegionLog
          events:
            Loop: *LoopEvent
            OnClick: *OnClickEvent
      Disk:
        documentation:
          description: |-
            A programmable object capable of storing complex data.
            Be aware, while disks can store userdata & function values, it cannot save them.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            Clear:
              documentation: Clears all the contents of the disk.
            Write:
              documentation: Write the specified key with the specified value to the disk.
              parameters:
                - name: key
                  type: any
                  documentation: The key to write to the disk at.
                - name: value
                  type: any
                  documentation: The value to write to the disk.
            Compress: {}
            ReadAll:
              documentation: Reads the entire content of the disk and outputs it as a dictionary.
              returns:
                - name: content
                  type:
                    !indexer any:
                      type: any
                  documentation: The content of the disk as a dictionary.
            WriteAll:
              documentation:
                description: |-
                  Replaces (to clarify, it does clear the original contents) the content
                  of the disk with the specified dictionary.

                  Note that it will have bizzare behaviour when used with :ReadAll.
                code-sample: |-
                  local repr = require("repr")

                  local disk = assert(Network:GetPart("Disk"), "no disk connected")

                  local a = disk:ReadAll()
                  disk:Write("foo", "bar")

                  print(a.foo) -- bar

                  disk:WriteAll( { hello = "world", asd = "fgh" } )
                  local b = disk:ReadAll()

                  print(a.foo, b.foo) -- bar nil
                  print(a.hello, b.hello) -- world world

                  print(a == b) -- false
                  print(a == disk:ReadAll()) -- false
                  print(b == disk:ReadAll()) -- true

                  print(repr(a)) -- { asd = "fgh", foo = "bar", hello = "world" }
                  print(repr(b)) -- { asd = "fgh", hello = "world" }
              parameters:
                - name: content
                  type:
                    !indexer any:
                      type: any
            Read:
              documentation: Reads the specified key from the disk and returns the value.
              parameters:
                - name: key
                  type: any
              returns:
                - name: value
                  type: any
            Decompress: {}
            ReadEntireDisk:
              documentation:
                deprecated: Superseded by Disk:ReadAll().
              returns:
                - name: content
                  type:
                    !indexer any:
                      type: any
            ClearDisk:
              documentation:
                description: Clears the disk.
                deprecated: Superseded by Disk:Clear().
          events:
            Loop: *LoopEvent
      Keyboard:
        documentation:
          description: |-
            Similar to a button, except is programmable to take more than one key input.
            Can be attached to a vehicle seat or clicked by a player.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            SimulateUserInput: {}
            SimulateKeyPress:
              documentation: Simulates a key press just like you would press a key on the keyboard.
              parameters:
                - name: key
                  nullable-type: string
                - name: player
                  type: string
            SimulateTextInput:
              documentation: Simulates text input just like you would type in the keyboard and enter. This fires the TextInputted event.
              parameters:
                - name: input
                  nullable-type: string
                - name: player
                  type: string
          events:
            KeyPressed: *KeyPressedEvent
            TextInputted:
              documentation: |-
                Fires when a player finishes typing into the keyboard. Note that a newline will
                be present wherever the cursor of the player was when they pressed enter (generally
                the end, but if they moved their cursor whilst typing, it may be in the middle
                of the text).
              parameters:
                - name: text
                  type: string
                  documentation: The text inputted into the keyboard.
                - name: player
                  type: string
                  documentation: The username of the player who inputted the text.
            UserInput: *UserInputEvent
      Seat:
        documentation:
          description: A seat.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetOccupant:
              documentation: Retrieves the UserId of the seat's occupant, it will be nil if there is no occupant.
              returns:
                - name: currentOccupant
                  documentation: The UserId of the seat's occupant, or nil if there is no occupant.
                  nullable-type: number
            EjectOccupant:
              documentation: Ejects the seat occupant.
          events:
            OccupantChanged:
              documentation: Fires when the occupant of the seat changes.
              parameters:
                - name: newOccupant
                  documentation: The UserId of the seat's occupant, or nil if there is no occupant.
                  nullable-type: number
      SteamTurbine:
        documentation:
          description: Produces power from steam at a base rate of 100 power each. Improves up to 250 per steam if consecutively ran at max speed. All bonuses are capped to the real consumption rate, so more steam equals better efficiency, but faster consumption rates. It may consume +0.5/s^2 steam, up to a maximum rate of 10 steam per second (for a total of 2500 power per second). Has a 10% chance to recover water for every steam consumed, improving up to 20%. Maximum efficiency can be reached in no less than 18 seconds if fed an optimal amount of steam.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetEfficiency:
              returns:
                - name: efficiency
                  type: number
            GetProductionRate:
              documentation: The multiplier for the amount of steam consumption each tick, ranges between 1 and 10.
              returns:
                - name: productionRate
                  type: number
          events:
            Loop: *LoopEvent

      # Has methods, is configurable, and is both craftable and spawnable
      ObjectDetector:
        documentation:
          description: |-
            Casts a ray on the face with the hole on it, returning data of the object the ray hits.

            Microcontroller function GetLastHitData returns a table with data about the last object hit.

            The "last hit" part updates with a frequency of 1 frame.
          categories: [Logic, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetLastHitPart:
              documentation: Returns the most recently hit part by the ObjectDetector.
              returns:
                - name: object
                  type: PilotObject
                  documentation: A reference to the most recently hit part.
            GetLastHitData:
              documentation: Returns a table with data about the last object hit by the ObjectDetector.
              returns:
                - name: data
                  type: ObjectDetectorHitData
                  documentation: The hit data provided by the ObjectDetector.
          configurables:
            MaxDistance:
              documentation:
                description: The range that it can detect an object. Must be between 0 and 1000.
                default: 1000
                range: [0, 1000]
              type: number
            TriggerAtDistance:
              documentation: The range that it will trigger if it detects an object.
              type: Vector2
      Rail:
        documentation:
          description: |-
            Slides and moves objects along its surface when powered and triggered.
            Useful for creating retractable pistons and actuators, for turrets or other retractable devices.
            Rails will only move objects connected on the relative top surface of the rail.

            Rails have 2 configurations, Position1 and Position2.
            Both configurations should be between 0 and 100. These are percents of where the attached objects should slide to.
            For example, if a rail was 50 studs long and Position2 was 50 or 50%, the attached objects will slide to the middle or at 25 studs.

            The rail can only be activated through the use of polysilicons.
            - Activating polysilicons will set the rail to Position1.
            - Deactivating polysilicons will set the rail to Position2.
            - FlipFlop polysilicons will act like a switch, setting to Position2 if Position1 and vice versa.

            Due to roblox physics, rails may act weirdly. To prevent this from happening, you should always place your rails first before anything else.
            It is recommended to attach objects on the rail after the rail is safely placed down.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            SetPosition:
              documentation: Sets the position of the rail.
              parameters:
                - name: depth
                  type: number
          configurables:
            Position1:
              documentation:
                description: Determines the position of the first state of the rail.
                default: 0
                range: [0, 100]
              type: number
            Position2:
              documentation:
                description: Determines the position of the second state of the rail.
                default: 100
                range: [0, 100]
              type: number
            TweenTime:
              documentation:
                description: Determines the time it takes for the rail to change positions.
                default: 1
                range: [0.5, 60]
              type: number
      Scanner:
        documentation:
          description: An end-game part which can remotely retrieve Microcontroller references to parts, providing information and control. Can also triangulate the positions of enemy parts given enough well placed scanners.
          categories: [Logic, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            CalculateCost:
              documentation: Calculates the cost of performing a scan with the given range.
              parameters:
                - name: range
                  nullable-type: number
              returns:
                - name: cost
                  type: number
            Locate:
              documentation: Uses GPS to locate a part (uses :GetDistance() internally). The scanners you provide should be on different axes and stuff. You need at least 3 to correctly identify a position.
              parameters:
                - name: part
                  type: PilotObject
                - name: scanners
                  array-type: Scanner
              returns:
                - name: approximatePosition
                  type: Vector3
            GetPartsInRange:
              documentation: Does a (power hungry) query for all parts in the configured (or specified) range up to 1024 studs. Can optionally filter for a class name, but many use cases will prefer to store part objects in a set.
              parameters:
                - name: range
                  nullable-type: number
                - name: className
                  nullable-type: string
              returns:
                - name: objects
                  array-type: PilotObject
            GetDistance:
              documentation: Gets the approximate distance to the part. Accuracy falls off exponentially.
              parameters:
                - name: part
                  type: PilotObject
              returns:
                - name: approximateDistance
                  type: number
          configurables:
            Range:
              documentation:
                description: The default range to scan for parts within.
                default: 64
                range: [0, 1024]
              type: number
      Winch:
        documentation:
          description: |-
            A special device used to control the length of constraints attached to it.
            When attaching a constraint to the Winch, click the Winch first.
            When triggered with polysilicon, it will increase (Activate) or decrease (Deactivate).

            Any length adjustments to the constraint will be tweened over a duration of 1 second.
            If an adjustment is made via a polysilicon trigger during a tween, the tween is cancelled and another tween starts toward the updated target length.

            Adjustments made via polysilicon triggers have no debounce/cooldown.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            AdjustLength:
              documentation: |-
                Changes the constraint's length by adjustment.
                This method has a 1 second debounce window.
                Calls made during the window will not affect the winch.
              parameters:
                - name: adjustment
                  type: number
            SetLength:
              documentation: |-
                Sets the constraint's length to length.
                This method has a 1 second debounce window.
                Calls made during the window will not affect the winch.
              parameters:
                - name: length
                  type: number
          configurables:
            DeltaLength:
              documentation:
                description: The length change in studs when triggered by Polysilicon.
                default: 1
                range: [0, 100]
              type: number
            MinLength:
              documentation:
                description: The minimum length in studs of the rope.
                default: 0
                range: [0, 100]
              type: number
            MaxLength:
              documentation:
                description: The maximum length in studs of the rope.
                default: 100
                range: [0, 100]
              type: number

      # Has methods, is configurable, and is only spawnable
      HyperspaceRadar:
        documentation:
          description: A device that images areas of hyperspace, allowing one to view hyperspace disturbances and track where HyperDrives have warped.
          categories: [Unused, Electrical, Spawnable]
        hydrator:
          name: wos-object
          configurables:
            ViewCoordinates:
              documentation: The coordinates to view.
              type: Coordinates

      # Has methods and is both craftable and spawnable
      LifeSensor:
        documentation:
          description: |-
            Senses and detects organic life up to a distance of 2000 studs. It only has a purpose within programming.
            It is used in alien technology to hunt down organisms such as players.
          categories: [Logic, Spawnable, Craftable]
          code-sample: lifesensor-intruder.luau
        hydrator:
          name: wos-object
          methods:
            GetReading:
              documentation: Returns a table where the keys are humanoid names and the values are humanoid positions. Only has a 2,000 stud range.
              returns:
                - name: reading
                  type:
                    !indexer string:
                      type: Vector3
                  documentation: A dictionary of humanoid names to their world positions.
            ListPlayers:
              documentation:
                description: Returns an array of player UserIds. Ignores the 2,000 stud range limit.
              returns:
                - name: players
                  array-type: number
                  documentation: An array of player UserIds.
            GetPlayers:
              documentation: Returns a table where the keys are player UserIds and the values are player CFrames. Only has a 2,000 stud range.
              returns:
                - name: players
                  type:
                    !indexer number:
                      type: CFrame
                  documentation: A dictionary of player UserIds to their world CFrames.
      LightTube:
        documentation:
          description: Emits light when powered with electricity. Can be colored in different ways, changing the light color.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            SetColor: *SetColorMethod
      Spotlight:
        documentation:
          description: Emits light in a cone when powered with electricity. Color emition can be changed by coloring it.
          categories: [Electrical, Decoration, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            SetColor: *SetColorMethod
      StarMap:
        documentation:
          description: |-
            Shows your current location in the universe and other nearby stars and celestial bodies.
            It also has unique icons for every celestial body type. Clicking on a icon will set a all connected HyperDrives/Telescopes to those coordinates.
            Requires power in order to function.

            It has 2 modes, universe and solar.
            - Universe mode shows your location in the universe.
            - Solar mode shows your location in the solar system if you are in one.

            It can be triggered with polysilicon:
            - Activate will set it to universe mode.
            - Deactivate will set it to solar mode.
            - FlipFlop will toggle between the two modes.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetSystems:
              documentation: Returns an array of star systems in a 21x21 grid centred around the current region. Note that this filters out systems that orbit around planets.
              returns:
                - name: systems
                  array-type: string
                  documentation: The local star systems.
            GetBodies:
              documentation: Returns an array of celestial bodies in the current star system.
              returns:
                - name: bodies
                  type:
                    !indexer string:
                      documentation: A celestial body.
                      type:
                        PlanetType:
                          documentation: The type of the celestial body.
                          type: PlanetType
                  documentation: The celestial bodies in the current system.

      # Has events, is configurable, and is both craftable and spawnable
      Anchor:
        documentation:
          description: When triggered or clicked, it is able to be anchored, a state in which it is immovable by physics, and applies to parts connected to it.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            Anchored:
              documentation: Determines whether the anchor is active or not.
              type: boolean
      Apparel:
        documentation:
          description: |-
            A piece of clothing that can be worn by other players. Parts can also be attached to the apparel, meaning you can create your own suits with the apprel.
            It is similar to the prosthetic, except it can be taken off and does not cause damage. However, electricity does not trasmit throughout the apparel unlike prosthetics.

            Apparel can also holds less parts than the prosthetic. It can only hold 100 parts, while Prosthetics can hold 150.

            Apparel has another configuration to it called Transparency, which dictates how transparent it will become when worn. Ranges from 0-1 from non-transparent to transparent.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            OnClick: *OnClickEvent
          configurables:
            Limb:
              documentation: The name of the limb that this Apparel is for.
              type: PlayerLimb
            Transparency:
              documentation:
                description: The transparency of this Apparel.
                default: 1
                range: [0, 1]
              type: number
      BallastTank:
        documentation:
          description: Allows for variable ballast to be added to sea vehicles. Also prevents corrosion to attached parts underwater.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            Buoyancy:
              documentation:
                description: The buoyancy of this BallastTank, 0 being neutral.
                default: 0
                range: [-10, 10]
              type: number
      Balloon:
        documentation:
          description: |-
            Levitates parts attached to it to a certain configurable height.
            However, it is easily poppable.
            Does not work in space, or no-atmosphere planets.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            Buoyancy:
              documentation:
                description: The buoyancy of this Balloon, 0 being neutral.
                default: 0
                range: [-10, 10]
              type: number
      Beacon:
        documentation:
          description: |-
            Creates a small beacon of light when powered.
            When ShowOnMap is enabled, it broadcasts a signal into the universe.
            BeaconName changes the name of the beacon shown on the StarMap.
            It has a 30 second cooldown for changing the configurables.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            BeaconName:
              documentation:
                description: The name of the beacon.
                max-length: 20
              type: string
            ShowOnMap:
              documentation: Whether this beacon should be shown on StarMaps.
              type: boolean
      Bin:
        documentation:
          description: |-
            Stores solid items such as Aluminum, Iron, Faucets, etc.
            Can store up to 1,000 items. When destroyed, every item inside will also be destroyed.
            The value increases as more items are added to it.

            Bins can also be used as crafting recipes, with the resources inside being used.
            You can also configure a bin to prevent items from being crafted from it, allowing for bins to be strictly for machine storage.
          categories: [Starter, Storage, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetResource: *GetResourceMethod
            GetResourceAmount: *GetResourceAmountMethod
            GetAmount: *GetAmountMethod
          events:
            ContainerChanged: *ContainerChangedEvent
            OnClick: *OnClickEvent
          configurables:
            Resource:
              documentation:
                description: The kind of resource the bin can hold. You can set this to Any to allow the bin to accept anything.
                max-length: 24
              type: string
            CanBeCraftedFrom:
              documentation: Determines whether this bin can be used by nearby players to craft objects.
              type: boolean
      Boombox:
        documentation:
          description: Must be powered in order to play music. When clicked, it will toggle playing music and will play the song id you give it.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            Audio:
              documentation: The audio asset ID to be played.
              type: number
      Camera:
        documentation:
          description: |-
            It's a camera.
            When a camera and Screen have the same ID, that screen will be used to display the camera view.
            Clicking on a screen that is displaying the view of a camera will allow you to directly view what the camera is seeing.
            No power is necessary.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            VideoID:
              documentation:
                description: The ID to transmit the camera feed over, received by screens of the same ID.
                default: 0
                range: [0, 10000000000]
                increment: 1
              type: number
      CloningBay:
        documentation:
          description: Allows you to respawn at it from a remote location.
          categories: [Starter, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            Name:
              documentation:
                description: The name of the cloning bay.
                default: CloningBay
                max-length: 40
              type: string
      DriveBox:
        documentation:
          description: |-
            When connected to a motor or engine with a rod, it will spin the same speed the engine or motor is going.
            (You must click the drivebox first when creating a rod.)
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            Reversal:
              documentation: Determines whether the output should be reversed.
              type: boolean
            Ratio:
              documentation:
                description: The ratio of speed from 1 (1:100) to 100 (100:100) between this DriveBox and the source motor.
                default: 100
                range: [1, 100]
                increment: 1
              type: number
      Engine:
        documentation:
          description: It acts similar to a motor, but is powered by gasoline instead of electricity.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            EngineSpeed:
              documentation:
                description: Determines the speed at which the engine is driven.
                default: 10
                range: [-20, 20]
              type: number
      Extractor:
        documentation:
          description: |-
            Harvests or mines materials from the world. It can extract things like grass, snow, wood, ores, etc depending on what terrain it is attached to.

            Small resource-rich mountains can be found in the world, and these produce a number of unique resources such as Oil, Quartz, Silicon, and more.
            You may want to configure the extractor to extract a specific resource, which you can do by setting the MaterialToExtract config, otherwise, it will select a random resource to mine.
          categories: [Starter, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            MaterialToExtract:
              documentation: Determines the material to extract from connected natural surfaces. Disables the extractor if blank.
              type: string
      GravityGenerator:
        documentation:
          description: Generates an artificial gravity field when powered on. The gravity field only affects players, not individual parts. The amount of gravity can also be configureed, but the more gravity the higher amount of power needed. Only works in space, not inside planets.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            Gravity:
              documentation:
                description: The amount of gravity within the influence of the GravityGenerator, measured in Gs.
                default: 1
                range: [0.15, 1.5]
              type: number
      Hatch:
        documentation:
          description: Acts as a chute when active/gray, but when black or inactive it acts as a normal object.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            OnClick: *OnClickEvent
          configurables:
            SwitchValue: *SwitchValueConfigurable
      HeatPump:
        documentation:
          description: Pumps Heat between two points. Pumps a maximum of 4 MW of heat energy.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            TransferRate:
              documentation:
                description: How many kW of heat energy to pump.
                default: 4000
                range: [0, 4000]
              type: number
      HeatValve:
        documentation:
          description: Acts as a HeatPipe when active/red, but when black or inactive it acts as a normal object.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            OnClick: *OnClickEvent
          configurables:
            SwitchValue: *SwitchValueConfigurable
      Hologram:
        documentation:
          description: Using our brand new Multi-Dimensional Holographic Projection Technology™ you are able to create a stationary clone with only the ID of the user provided!.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            UserId:
              documentation:
                description: The UserId of the player for the Hologram to display.
                default: 1
                range: [1, 10000000000]
                increment: 1
              type: number
      Hydroponic:
        documentation:
          description: Grows grass and wood from water, turning attached water bins into either wood, sticks or grass. Incredibly useful for space bases or bases in areas devoid of life.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            Grow:
              documentation:
                description: The material to grow from the Hydroponic.
                default: Wood
                max-length: 64
              type: string
      IonRocket:
        documentation:
          description: |-
            A simple, fast propulsion device which consumes power to produce thrust. Moves in the direction of the arrow.
            Can travel up to 100s/s at maximum propulsion.
          categories: [Starter, Propulsion, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            Propulsion:
              documentation:
                description: Determines the speed traveled at, 0 being standstill. Affects fuel consumption.
                default: 50
                range: [0, 100]
              type: number
      Laser:
        documentation:
          description: |-
            Fires a concentraded beam of energy when powered, which can be used to damage and set objects on fire.
            Has a Range of 1000 studs.
            Primarily used as a weapon in space combat situations.
            While it can damage objects effectively, it cannot damage energy shields.
          categories: [Weapons, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            DamageOnlyPlayers:
              documentation: Determines if this laser is only allowed to damage players and not materials.
              type: boolean
      LightBridge:
        documentation:
          description: Fires a beam of solid light that can be walked on.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            Loop: *LoopEvent
          configurables:
            BeamColor:
              documentation: The color of the bridge's beam.
              type: Color3
      MiningLaser:
        documentation:
          description: |-
            Fires a beam at resource deposits that will mine them just like an Extractor can, allowing for mining while mobile.
            The MiningLaser produces 2x the resources, but costs 5x more power to run.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            MaterialToExtract:
              documentation: Determines the material to extract from the laser beam. Disables the laser if blank.
              type: string
      Motor:
        documentation:
          description: Spins objects attached to the hinge at the front when powered.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            Power:
              documentation:
                description: Determines the amount of power used to drive the motor. This affects the torque and power consumption. Negative values are reverse.
                default: 0.5
                range: [-1, 1]
              type: number
            Ratio:
              documentation:
                description: Determines the gear ratio applied to the motor in terms of the multiplier on the RPM. A value of 0.1 indicates a 10:1 ratio, where RPM is 1/10th and torque is 10x when compared to the default setting of 1.
                default: 1
                range: [0.001, 10]
              type: number
      Polysilicon:
        documentation:
          description: |-
            An electronic material which transforms a trigger signal into special on/off/toggle signals.

            Has a configuration called Frequency which dictates how many times the polysilicon will repeat a trigger.
            For example, if a polysilicon was attached to a pulley, having a frequency of 5 and triggered, the pulley will be activated 5 times.
          categories: [Logic, Starter, Spawnable, Craftable]
          code-sample: polysilicon-spam.luau
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            PolysiliconMode:
              documentation: The mode of the Polysilicon. Each mode results in different behaviors for objects.
              type: PolysiliconMode
            Frequency:
              documentation:
                description: The amount of times to activate the Polysilicon from a single trigger.
                default: 1
                range: [1, 10]
                increment: 1
              type: number
      Port:
        documentation:
          description: |-
            Only used in programming. Allows a Microcontroller to interface with PilotObjects.
            To do so, the Port must be between the Microcontroller and the PilotObject or Microcontroller and the EthernetCable (to interface with objects further away from the Microcontroller).
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Triggered: *TriggeredEvent
          configurables:
            PortID:
              documentation:
                description: The ID of this port used to utilize this port by connected Microcontrollers.
                default: 1
                range: [0, 10000000000]
                increment: 1
              type: number
      Prosthetic:
        documentation:
          description: |-
            An artificial part that can be attached to players in exchange for a limb.
            The limb configuration can be configureed to be the limb you want to have for a prosthetic, for example configuring it to be "Right Leg" will have the prosthetic attach itself to your character.
            Simply touch the prosthetic, and it will automatically be attached to your body. This process is extremely unhealthy, however, and may result in short-term complications.

            Parts can be attached to the prosthetic, allowing many uses for the prosthetic limb.

            Prosthetic limbs are also electrically conductable, acting as a wire.

            Heavily damages the character once attached.
            Prosthetics can't have more than 50 parts attached to them.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            Limb:
              documentation: The name of the limb that this Prosthetic is for.
              type: PlayerLimb
      ProximityButton:
        documentation:
          description: Sends trigger signals when interacted via its ProximityPrompt.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            PromptButtonHoldBegan: {}
            PromptButtonHoldEnded: {}
            PromptTriggerEnded: {}
            PromptTriggered: {}
          configurables:
            KeyboardKeyCode:
              documentation: The name of the key that will trigger the proximity prompt on a keyboard.
              type: string
            GamepadKeyCode:
              documentation: The name of the key that will trigger the proximity prompt on a gamepad.
              type: string
            ObjectText:
              documentation:
                description: The text of the proximity prompt.
                max-length: 64
              type: string
            HoldDuration:
              documentation: The length of time that the proximity prompt has to be held down for.
              type: number
            MaxActivationDistance:
              documentation:
                description: The range of the prompt, from 0 - 50.
                default: 5
                range: [0, 50]
              type: number
            RequiresLineOfSight:
              documentation: Whether a line of sight to the center of the part is required for the prompt to become visible.
              type: boolean
      Pump:
        documentation:
          description: Pumps liquid from the environment into attached Tanks. For example, a pump located in the ocean will pump water when powered.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            Loop: *LoopEvent
          configurables:
            LiquidToPump:
              documentation:
                description: The name of the liquid to extract using the pump.
                default: Water
                max-length: 24
              type: string
      Rocket:
        documentation:
          description: A propulsion device that consumes gasoline.
          categories: [Propulsion, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            Loop: *LoopEvent
          configurables:
            Propulsion:
              documentation:
                description: Determines the speed traveled at, 0 being standstill. Affects fuel consumption.
                default: 30
                range: [0, 100]
              type: number
      Sign:
        documentation:
          description: Displays text or images. To display an image, configure it to id:imageid.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            SignText:
              documentation:
                description: The text to display on the front of the sign. Rich text is allowed.
                default: Text
                max-length: 256
              type: string
            TextColor:
              documentation: The color of the text on the sign.
              type: Color3
            TextFont:
              documentation: The font of the text on the sign.
              type: string
      Solenoid:
        documentation:
          description: Controls the switch state of any switches attached to its output face based on whether or not it has power in the configured range.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            OnClick: *OnClickEvent
          configurables:
            Inverted:
              documentation: Whether or not the state will be inverted.
              type: boolean
            PowerRange:
              documentation: The power range the state will be active for.
              type: Range
      Sorter:
        documentation:
          description: Moves a type of resource through it, depending on the input and output faces as indicated by the arrow. Behaves just like the old Diode part when set to insert 100 Power.
          categories: [Electrical, Storage, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            Resource:
              documentation:
                description: The kind of resource to push. May be a special or generic type like Gas, Solid, etc.
                default: Power
                max-length: 24
              type: string
            Rate:
              documentation:
                description: How much of the resource to push per second. May be inf (or math.huge in a Microcontroller).
                minimum: 0
                increment: 1
              type: number
            TriggerQuantity:
              documentation:
                description: How much of the resource to push when triggered. May be inf (or math.huge in a Microcontroller).
                minimum: 0
                increment: 1
              type: number
          methods:
            Sort:
              documentation: Tells the sorter to move the given amount of resources, or the sort quantity config if unspecified.
              parameters:
                - name: amount
                  nullable-type: number
                  documentation: The amount of resources to move.
      SteamEngine:
        documentation:
          description: It acts similar to a motor, but is powered by Steam instead of electricity.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            EngineSpeed:
              documentation:
                description: Determines the speed at which the engine is driven.
                default: 10
                range: [-20, 20]
              type: number
      StorageSensor:
        documentation:
          description: |-
            When the number of contents within connected storage objects is within a defined range, it will send trigger signals similar to a button.
            This can be used to automate production of certain products when the stored quantity is low.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            QuantityRange:
              documentation: The range of item quantities within which this sensor will trigger.
              type: Range
      Switch:
        documentation:
          description: Acts as a wire when active/green, but when black or inactive it acts as a normal object. Must use a polysilicon to switch for trigger events.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            OnClick: *OnClickEvent
          configurables:
            SwitchValue: *SwitchValueConfigurable
      Tank:
        documentation:
          description: Stores liquids and gases. When a liquid or gas touches the Tank, the Tank will automatically store it. Will not conduct heat when containing a fluid, making it a good heat storage part.
          categories: [Starter, Storage, Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetResource: *GetResourceMethod
            GetResourceAmount: *GetResourceAmountMethod
            GetAmount: *GetAmountMethod
          events:
            ContainerChanged: *ContainerChangedEvent
            OnClick: *OnClickEvent
          configurables:
            Resource:
              documentation:
                description: The kind of resource the bin can hold. You can set this to Any to allow the bin to accept anything.
                max-length: 24
              type: string
            CanBeCraftedFrom:
              documentation: Determines whether this Tank can be used by nearby players to craft objects.
              type: boolean
      Teleporter:
        documentation:
          description: |-
            A device used to transport players across regions.
            When powered and triggered, it will teleport all players in the beam to the given coordinates and teleporter id.
            It will warp the player to a teleporter in the region with the given teleporter id.

            When warping to a teleporter inside of a planet, set the last value to true. For example,
            50, -50, 85, -75, true

            Make sure you set the correct coordinates OR YOU WILL BE STRANDED!

            Costs 1000 energy per teleport. Teleporter uses Energy regardless if a player is on the Teleporter at the moment it gets triggered.
          code-sample: teleporter.luau
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Triggered: *TriggeredEvent
          configurables:
            Coordinates:
              documentation: The coordinates to your Destination.
              type: Coordinates
            TeleporterID:
              documentation:
                description: The ID of the teleporter at the goal coordinates to teleport directly to.
                default: 1
                range: [1, 999]
                increment: 1
              type: number
            ForceLocalTeleport:
              documentation: Whether to only attempt to teleport to teleporters within the same region, ignoring the "Coordinates" configuration.
              type: boolean
      Thruster:
        documentation:
          description: |-
            A high powered propulsion device. The larger the thruster, the faster it can go, up to 500s/s, but it will consume more power.
            The thruster will not operate below -30, or above 200 degrees fahrenheit.
          categories: [Starter, Propulsion, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
          configurables:
            Propulsion:
              documentation:
                description: Determines the percentage of thrust (speed). Affects fuel consumption.
                default: 50
                range: [0, 100]
              type: number
      Transformer:
        documentation:
          description: Sends a constant trigger signal when powered. By default, it will send a trigger signal every tick, but can be configured up to every 360 seconds. If the transformer's loop time matches the game's internal tick rate (the default,  1/s), it will synchronize with the game loop.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
            Triggered: *TriggeredEvent
          configurables:
            LoopTime:
              documentation:
                description: The time in seconds between triggers.
                default: 1
                range: [0, 360]
              type: number
      Transistor:
        documentation:
          description: Carries trigger signals in the direction of the arrow if any power source is attached. Can be inverted by clicking or configuring.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            OnClick: *OnClickEvent
          configurables:
            Inverted:
              documentation: Whether or not the state will be inverted.
              type: boolean
      TriggerSwitch:
        documentation:
          description: Acts as a TriggerWrite when active/green, but when black or inactive it acts as a normal object. It will toggle when exposed to Polysilicon signals.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            OnClick: *OnClickEvent
          configurables:
            SwitchValue: *SwitchValueConfigurable
      TriggerRelay:
        documentation:
          description: Acts as a TriggerWrite when active/green, but when black or inactive it acts as a normal object, it will not toggle when exposed to Polysilicon signals, rather, it will pass them through if it is active, as if it were a normal signal.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            OnClick: *OnClickEvent
          configurables:
            SwitchValue: *SwitchValueConfigurable
      Valve:
        documentation:
          description: Acts as a pipe when active/gray, but when black or inactive it acts as a normal object.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            OnClick: *OnClickEvent
          configurables:
            SwitchValue: *SwitchValueConfigurable

      # Has events, is configurable, and is only spawnable
      Blade:
        documentation:
          description: A legacy pre-component part. A sharp object that can pierce through objects if the material is durable and strong.
          categories: [Unused, Templates, Spawnable]
        hydrator:
          name: wos-object
          events:
            ComponentsUpdated: *ComponentsUpdatedEvent
          configurables:
            Shape:
              documentation: The shape of the blade.
              type: BladeShape
      FluidProjector:
        documentation:
          description: |-
            A device which projects a field of gas or liquid in front of it which you can swim in.
            Host the universe's greatest pool party!
            The fluid area can be configureed in size and type.

            The FluidProjector requires power in order to work, and must be supplied with the correct fluid to work.
            Significantly more power is required on planets with high gravity.
            As an example, if the fluid is water, it will need a supplied Tank of water attached to work.
          categories: [Unused, Electrical, Spawnable]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            Loop: *LoopEvent
          configurables:
            Size:
              documentation: The size in studs of the projected fluid field.
              type: Vector3
            Fluid:
              documentation:
                description: The name of the fluid being projected.
                default: Water
                max-length: 64
              type: string
      Turbofan:
        documentation:
          description: |-
            Generates thrust from crude Oil, similar to a Thruster.
            If a motor is attached to the front, it instead acts like an engine and rotates it.
          categories: [Unused, Propulsion, Spawnable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            TurboFanSpeed:
              documentation:
                description: Determines the speed at which the turbofan is driven, or the speed at which it travels.
                default: 5
                range: [0, 100]
              type: number

      # Has events and is configurable
      DevGravityGenerator:
        documentation:
          description: A debug item meant for developers.
          categories: [Unused]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
          configurables:
            Enabled:
              documentation: Whether or not the gravity generator is enabled.
              type: boolean
            Gravity:
              documentation:
                description: The amount of gravity within the influence of the GravityGenerator as a force.
                default: 196.2
              type: number
            Radius:
              documentation:
                description: The radius of the generated gravity field.
                default: 588.6
              type: number

      # Has events and is both craftable and spawnable
      Asphalt:
        documentation:
          description: |-
            A modern material useful for smooth road surfaces.
            Its durability triples when anchored.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      AutomaticLaser:
        documentation:
          description: Fires a continous set of lasers when powered. Like most other energy/thermal weapons, it generates heat when powered. It generates up to 65 degrees of heat, meaning you will need atleast 2 or 3 coolers.
          categories: [Weapons, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Battery:
        documentation:
          description: A light part that contains 400 energy and is prefilled. Cannot be recharged.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetResource: *GetResourceMethod
            GetResourceAmount: *GetResourceAmountMethod
            GetAmount: *GetAmountMethod
          events:
            ContainerChanged: *ContainerChangedEvent
      Boiler:
        documentation:
          description: Consumes Coal and Water and produces Steam.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Brick:
        documentation:
          description: A cheap, malleable material with special durability properties. The durability is 4, and becomes 18 when it is anchored or attached to terrain (grounded).
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      BurnerGenerator:
        documentation:
          description: Creates electricity when fueled with coal.
          categories: [Starter, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      CombustionTurbine:
        documentation:
          description: Creates electricity when fueled by gasoline.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Controller:
        documentation:
          description: |-
            Alters the speed of attached controllable objects which include:
            - Engine
            - Motor
            - BallastTank
            - IonDrive
            - IonRocket
            - Thruster
            - Rocket

            You must use a polysilicon between this controller and an object that emits a trigger signal (such as a button) to use the same events as clicking the interface.
            For example, FlipFlop will set the speed of the controllable objects to 0, Deactivate will subtract 5 from the current speed, etc.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
            Triggered: *TriggeredEvent
      CrudeWing:
        documentation:
          description: |-
            Creates lift from being pushed forward.
            A worse version of a Wing.
            Does not work in space or in non atmospheric planets.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      DarkConverter:
        documentation:
          description: Converts attached dark matter bins into energy. 1 unit of dark matter is equal to 1000 watts of power. However, this generates a ton of heat in the process, nearly up to 200 degrees when activated. This means you will need about 10 coolers to avoid combustion.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      DarkReactor:
        documentation:
          description: |-
            Generates Dark Matter when powered and near a black hole.
            The reactor is very unstable, and if the reactor overheats it will cause a huge explosion.

            The DarkReactor generates up to 500 degrees of temperature, meaing you will need atleast 25 coolers to cool the reactor to make sure it does not overheat.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Decoupler:
        documentation:
          description: |-
            When triggered, it breaks welds and falls off of anything attached.
            Can be used to separate things.
            The trigger signals will pass through the decoupler as it is decoupled.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Triggered: *TriggeredEvent
      DeleteSwitch:
        documentation:
          description: An object that deletes itself when triggered.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Triggered: *TriggeredEvent
      ElectricFence:
        documentation:
          description: A special version of the fence which damages upon contact as long as it is powered. Conducts electricity like a wire.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Electromagnet:
        documentation:
          description: A powerful magnet.
          categories: [Logic, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      EnergyBomb:
        documentation:
          description: Causes a powerful explosion when triggered. Often used in space combat as a means of a powerful missile or torpedo.
          categories: [Weapons, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Damaged: *DamagedEvent
            Triggered: *TriggeredEvent
      Explosive:
        documentation:
          description: Causes an explosion when triggered. You can use a delay wire to make it explode after a few seconds and not immediately.
          categories: [Weapons, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Damaged: *DamagedEvent
            Triggered: *TriggeredEvent
      Fireworks:
        documentation:
          description: Causes an explosion when triggered. You can use a delay wire to make it explode after a few seconds and not immediately.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Damaged: *DamagedEvent
            Triggered: *TriggeredEvent
      Flamethrower:
        documentation:
          description: Shoots a stream of flaming gasoline to ignite your foes.
          categories: [Weapons, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Food:
        documentation:
          description: |-
            A consumable item.
            Appears to be meat.
            Upon clicking it, it will heal the user's health depending on the size.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            OnClick: *OnClickEvent
      Freezer:
        documentation:
          description: Turns liquid Water into solid Ice, expelling heat energy in the process. Requires some power.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Furnace:
        documentation:
          description: Burns resources at 16x speed to produce Heat energy directly. Has a low thermal conductivity.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Igniter:
        documentation:
          description: Sets alight unlocked parts within the immediate vicinity when triggered. Range depends on the size.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Triggered: *TriggeredEvent
      Kiln:
        documentation:
          description: Turns attached sand bins into glass.
          categories: [Starter, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Melter:
        documentation:
          description: Melts Ice into liquid Water by consuming Power.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Microphone:
        documentation:
          description: Used in programming. Takes user's input from chat.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Chatted:
              documentation: Fires when a player sends a message in the chat.
              parameters:
                - name: player
                  type: number
                  documentation: The UserId of the player who chatted.
                - name: message
                  type: string
                  documentation: The message that the player sent. Has a trailing newline character.
      Obelisk:
        documentation:
          description: |-
            An object designed to attract aliens to the region. Emits an ominous noise when powered.
            Must be anchored and powered in order to function. Must also be open to the sky. Only one obelisk in a region can be powered at a time.
            When active, it will summon aliens every 300 seconds.
            Use at your own risk.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Plastic:
        documentation:
          description: A cheap material made from petroleum and Coal through polymerisation inside assemblers.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      PowerCell:
        documentation:
          description: |-
            Stores electricity, and is used to power many devices using wires or by directly attaching it.
            Has a maximum capacity of 200000.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          methods:
            GetResource: *GetResourceMethod
            GetResourceAmount: *GetResourceAmountMethod
            GetAmount: *GetAmountMethod
          events:
            ContainerChanged: *ContainerChangedEvent
      Propeller:
        documentation:
          description: |-
            Propellers propel forward when spun.
            Forward direction indicated by white spot.
            Does not work in space or non atmospheric planets.
          categories: [Propulsion, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Radar:
        documentation:
          description: An instrument that shows a 2D top-down representation of Earth.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Railgun:
        documentation:
          description: |-
            Fires a piercing Rail at high speeds. A long range weapon. Requires Rails and electricity for ammo. The damage increases for every 10 studs of length.
            It will pierce if the hit part is destroyed. Must be at least have a width and height of 6 and at least a length of 30 to function.
            While the Railgun is similar to the Artillery, the Railgun is nearly instant while Artillery is a projectile weapon.

            Requires to charge for one minute before it can fire. While charging and when charged, it creates large amount of heat. The charging status resets when this part is damaged.
            When it is finished charging, it will stop creating a sound. At that point, it must be triggered and supplied by a Rail bin in order to fire.
          categories: [Weapons, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Damaged: *DamagedEvent
            Loop: *LoopEvent
            Triggered: *TriggeredEvent
      Refinery:
        documentation:
          description: Turns oil into Petroleum and Gasoline.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      RepairLaser:
        documentation:
          description: Fires a beam that repairs objects. Repairs 1 HP/s.
          categories: [Weapons, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Rotor:
        documentation:
          description: |-
            Provides vertical height when spun, and only works in oxygen planets.
            The spin speed determines the height, and the tilt of the rotor determines the forward propulsion of the rotor.
          categories: [Propulsion, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Sail:
        documentation:
          description: Utilizes the wind to move forward.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Scrapper:
        documentation:
          description: Scraps unlocked solid items into their crafting components (with some loss) on contact when powered, else destroys them if unpowered. Will send locked single raw parts such as Iron or AlienCore into connected bins.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      SolarPanel:
        documentation:
          description: |-
            Generates electricity using solar energy from a local star.
            The closer it is to a star, the more energy it generates.
            The type of star also affects its energy generation, as well as the size of the SolarPanel.
            If the SolarPanel is blocked by a part, it will not generate any energy, glass however will work.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      StasisField:
        documentation:
          description: |-
            Creates a 500 stud radius field that prevents any parts or objects around it from being dragged.
            This can be used alongside with a RegionCloaker to create public infrastructure to avoid trolling and such.
            However, in order to function, the shield must be anchored/grounded, and nothing must be blocking above it. The shield is also extremely fragile.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      TouchSensor:
        documentation:
          description: Sends trigger signals upon contact.. with anything.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Touched:
              documentation: Fires when the part is touched by another object (or player!).
              parameters:
                - name: object
                  nullable-union:
                    - type: number
                    - type: PilotObject
                  documentation: The object that touched the part, if it's a player, it will be their UserId.
      Treads:
        documentation:
          description: |-
            Moves against surfaces it contacts. In order for the treads to function, you need to use a Motor, Engine, or DriveBox to spin up a part which will act as the driver part. The driver part should be connected to the treads via a rod, and should spin with the same orientation as a wheel would to achieve maximum speed.

            Multiple driver parts can be attached to the treads at once, and their speeds will be added together. The treads will move depending on the direction & speed that the driver part spins.

            The speed the treads move depends entirely on the speed of rotation on the axis perpendicular to the treads, so rotating the driver part off-axis will reduce (or invert) the speed. For example, 45 degrees off-axis = 50% speed, 90 degrees off-axis = 0% speed, 135 degrees off-axis = -50% speed, and 180 degrees off-axis = -100% speed.
          categories: [Propulsion, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Wing:
        documentation:
          description: |-
            Creates lift from being pushed forward.
            Works at higher altitudes and at better angles than a CrudeWing.
            Does not work in space or in non atmospheric planets.
          categories: [Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      WirelessButton:
        documentation:
          description: Similar to a button, but can be clicked from infinite distances and cannot be used for keybinds.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          events:
            OnClick: *OnClickEvent

      # Has events and is only craftable
      SolarScoop:
        documentation:
          description: |-
            Extracts materials from a star when powered and pointed at a star.
            Depending on the class of the star, it will extract more materials.

            Generates around 240 degrees of heat, meaning you will need atleast 12 coolers to cool it down.

            Red stars generate 25 helium, 5 plasma and 10 hydrogen per second.
            Orange stars generate 30 helium, 5 plasma and and 15 hydrogen per second.
            Yellow stars generate 35 helium, 5 plasma and and 20 hydrogen per second.
            Light blue stars generate 40 helium, 25 hydrogen, 10 plasma and and 10 iron per second.
            Neutron stars generate 60 helium, 45 hydrogen, 15 plasma and and 20 iron per second. It also generates 1-2 neutronium every 2 minutes.

            It is recommended to use a Filter to seperate the materials extracted by a solar scoop.
          categories: [Electrical, Craftable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      Warhead:
        documentation:
          description: |-
            Causes a powerful explosion when triggered. You can use a delay wire to make it explode after a few seconds and not immediately.
            The only down-side of the warhead is that it is blocked completely by energy shields.
          categories: [Weapons, Craftable]
        hydrator:
          name: wos-object
          events:
            Damaged: *DamagedEvent
            Triggered: *TriggeredEvent

      # Has events and is only spawnable
      Part100k:
        documentation:
          description: 100k visits special item.
          categories: [Spawnable]
        hydrator:
          name: wos-object
          class-name: 100k
          events:
            OnClick: *OnClickEvent
            Triggered: *TriggeredEvent
      DevBattery:
        documentation:
          description: A debug item meant for developers.
          categories: [Unused, Spawnable]
        hydrator:
          name: wos-object
          methods:
            GetResource: *GetResourceMethod
            GetResourceAmount: *GetResourceAmountMethod
            GetAmount: *GetAmountMethod
          events:
            ContainerChanged: *ContainerChangedEvent
      DevHeatStorage:
        documentation:
          description: A debug item meant for developers.
          categories: [Unused, Spawnable]
        hydrator:
          name: wos-object
          methods:
            GetResource: *GetResourceMethod
            GetResourceAmount: *GetResourceAmountMethod
            GetAmount: *GetAmountMethod
          events:
            ContainerChanged: *ContainerChangedEvent
      Door:
        documentation:
          description: A legacy pre-component part. When triggered, it will open, and if triggered again will close.
          categories: [Unused, Templates, Spawnable]
        hydrator:
          name: wos-object
          events:
            ComponentsUpdated: *ComponentsUpdatedEvent
      FourthOfJuly:
        documentation:
          description: Causes an explosion when triggered along with a Fourth Of July message. You can use a delay wire to make it explode after a few seconds and not immediately.
          categories: [Unused, Spawnable]
        hydrator:
          name: wos-object
          events:
            Damaged: *DamagedEvent
            Triggered: *TriggeredEvent
      HeatCell:
        documentation:
          description: |-
            Legacy test item. Stores heat energy.
            Has a limit of 400 kJ.
          categories: [Unused, Spawnable]
        hydrator:
          name: wos-object
          methods:
            GetResource: *GetResourceMethod
            GetResourceAmount: *GetResourceAmountMethod
            GetAmount: *GetAmountMethod
          events:
            ContainerChanged: *ContainerChangedEvent
      Hull:
        documentation:
          description: A legacy pre-component part. Is able to float in the water, as well as carry objects attached to it. Primarily used for creating boats and other water craft.
          categories: [Unused, Templates, Spawnable]
        hydrator:
          name: wos-object
          events:
            ComponentsUpdated: *ComponentsUpdatedEvent
      RepairPlate:
        documentation:
          description: |-
            EXPERIMENTAL - While at least 90% charged (27 power), distributes repaired health between itself and damaged parts attached to its top surface.

            Charges at a fixed rate of 1 power per second, up to a total capacity of 30. Once charged, it consumes 2.5 power per second.
            Can be chained with other RepairPlates.
            Power cannot be inserted or extracted.
            Cannot be resized below 1x1x1.
          categories: [Unused, Electrical, Spawnable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      WindTurbine:
        documentation:
          description: |-
            Creates rotation using the wind.
            Unreliable and large motor.
            Does not work in space or no-atmosphere planets.
          categories: [Unused, Spawnable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent
      tinnitus:
        documentation:
          description: An interesting spring which does strange things.
          categories: [Unused, Spawnable]
        hydrator:
          name: wos-object
          events:
            Loop: *LoopEvent

      # Has events
      Component:
        documentation:
          description: A portable component. May be installed on parts to add unique behaviours.
          categories: [Tool, Tools]
        hydrator:
          name: wos-object
          events:
            ComponentsUpdated: *ComponentsUpdatedEvent
      FactionHub:
        documentation:
          description: |-
            Configures faction settings, view members, invite players, accept invites, save resources/models and view controlled regions.
            This is not a form of claiming a region.
          categories: [Unused]
        hydrator:
          name: wos-object
          events:
            Configured: *ConfiguredEvent
            OnClick: *OnClickEvent

      # Is configurable and is both craftable and spawnable
      Antenna:
        documentation:
          description: A wireless transmitter that can transmit electricity from wires and trigger signals from trigger wires and buttons.
          categories: [Logic, Starter, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          configurables:
            AntennaID:
              documentation:
                description: The ID of this antenna, to transmit to others with the same ID.
                default: A1
                max-length: 64
              type: string
      ConveyorBelt:
        documentation:
          description: Moves objects ontop of it towards the front of the conveyor belt. Only moves when powered and anchored or attached to the ground.
          categories: [Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          configurables:
            ConveyorBeltSpeed:
              documentation:
                description: Determines the speed at which the conveyor will move items on top of it.
                default: 10
                range: [-30, 30]
              type: number
      DelayWire:
        documentation:
          description: Similar to a regular trigger wire, but depending on the configuration will wait x seconds before the trigger signal passes through.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          configurables:
            DelayTime:
              documentation:
                description: The time in seconds that it takes for signals to pass through this wire.
                default: 1
                range: [0, 360]
              type: number
      Filter:
        documentation:
          description: Similar to a chute and a pipe, but only allows the configured material to pass through.
          categories: [Storage, Spawnable, Craftable]
        hydrator:
          name: wos-object
          configurables:
            Filter:
              documentation:
                description: The name of the material allowed to pass through.
                max-length: 24
              type: string
            Invert:
              documentation: Whether or not to invert the filter.
              type: boolean
      Handle:
        documentation:
          description: A handle which can be equipped when a player touches it, turning all connected parts into an equipable tool.
          categories: [Tools, Spawnable, Craftable]
        hydrator:
          name: wos-object
          configurables:
            Swing:
              documentation: What the tool should do when clicking. Point mode will aim the handle at the mouse cursor.
              type: HandleSwingMode
            TriggerMode:
              documentation: Determines when this Handle should send trigger signals.
              type: HandleTriggerMode
            ToolName:
              documentation:
                description: The name of the tool.
                default: Handle
                max-length: 64
              type: string
      RemoteControl:
        documentation:
          description: Sends trigger signals forward wirelessly when triggered. Supports all variants of trigger signals including from Polysilicon.
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          configurables:
            RemoteControlRange:
              documentation:
                description: The range in studs at which signals will be transmitted.
                default: 120
                range: [1, 500]
              type: number
            RemoteControlMode:
              documentation: The way in which trigger signals should be transmitted. This setting only affects parts that are connective to trigger signals (e.g. TriggerWire).
              type: RemoteControlMode
      Router:
        documentation:
          description: A wireless transmitter that can transmit an ethernet connection.
          categories: [Logic, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          configurables:
            RouterID:
              documentation:
                description: The ID of this router, to transmit to others with the same ID.
                default: R1
                max-length: 64
              type: string
      TimeSensor:
        documentation:
          description: |-
            When the current time matches the time configured in the TimeSensor, it will send a trigger signal.

            For example, if the world turns 7:15 it will send a trigger signal.

            This is useful for creating dynamic lights that turn on only during the night, saving energy.

            The format should be hour:minute
          categories: [Logic, Spawnable, Craftable]
        hydrator:
          name: wos-object
          configurables:
            Time:
              documentation:
                description: The time at which this sensor will trigger.
                default: 7:30
                max-length: 5
              type: string
      TractorBeam:
        documentation:
          description: Fires a beam that exerts force on the object it hits. More effective in space due to low gravity, but still decently strong when affected by gravity. Force is affected by size and configuration.
          categories: [Weapons, Propulsion, Electrical, Spawnable, Craftable]
        hydrator:
          name: wos-object
          configurables:
            PowerPercent:
              documentation:
                description: Determines the percentage of total available force (depending on size) used by the beam.
                default: 100
                range: [0, 100]
              type: number
      Transporter:
        documentation:
          description: |-
            Acts as an antenna but for bins and objects containing materials such as liquids and solids.
            Useful for creating large factory bases with many extractors without using long chutes.
          categories: [Logic, Starter, Spawnable, Craftable]
        hydrator:
          name: wos-object
          configurables:
            TransporterID:
              documentation:
                description: The ID of this transporter, to transmit to others with the same ID.
                default: T1
                max-length: 64
              type: string

      # Is configurable and is only spawnable
      Relay:
        documentation:
          description: |-
            A powerful transmitter capable of transmitting trigger signals and resources/power between different regions.
            It is a more powerful version of the antenna and transporter.

            Unlike the antenna, the relay has 2 modes, mode 0 and mode 1.
            Mode 0 sends resources/power and trigger signals, while mode 1 receives it.

            Unlike the antenna, it can also transfer power in inactive regions or regions without players in them.
            This means that you can connect a relay to your main base, warp away without anyone in the base, and still have the relay get the sufficient amount of power.

            However, you should have only one sending relay per coordinate, as conflicts can occur if there are 2 or more relays in the region/coordinates sending power or signals with the same ID.
            On the other hand, there can be an infinite number of receivers but the power/resources will be distributed evenly among them.

            For example, let's say a relay network has a total output of 500 power and 25 iron. If there are 5 active receivers, each of them will get 100 power and 5 iron.

            When the relay is red, it means it not functioning. When it turns green, it is properly linked up to another relay or is sending signals.
          categories: [Unused, Spawnable]
        hydrator:
          name: wos-object
          configurables:
            Mode:
              documentation: The mode of the relay. Send outputs materials to other receiving relays; Receive receives materials from sending relays.
              type: RelayMode
            LinkerID:
              documentation:
                description: The ID of the relay, to send or take materials to or from other relays with the same ID.
                default: 1
                range: [1, 10000000000]
                increment: 1
              type: number

      # Is configurable
      DevTeleporter:
        documentation:
          description: A debug item meant for developers.
          categories: [Unused]
        hydrator:
          name: wos-object
          configurables:
            TeleporterID:
              documentation:
                description: The ID of the teleporter at the goal coordinates to teleport directly to.
                max-length: 64
              type: string

      # Is both craftable and spawnable
      Aerogel:
        documentation:
          description: An incredibly light and fragile material.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      AirSupply:
        documentation:
          description: Generates a 300 stud radius oxygen bubble when powered on. Very important part for space ships, as it acts as the oxygen supply for the ship.
          categories: [Electrical, Spawnable, Craftable]
        hydrator: wos-object
      Artillery:
        documentation:
          description: |-
            Fires a fast-moving metal shell upon being triggered.
            This metal shell generates a small explosion upon impact.
            Costs 15 iron per shot.
          categories: [Weapons, Spawnable, Craftable]
          code-sample: projectile-aim.luau
        hydrator: wos-object
      Ball:
        documentation:
          description: A ball shaped template object.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      BeamRifle:
        documentation:
          description: A deadly long-range energy sniper. Able to pick off targets at a long range with exceptional accuracy.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      BlastingCap:
        documentation:
          description: A component used in crafting recipes for more advanced explosive devices.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Block:
        documentation:
          description: A block shaped template object.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      BurstLaser:
        documentation:
          description: |-
            Fires 5 rapid sets of concentrated laser beams. Each beam does a mediate amount of damage.
            Costs 100 power for each beam fired, meaning the total power cost is 500 power.
          categories: [Weapons, Spawnable, Craftable]
        hydrator: wos-object
      Button:
        documentation:
          description: |-
            Sends trigger signals when clicked by a player.
            When connected to a seat and the input key is configured/configureed, the player sitting in the seat can activate the button by pressing the corresponding key.
            TriggerMode 0: Trigger on key down
            TriggerMode 1: Trigger on key up
            TriggerMode 2: Trigger on key down and key up
          categories: [Logic, Spawnable, Craftable]
        hydrator: wos-object
      Cannon:
        documentation:
          description: |-
            Fires a cannon ball when triggered or clicked.
            Must be supplied with an ammo material.
            Iron is prioritized, and results in one large cannonball being shot.
            Copper results in grapeshot.
          code-sample: projectile-aim.luau
          categories: [Weapons, Spawnable, Craftable]
        hydrator: wos-object
      Cement:
        documentation:
          description: A modern material useful for pavement.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Chute:
        documentation:
          description: |-
            Used to transfer solid resources between objects such as bins and extractors.
            Chutes may also transport multiple resources at the same time, allowing for an entire factory to be connected through one chute system.
          categories: [Starter, Storage, Spawnable, Craftable]
        hydrator: wos-object
      Claymore:
        documentation:
          description: A classic medieval sword used to cut down your enemies.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      Cleat:
        documentation:
          description: A textile resource similar to Rubber, except it has a high amount of friction and low bounciness. It can be used in physical machines such as the feet of mechs.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Cloth:
        documentation:
          description: A soft thin fabric that can soak up liquids.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Cone:
        documentation:
          description: A cone shaped template object.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      Cooler:
        documentation:
          description: |-
            Cools down the heat around a space when supplied with power.
            Glows blue while functioning. Can be used to provide a cool environment in hot areas.
            Is also useful for cooling down objects such as iondrives and engines.
            Cooling amount is based on size -20 X Y * Z / 16
          categories: [Electrical, Spawnable, Craftable]
        hydrator: wos-object
      CornerRoundWedge2:
        documentation:
          description: A corner shaped template object rounded inwards.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      CornerRoundWedge:
        documentation:
          description: A rounded corner shaped template object.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      CornerTetra:
        documentation:
          description: A template which is a tetrahedron subtracted from a cube.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      CornerWedge:
        documentation:
          description: A corner wedge shaped template object.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      CrossBow:
        documentation:
          description: A cheap primitive ranged weapon.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      Cylinder:
        documentation:
          description: A cylinder shaped template object.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      Diode:
        documentation:
          description: Acts as a wire/chute/pipe/etc, but only works one way, through the diode's input and output faces as indicated by the arrow.
          categories: [Electrical, Storage, Spawnable, Craftable]
        hydrator: wos-object
      EnergyGun:
        documentation:
          description: Fires a powerful shot of energy when provided power and triggered.
          categories: [Weapons, Spawnable, Craftable]
        hydrator: wos-object
      EnergySword:
        documentation:
          description: A short ranged melee weapon which forms its own gravitational field when lunged. Forged with incarnated ̶m̶a̶g̶i̶c science!
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      EthernetCable:
        documentation:
          description: Allows for the transfer of data between ports. Mostly utilized in programming.
          categories: [Logic, Spawnable, Craftable]
        hydrator: wos-object
      Extinguisher:
        documentation:
          description: A handy container with a spray nozzle to extinguish fires.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      Fence:
        documentation:
          description: A metal fence. Can be used to set up walls and guard structures and bases.
          categories: [Decoration, Spawnable, Craftable]
        hydrator: wos-object
      FireWood:
        documentation:
          description: A version of wood that is able to burn longer, allowing it to be an efficient fire burning device.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Flashlight:
        documentation:
          description: A flashlight which can be used to provide light.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      FloatDevice:
        documentation:
          description: Produces a force which counteracts gravity and keeps the device floating. The device will additionally resist upwards and downwards vertical motion.
          categories: [Propulsion, Electrical, Spawnable, Craftable]
        hydrator: wos-object
      Framewire:
        documentation:
          description: Enter the matrix.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Gear:
        documentation:
          description: A mechanical component commonly used in crafting recipes for many objects.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      GeigerCounter:
        documentation:
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Goo:
        documentation:
          description: A sticky substance that binds things together like glue. The effect lasts for for two minutes, but it can be washed off with Water. It will also melt off at 95 °F.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Gun:
        documentation:
          description: |-
            Fires a harmful bullet when triggered.
            Must be supplied with ammo in order to function.
            For example, you need an iron bin with 1 or more iron directly attached to it to work.
          categories: [Weapons, Spawnable, Craftable]
        hydrator: wos-object
      HalfSphere:
        documentation:
          description: A half sphere shaped template object.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      HeatPipe:
        documentation:
          description: Allows for the transfer of heat. Use a HeatPump to direct the heat.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Heater:
        documentation:
          description: Heats the air to `60 + volume / 16 * 10`°F.
          categories: [Electrical, Spawnable, Craftable]
        hydrator: wos-object
      Hotdog:
        documentation:
          description: sandwich.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      ImpulseCannon:
        documentation:
          description: Blasts a harmless burst of energy which sends anything nearby soaring at a high velocity.
          categories: [Weapons, Spawnable, Craftable]
        hydrator: wos-object
      Insulation:
        documentation:
          description: A flammable material with a low thermal conductivity.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Katana:
        documentation:
          description: A weeaboo sword used to cut down your enemies.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      Lantern:
        documentation:
          description: A handheld lantern which can be used to provide light.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      Marble:
        documentation:
          description: A compact, durable material. Primarily decorative.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      MonsterMashPotion:
        documentation:
          description: You'll be a graveyard smash with this thrilling dance potion.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      MustardGas:
        documentation:
          description: A heavy chemical warfare weapon used to damage organisms. Gas Masks nullify the effects of this gas.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Neon:
        documentation:
          description: A building decoration material that glows by itself without requiring power.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      NightVisionGoggles:
        documentation:
          description: A set of goggles which can be used to see in the dark.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      PDWX44:
        documentation:
          description: A versatile automatic pulse based PDW capable of dishing incredible amounts of damage in a small amount of time. Equipped with 3 barrels for an unparalleled firerate.
          categories: [Tool, Spawnable, Craftable]
        hydrator:
          name: wos-object
          class-name: PDW-X44
      Pipe:
        documentation:
          description: Provides a medium for the transfer of liquids and gases between Tanks and other objects.
          categories: [Storage, Spawnable, Craftable]
        hydrator: wos-object
      Pistol:
        documentation:
          description: A simple repeating firearm.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      PlasmaCannon:
        documentation:
          description: |-
            Fires an orb of unstable plasma out of the barrel exploding on impact.
            Needs to be fueled with 500 power and 50 helium or 1 plasma to fire.
          categories: [Weapons, Spawnable, Craftable]
        hydrator: wos-object
      Plutonium:
        documentation:
          description: A highly radioactive compound used in manufacturing nuclear explosives.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      PlutoniumCore:
        documentation:
          description: A volatile core close to going supercritical used in recipes for Nuclear explosives.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Primer:
        documentation:
          description: A component used in crafting recipes for a few objects.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Pulverizer:
        documentation:
          description: |-
            Pulverizes resources into powdered forms. Power cost: 3/s.

            Recipes:
            - 1x Quartz,1x Stone → 2x Sand
            - 1x Ice → 1x Snow
          categories: [Electrical, Spawnable, Craftable]
        hydrator: wos-object
      RTG:
        documentation:
          description: Creates electricity from decaying radioactive elements.
          categories: [Electrical, Spawnable, Craftable]
        hydrator: wos-object
      RegionCloaker:
        documentation:
          description: |-
            Hides a certain region from players, making the coordinates not appear on their screen.
            Region can only be (un)cloaked every 25 seconds. So if you unpower the RegionCloaker, you must wait 25 seconds before powering it again to ensure the region gets cloaked.
          categories: [Electrical, Spawnable, Craftable]
        hydrator: wos-object
      ReinforcedGlass:
        documentation:
          description: A stronger, slightly less malleable version of glass. Blocks radiation.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      RepairKit:
        documentation:
          description: A useful kit of tools that can be used to repair objects which have been damaged. Keep away from biters.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      Rice:
        documentation:
          description: Rice is nice.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      Rifle:
        documentation:
          description: A powerful long-range bolt action weapon. Q to scope.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      RoundWedge2:
        documentation:
          description: A block rounded inwards on one edge.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      RoundWedge:
        documentation:
          description: A block rounded on one edge, or 1/4 of a cylinder.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      Rubber:
        documentation:
          description: A textile resource used in manufacturing many industrial objects.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      RustedMetal:
        documentation:
          description: A weathered piece of metal.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      SMG:
        documentation:
          description: A fast firing, fully automatic gun able to pump out lots of rounds down range.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      ScubaMask:
        documentation:
          description: A set of goggles which can be used to help vision while underwater.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      SmoothGlass:
        documentation:
          description: A version of Glass using the Roblox Glass material. Additionally can be templated.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      SmoothReinforcedGlass:
        documentation:
          description: A version of ReinforcedGlass using the Roblox Glass material.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      SoundMuffler:
        documentation:
          description: A SoundMuffler will silences the sounds of machinery around it.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      SpawnPoint:
        documentation:
          description: Acts as a spawn location for the player who locked it.
          categories: [Starter, Spawnable, Craftable]
        hydrator: wos-object
      Spheroid:
        documentation:
          description: A stretchable sphere shaped template object.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      StudAligner:
        documentation:
          description: Snaps the entire assembly its attached to to the grid.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Tetrahedron:
        documentation:
          description: A tetrahedron template made of 3 perpendicular right triangles.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      Tile:
        documentation:
          description: A cheap material made from baked clay useful for building houses.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      TintedGlass:
        documentation:
          description: A material similar to Glass, but is tinted black on the front..
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Tire:
        documentation:
          description: A cylindrical shaped object used commonly in vehicles such as cars.
          categories: [Spawnable, Craftable]
        hydrator: wos-object
      Torch:
        documentation:
          description: A torch which can be used to provide light.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      TriggerWire:
        documentation:
          description: Allows trigger objects to interact with each other when connected by triggerwires.
          categories: [Logic, Spawnable, Craftable]
        hydrator: wos-object
      Truss:
        documentation:
          description: Used as a ladder.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      VintagePlasmaPistol:
        documentation:
          description: They don't make em like they used to.
          categories: [Tool, Spawnable, Craftable]
        hydrator: wos-object
      WaterCooler:
        documentation:
          description: Removes -100 heat from the surrounding area, when supplied with power. Performs the same amount of cooling that five coolers would, give or take.
          categories: [Electrical, Spawnable, Craftable]
        hydrator: wos-object
      Wedge:
        documentation:
          description: A triangular shaped template object.
          categories: [Templates, Spawnable, Craftable]
        hydrator: wos-object
      Wire:
        documentation:
          description: Allows electrical objects to interact with each other when connected by wires. For example, attaching a wire between a powercell and a light will allow electricity to move through the wire, allowing the light to function causing a source of light to be created.
          categories: [Electrical, Starter, Spawnable, Craftable]
        hydrator: wos-object
      ZapWire:
        documentation:
          description: Electrocutes players when touched. Can be used to set flammable objects on fire.
          categories: [Logic, Weapons, Decoration, Electrical, Spawnable, Craftable]
        hydrator: wos-object

      # Is only spawnable
      AlienCore:
        documentation:
          description: |-
            A mysterious piece of technology found within many robotic aliens.
            Although its precise function is unknown, it manages to be extremely useful in advanced technologies.
            It seems to emanate raw power on its own, but only these robotic constructions seem to know .
            Generally, more powerful aliens will utilize more alien cores.
          categories: [Natural, Electrical, Resources, Spawnable]
        hydrator: wos-object
      Aluminum:
        documentation:
          description: A light, non-durable material. Has a good thermal conductivity, but is lower than most other metals.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Beaker:
        documentation:
          description: A container for holding mixed chemicals.
          categories: [Tool, Spawnable]
        hydrator: wos-object
      Beryllium:
        documentation:
          description: A lightweight metal only found on Barren planets used for preventing plutonium cores from going supercritical until detonated.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Billboardium:
        documentation:
          description: A super strong alloy made of Robux and pure refined ad.
          categories: [Unused, Spawnable]
        hydrator: wos-object
      ChemicalSynthiser:
        documentation:
          description: |-
            Synthesizes and mixes chemical compounds. Consumes matter out of attached bins in order to fuel the material synthesis.
            - 1 Nitrogen + 3 Hydrogen = 2 Ammonia
            - 1 Ammonia + 1 Ethanol = Diethylamine
            - 2 Hydrogen + 2 Oxygen = Hydrogen Peroxide
            - 2 Hydrogen + 1 Oxygen = Watern
            - 1 Sodium + 1 Chlorine = Salt
            - 2 Oxygen + 1 Carbon = Carbon Dioxide
            - 2 Nitrogen + 1 Oxygen = Laughing gas/N2O
            - 3 Chlorine + 1 Ethanol + 1 Water = Chloral Hydrate
            - 1 Potassium + 1 Water = Explosion
            - 1 Sodium + 1 Oxygen + 1 Hydrogen = 1 Sodium-Hydroxide
            - 2 Oil + 1 Sodium-Hydroxide = Napalm
            - 1 Diethylamine + 1 Ammonia + 1 Lithium + 1 Phosphorus = Hallucinogenic Compound
            - 1 Salt + 1 Lithium + 1 Silicon + 1 Hydrogen = Hallucinogenic Toxin
            - 1 Ammonia + 1 Oil + 1 Oxygen = Cyanide
            - 1 Chlorine + 1 Ammonia = Mustard gas
            - 1 Lithium + 1 Mercury = Toxin
            - 1 Fluorine + 1 Hydrogen + 1 Potassium + 1 Sulphuric Acid = Fluorosulfuric Acid
            - 1 Fluorosulfuric Acid + 1 Hydrogen Peroxide + 1 Nitrogen = Nitric Acid
          categories: [Unused, Electrical, Spawnable]
        hydrator: wos-object
      Coal:
        documentation:
          description: A natural resources commonly used as a source of generating heat and energy. Can be placed in a BurnerGenerator to generate simple and fast energy.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Copper:
        documentation:
          description: A brown, shiny metal used heavily in electronics, a great conductor of both heat and electricity. Has a very high thermal conductivity, easily the best for common metals.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      DarkMatter:
        documentation:
          description: A very valuable material extracted from black holes and a few empty regions in space. Can be used to generate energy when supplied to a DarkConverter.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      DevGenerator:
        documentation:
          description: A debug item meant for developers.
          categories: [Unused, Electrical, Spawnable]
        hydrator: wos-object
      Diamond:
        documentation:
          description: A rare, carbon-dense, and very durable gem. Takes 2x energy damage & allows lasers to pass.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Egg:
        documentation:
          description: The perfect consumable item.
          categories: [Unused, Spawnable]
        hydrator: wos-object
      ExoticMatter:
        documentation:
          description: "???"
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      FactionSpawn:
        documentation:
          description: Acts as a spawn location for the faction of the player who locked it.
          categories: [Unused, Spawnable]
        hydrator: wos-object
      Flint:
        documentation:
          description: |-
            Useful for lighting up flammable materials.
            Simply rub it against a flammable material and it will set it on fire.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Gasoline:
        documentation:
          description: A liquid used for fueling many devices such as rockets and engines.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Generator:
        documentation:
          description: Creates energy from rotation.
          categories: [Unused, Electrical, Spawnable]
        hydrator: wos-object
      Glass:
        documentation:
          description: Created when sand is burned, set on fire, or fed into a Kiln. Can be broken by heavy impacts or by fist.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Gold:
        documentation:
          description: A very valuable and stretchable material. Has a thermal conductivity less than copper, and higher than aluminum.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Grass:
        documentation:
          description: An organic substance found in terra and forest planets. Often green, but can be other colors. Useful for planting seeds for agriculture.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      HeatSink:
        documentation:
          description: LEGACY. Reduces the air temperature by 10 °F (Produces 13.018197023481843 kW of heat energy).
          categories: [Unused, Spawnable]
        hydrator: wos-object
      Heatshield:
        documentation:
          description: Generates a 300 stud radius area that protects all players and only players within the vicinity from temperature damage.
          categories: [Unused, Electrical, Spawnable]
        hydrator: wos-object
      Helium:
        documentation:
          description: A light invisible odorless gas, floats up.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Hydrogen:
        documentation:
          description: A gas commonly found in stars and gas giants.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Ice:
        documentation:
          description: A compact natural resource found in tundra planets and the top of a few mountains. It is a slippery material, and has very low friction which can be useful in some devices.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      ImpactPlate:
        documentation:
          description: |-
            EXPERIMENTAL - Distributes the damage it takes between itself and parts attached to its top surface, with higher health parts absorbing the most damage.
            25% resistance to kinetic damage (guns, blades, cannons, explosions).
            Cannot be chained with other ImpactPlates.
          categories: [Unused, Spawnable]
        hydrator: wos-object
      Iron:
        documentation:
          description: A compact and durable material, commonly found in planets. It is used often in crafting, and is a very important resource to have. Has poor thermal conductivity compared to most metals.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Jade:
        documentation:
          description: Reduces damage taken by 1.5 to a minimum of 0.2, but takes 25% additional damage.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Lava:
        documentation:
          description: A liquid used for fueling many devices such as rockets and engines.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Lead:
        documentation:
          description: An uncommon material used in protection against radiation and weapon manufacturing. Has one of the lowest thermal conductivities of all elemental metals in the game, next to Titanium.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Magnesium:
        documentation:
          description: A shiny gray solid that is flammable, randomly ignites when touching stone.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Neutronium:
        documentation:
          description: The most durable obtainable material in the game. It is a strange form of matter found from the crusts of neutron stars. Due to the nature of neutron stars, neutronium is the hardest known material as well as the densest known material in the universe.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      NitrogenOxide:
        documentation:
          description: A light gas emitted from machines such as extractors and rockets. Inhaling can cause severe lung damage.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      NuclearWaste:
        documentation:
          description: A highly radioactive material produced from spent Uranium in a reactor.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Obamium:
        documentation:
          description: An ancient artifact left behind from an alternate reality.
          categories: [Unused, Spawnable]
        hydrator: wos-object
      Oil:
        documentation:
          description: A liquid used in refineries to produce Gasoline which can be used for fueling engines and rockets and Petroleum which can be used to make plastic.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Perfectium:
        documentation:
          description: The perfect material. Unbreakable, very stretchable, but is impossibly rare. The very sight of it makes you wonder the imperfections of human beings.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Petroleum:
        documentation:
          description: A gas used for creating plastic.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Plasma:
        documentation:
          description: A gas found abundant in stars, and can be harvested from them. Used primarily for weapons, as well as electrical components.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Quartz:
        documentation:
          description: A translucent and malleable crystal useful for making durable windows.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Radiator:
        documentation:
          description: LEGACY. Emits heat by releasing photons, making it ideal for discarding heat, and cooling things down. Will raise the temperature of surrounding air by 2.25 °F/s (85% of the input heat will be permanently discarded). Effectively gets rid of 16.6 kW (1 kW is 1 kJ/s) of heat energy. In total, only 2.93 kW of the heat energy it releases will re-enter any surrounding air. In space, all 19.53 kW of the Radiator's throughput will be expelled.
          categories: [Unused, Spawnable]
        hydrator: wos-object
      Ruby:
        documentation:
          description: A shiny red gem which can be found in mountain deposits. Exceptionally durable for how easily it can be obtained. Takes 2x energy damage & allows lasers to pass.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Sand:
        documentation:
          description: An abundant resource that can be found in the shores of terra and forest planets, the sea floors of ocean planets and in the dunes of desert planets. When burnt, the sand becomes glass.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Shotgun:
        documentation:
          description: |-
            Fires a shot of harmful pellets when triggered.
            Must be supplied with ammo in order to function.
            For example, you need an iron bin with 1 or more iron directly attached to it to work.
          categories: [Unused, Weapons, Spawnable]
        hydrator: wos-object
      Silicon:
        documentation:
          description: A metalloid that is very useful for electronics. Can commonly be found in cliffs and rocks.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Snow:
        documentation:
          description: An abundant resource that can be found in terra biomes and tundra planets. Can be melted into water.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Stanlium:
        documentation:
          description: Its love quivers, like it yearns for something within you; an eerie siren song that penetrates souls and tells of the destruction.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Steam:
        documentation:
          description: A result of water being heated up to high temperatures.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Stick:
        documentation:
          description: A natural resource found in trees and flora, often accompanied by wood. It is used for creating vital tools.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Stone:
        documentation:
          description: A resource found in nearly all planets. It is not recommended to use for structures, but is often used in crafting simple objects.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Sulfur:
        documentation:
          description: A yellow flammable solid which can be found in Stone deposits. Being set on fire gives it a special blue fire.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      TestStarMap:
        documentation:
          description: |-
            A developer version of the starmap.

            Showcases the entire universe. Lag maybe?? :topkek:
          categories: [Unused, Electrical, Spawnable]
        hydrator: wos-object
      Titanium:
        documentation:
          description: A strong heavy material that is very useful for small scale constructs. Has a very low thermal conductivity, the lowest of all metals in the game.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Uranium:
        documentation:
          description: |-
            A radioactive material often found in deposits in planets, especially ones near stars.
            Useful for energy generation from reactors or radiation generators.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      VitalScanner:
        documentation:
          description: Displays chemicals another player has absorbed.
          categories: [Tool, Spawnable]
        hydrator: wos-object
      Water:
        documentation:
          description: |-
            The basis of all life, and is a liquid found in terra, forest, ocean and certain tundras and rogue planets.
            At 212 degrees, the water evaporates into steam.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object
      Wood:
        documentation:
          description: A natural resource found in trees and flora. It is a simple and yet effective material that is used for simple objects and structures. These can be mainly found in terra and forest planets, but can occasionally be found in temperate tundra and desert planets.
          categories: [Natural, Resources, Spawnable]
        hydrator: wos-object

      # Worthless
      Frog:
        documentation:
          description: Stupid frog for stupid people.
          categories: [Unused]
        hydrator: wos-object
      AdBoard:
        documentation:
          description: Allows the creation of Ad elements, automatically. Very useful for making money.
          categories: [Unused, Logic]
        hydrator: wos-object
      AdminTool:
        documentation:
          description: A debug item meant for developers.
          categories: [Unused, Tools]
        hydrator: wos-object
      Mandrillium:
        documentation:
          description: An ancient artifact left behind from an alternate reality.
          categories: [Unused]
        hydrator: wos-object
      StanSword:
        documentation:
          description: "..."
          categories: [Tool, Tools]
        hydrator: wos-object
      SubspaceTripmine:
        documentation:
          description: |-
            WARNING: HIGH EXPLOSIVE DEVICE. When triggered, this devastating weapon rips a gashing hole in the fabric of reality - subsequent spacetime reification results in a large explosion. USE: Drop mine. Once the mine stops moving, it will enter subspace and become invisible. At this point the mine is armed. Touching the mine will set it off... (Disabled in Testing Zone)
          categories: [Unused, Tools]
        hydrator: wos-object