# Controlify 1.1 (Beta 3)

## New Features

### Gyro support

Controlify now has built-in support for controller gyroscopes, allowing you to make fine movements in-game.
This can be combined with [flick stick](https://www.reddit.com/r/gamedev/comments/bw5xct/flick_stick_is_a_new_way_to_control_3d_games_with/) to be able to use a controller without
the compromise of using the thumbsticks.

This requires use of a compatible controller, such as a Dualsense controller.

Currently, the Steam Deck is not supported, as it does not expose the gyro data to the OS, however, explicit
support for this device is planned in the future.

### UI sounds

A toggleable setting enables playing the legacy console edition UI sound when changing the selected component
in GUIs. In the future, this will be expanded to have more sounds.

### Under-the-hood drivers

Controlify now uses a new driver system, which allows me to combine multiple libraries to create a more
powerful controller interface, with a modular system to mix and match drivers.

This means in the future, I can add more advanced features per-controller, such as Steam Deck touchpad and
back buttons explicitly supported in-game.

### Improved joystick mapping

Allows the mapping of joysticks to be more flexible, allowing for more complex mappings. This has been
battle-tested with a Thrustmaster TM.16000M FCS HOTAS joystick.

### Built-in resource pack for extra mappings

Controlify now has a built-in resource pack, which contains mappings and language files for the
aforementioned joystick.

The split was done to not modify the default language file, which would become huge in size and potentially cause merge
conflicts.

### Improved crash handling

Where possible, Controlify now generates Minecraft crash reports with details of the controller which
caused the crash.

## Changes

### Screen navigation improvements

Moving between components in GUIs feel more like most other games, where when holding the stick in a direction,
it moves once, waits a bit, and then moves through components quickly. Think holding down a key while you type.

### More controller identifications

More controllers are now identified out-of-box, particularly the PS3 and Dualsense controllers.

Along with that, Dualsense, PS3 and Steam Deck now have textures.

### Vibration natives downloading changes

The vibration natives are now downloaded from my maven repository, allowing for better version control
and syncing with the mod version.

## Bug Fixes

- Fixed a bug where closing the pause menu or similar menu would cause you to trigger in-game inputs if 
  bound to the same button
- Fixed YetAnotherConfigLib not being declared as a fabric dependency, causing crashes if not present.

## API Changes

### Sources JAR now published

The sources JAR is now published to the maven repository, allowing you to debug Controlify and view documentation in your IDE.

### Controller binding API refactor

Controller binding API has had a minor refactor that will cause incompatibilities with mods.

### YACL option binding generator

Bindings now allow you to create a YACL option, to add to your own config GUIs.
