1
0
forked from Clones/Controlify

1.1 release

This commit is contained in:
isXander
2023-04-21 23:20:57 +01:00
parent 9e08c2cd98
commit 4e076631a4
3 changed files with 83 additions and 3 deletions

View File

@ -17,7 +17,7 @@ plugins {
}
group = "dev.isxander"
version = "1.1.0-beta.4+1.19.4"
version = "1.1.0+1.19.4"
repositories {
mavenLocal()

View File

@ -4,17 +4,70 @@ A noteable update to Controlify, with a lot of new features.
## New Features
- Controller rumble support for all platforms.
- Controller vibration support for all platforms.
- Gyro support for compatible controllers.
- Reach-around block interaction that imitates Bedrock Edition's exact behaviour.
- Reduce bow sensitivity option. When aiming a bow, the sensitivity is reduced and more fine control is given.
- 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 `ScreenProcessor`s and `ComponentProcessor`s 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](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.
### 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
@ -25,6 +78,32 @@ mods that utilise any of Controlify's APIs. This will not happen in minor update
- Some ingame guide classes have moved inside the `api` package.
- Partial Chinese translation by [@GodGun968](https://github.com/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](https://github.com/isXander/Controlify/issues/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.

View File

@ -263,6 +263,7 @@ public class YACLHelper {
var vibrationGroup = OptionGroup.createBuilder()
.name(Component.translatable("controlify.gui.group.vibration"))
.tooltip(Component.translatable("controlify.gui.group.vibration.tooltip"))
.tooltip(canRumble ? Component.empty() : Component.translatable("controlify.gui.allow_vibrations.not_available").withStyle(ChatFormatting.RED))
.collapsed(!canRumble);
List<Option<Float>> strengthOptions = new ArrayList<>();
Option<Boolean> allowVibrationOption;