Skip to content

Releases: isXander/Controlify

v1.1.0+1.19.4

21 Apr 22:22

Choose a tag to compare

Controlify 1.1

A noteable update to Controlify, with a lot of new features.

New Features

  • Controller vibration support for all platforms.
  • Gyro support for compatible controllers.
  • Reach-around block interaction that imitates Bedrock Edition's exact behaviour.
  • Reduce aim sensitivity option. When aiming, the sensitivity is reduced and more fine control is given.
  • UI sounds option.
    • 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.
  • Modded keybinds are now automatically registered as controller binds.
  • Bindings are now grouped into categories.
  • Under-the-hood drivers.
  • Compound joysticks, allowing for an infinite amount of inputs. This currently has no UI, and you have to create a joystick mapping resource-pack yourself. This will come in a future update.
  • Two abstract gui controller binds are available for mod developers to use in any screen context.
  • Button guide in screens, with a new API for mod developers to add their own button guides.
  • New registry for screenop API, as an alternative to mixing into UIs, you now register ScreenProcessors and ComponentProcessors on the Controlify entrypoint.
  • New builder API for controller bindings, deprecating the old constructor-based approach.

Controller Vibration

This is a feature that is available on all platforms, Windows, Linux, and Mac.

The current vibrations are:

  • Using items (including eating)
  • Taking damage
  • Ender dragon death
  • Anvil use (clang! clang! clang!)
  • Explosions
    • Their intensity is scaled based on the explosion's distance from the player and power.
    • This is a cool custom effect where you feel an initial boom, and then another fading vibration.
  • Survival block mining
    • The intensity is scaled based on the block's hardness.
  • Items breaking
  • Fishing rod bite

Vibrations play nicely together, where playing a vibration over a longer vibration does
not cause the longer vibration to stop, but is suppressed until the interrupting vibration is completed.

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 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.

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.

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.

Changes

There are multiple breaking API changes in this update, but as of writing, I am not aware of any
mods that utilise any of Controlify's APIs. This will not happen in minor updates when this mod is more popular.

  • Ingame guide registry now takes a function that provides IngameGuideContext, rather than many parameters, this
    future-proofs the API if more parameters are added.
  • Some ingame guide classes have moved inside the api package.
  • Partial Chinese translation by @GodGun968.

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.

Improved crash handling

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

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.

Bug Fixes

  • Fixed a bug where some in-game binds worked in containers. (#35)
  • Fix controllers not being detected half the time on startup.
  • Fix unidentified controllers not being able to save configs.
  • 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.

v1.1.0-beta.3+1.19.4

18 Apr 20:35

Choose a tag to compare

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 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.

v1.1.0-beta.2+1.19.4

05 Apr 23:12

Choose a tag to compare

Controlify 1.1 (Beta 2)

New Vibrations

  • Explosions now cause a vibration.
    Their intensity is scaled based on the explosion's distance from the player and power.
    This is a cool custom effect where you feel an initial boom, and then another fading vibration.
  • Survival block mining now causes a vibration. The intensity is scaled based on the block's hardness.
  • Item break now causes a vibration.
  • Fishing rod fish bite now causes a vibration.

Vibration Changes

A new continuous vibration effect has been added. This allows for more complex
vibrations over a non-specific duration. This means an overhaul of some vibrations:

  • Bow draw vibration now feels like a real bow draw with a slight wobble on max charge (like the animation).
  • Crossbow load vibration now matches the animation.
  • Eating vibration now matches the animation.

Also, vibrations now play nicely together, where playing a vibration over a longer vibration does
not cause the longer vibration to stop, but pause.

Bug Fixes

  • Fix the health vibration sometimes not playing.
  • Fix controllers not being detected half the time on startup.
  • Fix unidentified controllers not being able to save configs.

v1.1.0-beta.1+1.19.4

04 Apr 16:30

Choose a tag to compare

v1.1.0-beta.1+1.19.4 Pre-release
Pre-release

Controlify 1.1 (Beta 1)

A noteable update to Controlify, with a lot of new features.

New Features

  • Controller vibration support for all platforms.
  • Reach-around block interaction that imitates Bedrock Edition's exact behaviour.
  • Reduce aim sensitivity option. When aiming, the sensitivity is reduced and more fine control is given.
  • Modded keybinds are now automatically registered as controller binds.
  • Bindings are now grouped into categories.
  • Compound joysticks, allowing for an infinite amount of inputs. This currently has no UI, and you have to create a joystick mapping resource-pack yourself. This will come in a future update.
  • Two abstract gui controller binds are available for mod developers to use in any screen context.
  • Button guide in screens, with a new API for mod developers to add their own button guides.
  • New registry for screenop API, as an alternative to mixing into UIs, you now register ScreenProcessors and ComponentProcessors on the Controlify entrypoint.
  • New builder API for controller bindings, deprecating the old constructor-based approach.

Controller Vibration

This is a feature that is available on all platforms, Windows, Linux, and Mac.
Only a few vibrations are implemented in this beta, but I'd love suggestions for more.
The current vibrations are:

  • Using items (including eating)
  • Taking damage
  • Ender dragon death
  • Anvil use (clang! clang! clang!)

Changes

There are multiple breaking API changes in this update, but as of writing, I am not aware of any
mods that utilise any of Controlify's APIs. This will not happen in minor updates when this mod is more popular.

  • Ingame guide registry now takes a function that provides IngameGuideContext, rather than many parameters, this
    future-proofs the API if more parameters are added.
  • Some ingame guide classes have moved inside the api package.
  • Partial Chinese translation by @GodGun968.

Bug Fixes

  • Fixed a bug where some in-game binds worked in containers. (#35)

v1.0.0+1.19.4

15 Mar 20:05

Choose a tag to compare

Controlify 1.0

Due to this being the first full release, all features from betas will be listed here.

Features

  • In-game complete controller input
  • 4-axis screen operation with thumbsticks
  • In-game button guide hud with accompanying mod API
  • Cursor snapping to slots in containers (with API)
  • Bedrock-like look sensitivity
  • Controller mapping interface to change buttons
  • "Virtual mouse" fallback for incompatible screens and containers
  • Joystick support (limited)
  • Auto deadzone detection
  • Controller hotplugging
  • Resource-pack based controller model identification, button rendering and joystick mapping
  • Seperate X/Y axis sensitivity settings
  • Axis deadzone configuration
  • Accessibility options per-controller, auto jump, toggle sneak, toggle sprint.
  • 1.19.4 tab system compatibility
  • Steam Deck support
  • Chat offset for on-screen keyboards
  • Keyboard-like movement setting for over-zealous anti-cheats
  • Immediately-fast HUD batching

Compatibility

  • Most vanilla menu support
  • YACL support
  • Sodium support
  • Iris support
  • Explicit immediately-fast support for button guide hud batching

New since 0.3.0

  • Update to 1.19.4 release
  • Rewritten controller identification system to be more reliable and to support Steam Deck
  • Add icon to Mod Menu
  • Fix virtual mouse spawning top-left when it should spawn in the middle
  • Chat offset for on-screen keyboards
  • Add compatibility for navbars for all screens, rather than just create world
  • Controller switch confirmation toast
  • Keyboard-like movement setting for over-zealous anti-cheats
  • Fix binding API breaking with generics
  • Fix YACL cycling using incorrect bindings

Milestone 3

22 Feb 21:14

Choose a tag to compare

Milestone 3 Pre-release
Pre-release

Milestone 3

This milestone includes a lot of community suggestions and joystick support (though multiple of these cannot be used at once yet)

  • Joystick support - completely modular with resource pack mapping system.
  • Controller deadzone auto-calibration system
  • More button guides
  • Swap hands bind
  • Shift click bind
  • Better error handling for controller identification service
  • Improve controller looking
  • Improve controller snapping
  • Auto jump per-controller
  • Steamdeck identification
  • Sodium support (this build and onwards)
  • Current controller is now saved between loads
  • New 1.19.4-pre1 create world screen tab compatibility

0.2.0+1.19.4

10 Feb 21:50

Choose a tag to compare

0.2.0+1.19.4 Pre-release
Pre-release

Milestone 2

  • In-game dynamic button guide hud with accompanying API
  • Controller cursor snapping for containers
  • Rewrite of player look input to feel more snappy and bedrock-like
  • Fix toggle sneak not working
  • Fix controller bindings not saving in some scenarios

java_H8fuDjkXww

0.1.0+1.19.4

08 Feb 22:04

Choose a tag to compare

0.1.0+1.19.4 Pre-release
Pre-release

Milestone 0.1

  • In-game complete controller input
  • Controller Mapping
  • Joystick screen navigation
  • Virtual Mouse Support in any GUI
  • Controller hotplugging
  • Common vanilla menu compatibility
  • YACL compatibility
  • Controller model identification
  • Controller button theming
  • Separate X/Y look sensitivity control
  • Controller deadzone configuration
  • Controller Accessibility (auto jump + sneak)