Skip to content

Conversation

douira
Copy link
Collaborator

@douira douira commented Oct 24, 2024

Also thanks to @KingContaria for writing code on which I based the forge mod config entrypoint loader. @IMS212 wrote the initial redesign of the options page.

There's a bunch of TODOs in the code that I want to address. Feel free to help me with them and I'll merge them into this PR.

The design of the page as well as the outwards facing API are open to feedback and remain subject to change until release.

fixes #867
fixes #2309
fixes #2831
fixes #2976
fixes #3140

@douira
Copy link
Collaborator Author

douira commented Nov 3, 2024

After implementing dynamic value constraints in the slider and cycler control elements, the remaining TODOs are not necessary for the basic required features to work and it's ready for review. The requests for additions to the API were implemented.
The search bar is not yet functional, but we can simply remove that without regressing the UX and add it when it gets implemented later. @KingContaria mentioned he wanted to work on the tooltip scroller and I plan on slowly working through the other remaining non-essential TODOs, which are related to UX/UI.
One thing I can't do and should be clarified before we release, is the automatic import of vanilla options into our options screen that @IMS212 had prototyped. I don't have that code but would integrate it if provided with it.

@douira douira marked this pull request as ready for review November 3, 2024 04:16
@douira douira requested a review from jellysquid3 November 3, 2024 04:16
@douira
Copy link
Collaborator Author

douira commented Nov 26, 2024

I've been provided by IMS's code to import vanilla options but haven't worked through that yet. @KingContaria contributed scrollable tooltips and I further reworked tooltip and donation button rendering.

@douira
Copy link
Collaborator Author

douira commented Feb 9, 2025

We've discussed this PR in discord, and it requires some UX/UI changes but the rest is ok. Other contributors are invited to also take on these work items.

  • Search bar should be moved so that it is across the entire top screen edge, and the donation nag button should be at the end of the search bar.
  • The buttons for Apply/Done should be on the bottom screen edge.
  • The right pane of options should be presented as a single linear tape, so that all options can be scrolled with the mouse without any clicking any categories in the left pane.
  • When performing a search, the options tree should be filtered out of all "irrelevant" options, and sorted according to "relevance" using the current metric.
  • There should be headers (matching the category name) above each option group in the right pane.
  • The left and right panes should be independently scrollable. The left pane should highlight which section is currently focused in the right pane.
  • If the user clicks a category in the left pane, the right pane should jump to the first option in that category.

@douira
Copy link
Collaborator Author

douira commented Aug 28, 2025

Help wanted! I've tried rebasing this on dev but there's some problems with the usage of Minecraft GUI rendering facilities. Feel free to contribute a fix, I'm not familiar with the changes or the underlying framework.

IMS212 and others added 2 commits August 28, 2025 23:50
…h initial work on UX/UI refactor

Curently broken: DonationButtonWidget and ScrollableTooltip need updating to the latest state of Minecraft GUI rendering

fix: correct condition and use setAllowedValuesProvider

fix: don't show fabulous on unsupported systems

Tackle page headers and Apply/Done on bottom

don't open vanilla options when doing text input in search mode

move scroll code into separate file

fix option list scroll bars not working because of wrong dimensions that fail the hit test

reset options to binding value on initial config screen open to fetch changes from changed vanilla options

improve top margin in scissor of search results

add new vanilla option to options screen

fix focus behavior on search bar

fix compact donation button functionality

fix merge issues

fix some focus issues with the search box

add search results with page list and clickable page list items

use abstract option list instead of concrete option list where possible

use option page instead of just page as the metadata on text sources from options

make the search results actually ordered

make page list highlight more visible

remove search result class and move score into text source,
this simplifies a number of operations around the search result processing.
also added more context to the text source objects

add search widget that turns search button into a text box with a close button,
other refactoring around page and option list layouts

move search button to top of page list

add search index interface and bigram search index implementation

add page list width constant

move builder impls into separate package

update todos

add arrow to toolbar at hovered element, moved tooltip logic into own class, moved donation button logic into own class, refactored layout

misc cleanup and refactor scrollbar widget to extend abstract widget

consolidate more colors into the color class

new: make tooltips scrollable

allow changing fullscreen resolution on macOS too
fixes CaffeineMC#2831

Fix cycling controls not playing a sound when activated using the keyboard
fixes CaffeineMC#2309

add annotation-based entrypoint loading on neoforge, refactored how mod metadata is retrieved, updated documentation

implement dynamic value constraints in control elements, cleanup control elements

cleanup

add ability for mods to override other mods' options with new options

allow gui scale to be changed by holding down control and scrolling,
refactor option applying, move flag processing into Config,

add api methods to add button that redirects to an external page

add usage documentation, update todos

truncate mod header subtitles if too long

add default implementation to early register entrypoint so users don't need to implement both entrypoints even if they only need the late ("main") one

improve config failure crash message

fix tooltip after rebase

constrain tooltip to screen

move layout constants into separate class,
fix gradient behind sidebar,
change layout of buttons and options panes,
fix overlapping ui elements,
fix scissor areas,
make spacings and arrangement consistent

fix crash not working correctly

add api method for formatting version instead of setting a new one

fix: move sliders and tickboxes when sccrolling
Co-authored-by: contaria <[email protected]>

new: scrollable option list
Co-authored-by: contaria <[email protected]>

refactor: store dimensions in AbstractWidget
Co-authored-by: contaria <[email protected]>

move important members of option builder subinterfaces more useful

add api to add custom screens, use a color theme builder instead of a direct method

allow users to set their own theme colors,
fix some issues when text is too long

scrollabe page list
authored by @KingContaria

Add WIP config api with IMS' redesign of the options page and contaria's forge mod entrypoint loader code

New game GUI experiment

Co-authored-by: Ennui Langeweile <[email protected]>
Co-authored-by: contaria <[email protected]>
Co-authored-by: haykam821 <[email protected]>
Co-authored-by: IMS212 <[email protected]>
@douira
Copy link
Collaborator Author

douira commented Aug 29, 2025

WIth IMS's patch I've rebased this branch on top of current dev so it's workable again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants