Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.
Filter loader...
Filter versions...
Filter channels...

Controlify 2.0.0 (Beta 8)

This version has the following builds - make sure you select the right one for your Minecraft version:

  • 1.20.1
  • 1.20.4
  • 1.20.6 (also supports 1.20.5)

Bug fixes

  • Fix 1.20.1 specific issue where Controlify never initialised
  • Fix issue where Controlify would not initialise in quiet mode

Controlify 2.0.0 (Beta 7)

This version has the following builds - make sure you select the right one for your Minecraft version:

  • 1.20.1
  • 1.20.4
  • 1.20.6 (also supports 1.20.5)

On-screen keyboard

This build adds a new on-screen keyboard that is currently only available in the chat screen.

This replaces the old functionality of attempting to open the system keyboard which could lead to the game window being minimized or the keyboard being hidden behind the window.

This feature is currently experimental, and can be disabled per-controller in the settings menu. The layout is not final and feedback is appreciated while I continue to improve it such as the layout.

Yes, it is planned that this keyboard will automatically appear for any other text input fields in the future.

Other changes

  • Add DualSense mute button light integration with simple voice chat mod.
  • Re-enable mod compatibilities on 1.20.6 build. (except Iris for now)
  • Update the SDL controller mapping definitions

Bug fixes

  • Fix crash when pressing B on the title screen and other glitches with buttons in menus.
  • Fix rumble master volume not doing anything
  • Fix DualShock 4 and DualShock 3 icons not working.

Controlify 2.0.0-beta.6

Bug Fixes

  • Fix crash when joining multiplayer

Bug Fixes

  • Fix YACL version constraint being set to an unreleased version of YACL

This build targets 1.20.1, 1.20.4 and 1.20.5-rc2

More supported controllers!

  • Added support for Switch Pro controllers and any switch controllers that emulate it.
    • A new icon set is also present for switch controllers
    • This is not support for JoyCons
  • Added support for a new firmware of Xbox controllers.

Bind icons - now powered by fonts!

The button icon rendering system has been completely overhauled. It now utilises the font renderer. Other mods can now embed these icons within their text components, and servers can now send these through the chat.

// will display as the missing character square on clients without Controlify
{"key": "controlify:walk_forward", "font": "controlify:inputs"}
// will display 'No controlify here' with clients without Controlify
{"translate": "controlify.placeholder","with":[{"key": "controlify:walk_forward", "font": "controlify:inputs"},"No controlify here!"]}

This also allows for resource packs to provide HD icons!

New button icon set!

Many previous icons have been redrawn. They are now using 16x textures.

  • DualSense controllers now have an additional texture for the mute button (this is functional by the way!)
  • Xbox Series controllers now have an additional texture for the share button (also functional!)
  • Generic controllers now have textures for paddles and an extra miscellaneous button for controllers that support it
  • A completely new Switch Pro icon set to go along with Switch Pro controller support.

Server handshake

Servers with Controlify installed will now initiate a handshake with the player;

  • If a client does not have Controlify installed, it will allow them to connect
  • If a client has Controlify installed but the protocol is not the same as the server, it will be disconnected
  • If a client has Controlify with a matching protocol version, it will allow them to connect

Note: protocol version is not the same thing as mod version. It is only changed when a change is made to the way packets are sent and received.

Note: the client will not make itself known to a server unless the server implements the handshake protocol.

Changes

  • Controlify will now hard-crash when it fails to create a controller
    • This is useful because it will be more obvious to you that there was an issue, rather than Controlify just not detecting it and silently failing. You will be able to submit a crash report to me to get it sorted.
  • A new toast is now displayed after an unfixable error occurred and the controller config had to be reset
  • Prevent the 'use the mouse' tutorial from appearing when a new world is started in controller mode.
  • Switch use-item rumble to be under the 'Interaction' category, rather than 'Player'

Bug fixes

  • Fix a memory leak that retained world data through the 'Loading Terrain' screen. (#293)
  • Fix vibration not disabling when 'Allow Vibration' is off (#263)
  • Fix 'cannot find SDL3.dll' logs spamming (#294)
  • Don't enable the HD Haptics component if on macOS since it's broken
  • Fix an error that was causing controller configuration to reset (#290)

Update target version from potato snapshot to 1.20.5-pre1

Additions

  • Radial menus for creative hotbar save/load
  • Radial menu to select hotbar slot
  • Now publishing a secondary offline jar that bundles all the natives inside the JAR This jar will not ask to load SDL. It will attempt to do so automatically.

Translations

Controlify is now on Crowdin, if you'd like to help, join my discord and ask!

  • 100% complete French translation - thanks Myuui!
  • 100% complete Mexican Spanish translation - thanks TheLegendofSaram and Zetsphiron!

Bug Fixes

  • Fix water splash rumble being applied when flying through water in spectator mode
  • Fix mixed input not working after enabling explicitly in config screen (closes #267)
  • Fix radial button not being able to be changed (closes #275)
  • Fix disconnecting/reconnecting the same controller being detect as a second controller (closes #276)
  • Fix axes not working when rebound in the settings (closes #274)
  • Fix in-game drop key conflicting with gui back/exit bind (close #272)
  • Optimise some mixins

Added support for 1.20.1, please report any weird issues concerning this!

Changes

  • Only let users change 'Load Natives' option if they are supported on the system
  • Fix DualSense left_stick_up icon being broken
  • Game Mode Switcher - you can now bind a key to open a radial menu to change the current game mode
  • Rewritten flick stick to be accurate
  • Fix crash when the config can't be read

Known bugs

  • DualSense HD haptics are reported as working for macOS and Linux, but does not do anything.

Overview

Rewritten controller backend

Every feature of a controller has now been turned into a modular component, each being optional and provided by the underlying driver. For example, the SDL gamepad driver will add a rumble component, which contains all the logic for rumble, but GLFW won't.

As well as all that, the way inputs (buttons, axes, hats) are programmed has been completely rewritten to allow for an extremely modular system, each input has its own identifier, like controlify:button/south. This means custom mappings are not restricted to using only the hardcoded gamepad inputs. Generic joystick inputs slot into this system nicely using identifiers like controlify:axis/0/negative. Then, you can layer input mappings on top of the driver provided inputs like controlify:axis/0/negative -> controlify:axis/left_stick_up. Or, make your own inputs like mypack:button/paddle_left powered by only resource packs! This mapping process has been greatly simplified with an in-game mapping wizard that can walk you through creating a mapping (currently only to map to gamepads).

Controller Mapping Wizard

If your controller is not detected as a gamepad, and instead a regular joystick (either by a driver issue, or you really are using something like a flight-stick), you will be given the opportunity to easily map your controller to a regular gamepad layout to allow for the default binds to work and to get button textures. In the future, I hope to create a platform to automatically share your controller mappings to be used by other people. You can even create your own resource pack that includes these mappings, and even custom button textures. If you'd like help on how to do this, join my discord server

SDL3

With 2.0, Controlify now utilises SDL3, the new in-development version of SDL that powers the advanced controller features. Hopefully, this should mean compatibility for more controllers. However, I regret to say that Steam Deck users will have to continue waiting for native support for back buttons and gyro. After heavy research and collaboration with the SDL team, we've concluded that due to the nature of Steam Input, it's impossible to bypass it unless on a driver level, which is happening. A kernel driver for Steam Deck is in the works.

DualSense HD Haptics

Controlify now has basic support for DualSense controller HD haptics. You will feel subtle vibrations when interacting with menus throughout the game. There is currently no support for adaptive triggers but this is trivial to add in the future. No haptic effects yet exist for gameplay, this involves sound design which I am not very good at. You can disable HD haptics in the vibration group in the settings menu.

Changelog

  • Add checksums to controller natives to prevent crashing when the SDL download was aborted, then tried to load next launch
  • Fix virtual mouse being jittery
  • New rumble effect for landing in water
  • Reduce the amount of rumble sources into simpler categories
  • Reimplemented controller type default mapping with the new system
  • Add a bluetooth warning screen that appears on first launch to suggest using USB for features such as HD haptics. This only appears on controllers where a feature is limited by bluetooth. For now, just DualSense.
  • Add HD haptic support for navigating through gui elements
  • Refactor of look input code
  • Add deadzone visualizer into the deadzone settings
  • Rewrite controller code completely
  • Increase unknown controller submission name to 64 chars
  • Adjust way controller UIDs are created to prevent same controllers being identified differently between launches
  • Add an option to adjust the radial menu timeout (#254)
  • Fix range of chat keyboard height being 800%
  • More resilient bind rendering to prevent seeing missing textures

External resources



Project members

isxander

Owner


Technical information

License
LGPL-3.0-or-later
Client side
required
Server side
unsupported
Project ID