Controlify

Another controller mod - for fabric!

LGPL-3.0 License

Stars
105
Committers
13

Bot releases are visible (Hide)

Controlify - Controlify 2.0.0-beta.3 for MC 1.20.4

Published by isXander 6 months ago

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
Controlify - Controlify 2.0.0-beta.3 for MC 1.20.5-pre1

Published by isXander 6 months ago

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
Controlify - Controlify 2.0.0-beta.2 for MC 1.20.5-alpha.24.12.potato

Published by isXander 7 months ago

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
Controlify - Controlify 2.0.0-beta.2 for MC 1.20.1

Published by isXander 7 months ago

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
Controlify - Controlify 2.0.0-beta.2 for MC 1.20.4

Published by isXander 7 months ago

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
Controlify - Controlify 2.0.0-beta.1+1.20.4

Published by isXander 7 months ago

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
Controlify - Controlify 1.8.1+1.20.4

Published by isXander 9 months ago

Controlify 1.8.1 for 1.20.4

Bug Fixes

  • Fix crash when opening Sodium options when Reese's Sodium Options is installed.
Controlify - Controlify 1.8.0+1.20.4

Published by isXander 9 months ago

Controlify 1.8.0 for 1.20.4

Joystick Gamepad Emulation

Controlify now supports joystick gamepad emulation. Some controllers may not be picked up correctly
as a gamepad, so now you can emulate a gamepad by teaching Controlify what each input on your controller
corresponds to on a gamepad.

This will automatically appear if Controlify detects that your controller is not a gamepad.
This is a common issue, where all the button textures show as purple/black squares.

Additions

  • Add new rumble effect when walking on soul sand or any other block that slows you down.
  • Add recipe book navigation by Arno Keesman (#222)
  • Add a button that links to the wiki when the controller carousel screen is empty (no controllers detected).

Changes

  • Improved functionality of changing a binding. They should be picked up a lot better now, and darkens
    the rest of the screen around the control.
  • Removed MixinExtras from the JAR since it is now included by Fabric Loader.
  • Rename 'Auto Deadzone Calibration' to 'Auto Calibration', and duplicate the option into the gyro section.
  • Better detection of damage for the rumble effect.
  • Rumble is now silenced when the game is paused.
  • All rumble effects are cleared when disconnecting.
  • Stop reducing aim sensitivity on crossbows since you do not aim when you pull them back.
  • Update the internal game controller database to the latest version.
  • Add a controller to the known list that was submitted heavily by the 'Submit Unknown Controller' screen.
  • Refactor the way Controlify shows the setup screens like calibration and submit unknown controller.

Bug Fixes

  • Fix drop button from triggering if exit gui and drop are the same button.
  • Fix VMouse handling triggering whilst in-game, causing the button that toggles it to override other controls,
    like changing perspective.
  • Fix switching tabs in YACL not focusing the buttons properly.
  • Fix Sodium GUI compatibility, controls were not focusing. (THIS DOES NOT APPLY TO REESE'S SODIUM OPTIONS)
  • Fixed other mods like FreeCam from breaking input.

Translations

  • French translation by Myuui (#211)
Controlify - Controlify 1.7.0+1.20.4

Published by isXander 10 months ago

No changelog provided.

Controlify - Controlify 1.7.0+1.20.3

Published by isXander 11 months ago

No changelog provided.

Controlify - Controlify 1.7.0+1.20.2

Published by isXander 11 months ago

Controlify 1.7.0 for 1.20.1

Updated to 1.20.2.

Changes since 1.7.0-beta.3

Bug Fixes

  • Fix crash when sometimes opening chat screen, even without a controller (#186)

New Features

  • Added D-Pad snapping in container screens
  • Keyboard-like movement whitelist and warning toast when joining new servers
  • Added bind to open F3 debug screen
  • More snap points on recipe book
  • Allow users to define a custom SDL natives path (so you can put them in a common dir if you want)
  • Add a reset all binds button to controls tab
  • Added an SDL download screen that appears with a progress bar when downloading SDL2 for the first time or an update.

Changes

  • Switched to Java Native Access (JNA) from Java Native Interface (JNI) for SDL2 native library.
    • This should fix issues on Linux and macOS when loading SDL2.
    • This makes adding more features with SDL2 easier in the future.
  • Provided gamecontrollerdb.txt to SDL and GLFW to (hopefully) improve controller compatibility.
  • Controller calibration now detects triggers on joysticks. You must re-calibrate your controller for this to take effect.
  • Internal changes to the way controllers are discovered, loaded and managed.
  • delegate_setup config option has been renamed to quiet_mode.
  • Pause screen's disconnect shortcut now focuses the button instead of clicking it.
  • Add a donate button to the controller carousel screen.
  • Modify how analogue inputs are processed whilst ingame or using the virtual mouse to make it feel more "circular"
  • Marginally improve performance of Controlify by using optimized hashmaps.
  • Pressing back button on server list now focuses on the back button.

Bug Fixes

  • Fix pressing F3-Esc crashing when a controller is active.
  • Fix Immediately Fast compatibility causing extreme log spam.
  • Fix generic XInput controllers being identified as 8BitDo an controller.
  • Fix NullPointerException when opening radial menu with an invalid action bound.
  • Fix crash when discovering controllers without SDL loaded.
  • Fix crash when sometimes opening chat screen, even without a controller (#186)
Controlify - Controlify 1.7.0-beta.3+1.20.2

Published by isXander 12 months ago

Controlify 1.7.0 (Beta 3) for 1.20.2

New Features

  • Added D-Pad snapping in container screens
  • Keyboard-like movement whitelist and warning toast when joining new servers
  • Added bind to open F3 debug screen
  • More snap points on recipe book
  • Allow users to define a custom SDL natives path (so you can put them in a common dir if you want)
  • Add a reset all binds button to controls tab

Changes

  • Internal changes to the way controllers are discovered, loaded and managed. (this could introduce new bugs)
  • delegate_setup config option has been renamed to quiet_mode.
  • Pause screen's disconnect shortcut now focuses the button instead of clicking it.
  • Add a donate button to the controller carousel screen.
  • Modify how analogue inputs are processed whilst ingame or using the virtual mouse to make it feel more "circular"
  • Marginally improve performance of Controlify by using optimized hashmaps.

Bug Fixes

  • Fix hotplugging when using natives.
  • Fix SDL download screen progress bar being a missing texture.
  • Fix people being unable to write newlines and spaces in signs when using mixed input mode.
  • Fix some modded GUIs crashing when attempting to open when Controlify is loaded.
  • Fix tridents not causing a vibration.
  • Fix rumble not working on joysticks.
  • Fix fabric mod json requirement allowing any 1.20 version not 1.20.2 and above.
Controlify - Controlify 1.7.0-beta.2+1.20

Published by isXander about 1 year ago

No changelog provided.

Controlify - Controlify 1.7.0-beta.1+1.20

Published by isXander about 1 year ago

Controlify 1.7.0 (Beta 1) for 1.20.1

This patch focuses on stability and controller compatibility.

Changes

  • Switched to Java Native Access (JNA) from Java Native Interface (JNI) for SDL2 native library.
    • This should fix issues on Linux and macOS when loading SDL2.
    • This makes adding more features with SDL2 easier in the future.
  • Provided gamecontrollerdb.txt to SDL and GLFW to (hopefully) improve controller compatibility.
  • Controller calibration now detects triggers on joysticks. You must re-calibrate your controller for this to take effect.
  • Added an SDL download screen that appears with a progress bar when downloading SDL2 for the first time or an update.

Bug Fixes

  • Fix pressing F3-Esc crashing when a controller is active.
  • Fix Immediately Fast compatibility causing extreme log spam.
  • Fix generic XInput controllers being identified as 8BitDo an controller.
Controlify - Controlify 1.6.0+1.20

Published by isXander about 1 year ago

Controlify 1.6.0 for 1.20.1

Additions

  • Added No Fly Drifting option, can be disabled by the server.
  • Add 'Take Screenshot' binding
  • Add 'Pick block with NBT' binding

Changes

  • Make all server policies 'allow' by default. If you install Controlify,
    you expect it.

Bug Fixes

  • Fix use item rumble getting stuck on death or respawn
  • Fix toggle sneak toggling when dismounting or landing from flight

Language Updates

  • Added Vietnamese translation (#145)
Controlify - Controlify 1.5.1+1.20

Published by isXander about 1 year ago

Controlify 1.5.1 for 1.20.1

New Features

  • Added Simple Voice Chat support. You can now bind push-to-talk and whisper
    to your controller and it will work properly. Radial menus have custom icons
    for some SVC actions.
  • Added radial menus to the API completely.

Changes

  • Made rumble effects merge together rather than pausing each other when multiple effects
    are playing at once.
  • Slightly increased the values the auto-deadzone calibration gives you.

Bug Fixes

  • Fixed the radial up/down/left/right bindings not having a localised name.

Language Updates

  • Updated Chinese translation.
Controlify - Controlify 1.5.0+1.20

Published by isXander about 1 year ago

Controlify 1.5.0 for Minecraft 1.20.1

New Features

Radial Menu

radial menu showcase

Added a radial menu for quick access to up to 8 common binds that could not fit on
the controller buttons. The menu can be opened by holding down the bind (right d-pad by default),
then selecting with the action you want (right-stick by default) and letting go of the bind.

The menu can be configured in the config screen, as usual.

Unknown Controller Submission

picture of controller submission screen

When your controller is unidentified, a screen will pop up, asking you to send off some
controller data in order for me to add it to the identification database. You can skip this
screen if you want to, and it won't bother you again for that controller.

Changes

Controller Handling

A lot of changes and improvements have been made regarding the way Controlify handles controllers:

  • Moved to an SDL2-based driver when available, you shouldn't notice any difference, but may support
    more controllers than the old GLFW approach.
  • XInput devices are now named properly in some cases, instead of just "XInput Controller"
  • Upon failure of detection, the controller will continue to load, as an unknown controller.
  • Updated the required SDL2 natives version to 2.28.2, hopefully fixing some controller bugs.
  • Reduced the delay before the mouse hides itself after use when using Mixed Input mode (from 3 to 2 seconds).
  • Added the 'PRINT_VID_PID' debug property which prints the vendor and product ID of any connected controller.

Configuration Screen

  • Updated some controller arts.
  • Made the reset button act as an unbind button for controls.
  • Added a new "What's New" section to the configuration screen, so it's easier to spot the
    new features.
  • Fixed controller names not stacking properly when multiple controllers have the same name.
  • Credited Andrew Grant for making the controller art on the carousel screen, with a link to his
    GitHub.

Bug Fixes

As usual, a lot of bug fixes have been made:

  • Fixed not being able to type in text boxes after focusing them with a controller.
  • Fixed controller guides in inventory corresponding to the incorrect binds.
  • Fixed rumble not working intermittently.
  • Fix server reach-around not respecting config option and always being disallowed.
  • Fixed the chat rendering incorrectly when hidden.
  • Fixed the controller being disabled when pressing "Maybe Later" on the calibration screen
    if the controller was already calibrated.
  • Fix mixin remap error when starting up the game.
  • Fix missing textures relating to joysticks.
  • Fix missing language entry for joystick axis deadzones.

Controller Database Updates

Changes to the database that Controlify uses to identify controllers at runtime.

  • Added more Xbox controller identifications.
  • Added 8BitDo SN30 Pro & Ultimate.

Translations

  • Update chinese translation
Controlify - Controlify 1.4.6+1.20

Published by isXander about 1 year ago

Controlify 1.4.6 for 1.20

Bug Fixes

  • Fix hotplug issue whilst in-game.
  • Fix crash when depending on Controlify in a loom development environment
Controlify - Controlify 1.4.5+1.20

Published by isXander about 1 year ago

Controlify 1.4.5 for 1.20

Bug Fixes

  • Fix some movement input not working after hotplugging a controller until you switch worlds
  • Improve the feel of keyboard-like movement input
  • Use SDL when a controller isn't detected with hid4java
  • Fix crash on servers due to loading sounds
  • Resolve incompatibility with Fabric Item Group API where custom creative tabs would be cycled through in a random order
Controlify - v1.4.4+1.20

Published by isXander over 1 year ago

Controlify 1.4.4 for 1.20

Bug Fixes

  • Fix some binds not being able to be held down.