BetterQuesting
64 merged pull requests.
New Features
- #248 Added
ItemPatternPlaceholderand integrated it withQuestRecipeHandlerin NEI support code to enable quest bookmark import functionality. - @Nana-Sakura- Added: ItemPatternPlaceholder item, NEI recipe overlay support, Quest bookmark import from NEI
- Closes GTNH#26307
- #242 Added silent completion flag to
RewardQuestCompletionand updatedEventHandlerto respect this setting when broadcasting quest completions. - @UltraProdigy- Added: Silent quest completion setting
- #241 Introduced
TextEditorAction,TextEditorActionRegistry, andTextEditorSyntaxHighlighterto the API; refactoredPanelTextFieldandGuiTextEditorto use the registry and support syntax highlighting with cached visual lines. - @ABKQPO- Added: TextEditorAction interface, TextEditorActionRegistry, TextEditorActionContext, TextEditorMacro interface, TextEditorSyntaxHighlighter, Syntax highlighting support
- Fixed: Multi-line cursor navigation
- #237 Added quest line visibility toggle to
GuiQuestLines, refactored lock tray positioning, improved scroll bar scaling, and added UI logic for auto-selecting the first quest line on new games. - @Algent- Added: Quest line visibility toggle button, Icon for hidden view mode
- Fixed: Scroll bar size calculation
- #236 Modified
CommonProxyto enable automatic quest book update reloading on data refresh. - @UltraProdigy- Added: automatic QB reload on update
- #232 Extended
FormattingTagto support quest link formatting; modifiedPanelTextBoxto render and handle quest links; added quest link support toGuiTextEditor. - @NotKaizul- Added: quest link formatting tag, quest link rendering
- #231 Added
NoticeConfigholder class for notification settings; createdGuiQuestNotificationSettingsfor player settings and quest-level overrides inGuiQuestNotificationSettingswithin quest editor; extendedQuestInstanceandNativePropswith notification properties; modifiedQuestNotificationrendering and event handling. - @alppp- Added: GuiQuestNotificationSettings, NoticeConfig, notification customization properties
- #230 Introduced
PopItemListfor item selection and cycling; extendedPanelInteractiveItemSlotwith cycling logic; refactored duplicate code from task panels intoPanelTaskItemBase. - @tiffit- Added: PopItemList popup, ore dict item cycling UI
- Removed: duplicate code in task panels
- #227 Introduced
IQuestContextMenuEntryinterface andQuestContextMenuRegistryfor external mods to register quest context menu items; modifiedGuiQuestLinesto pick up and display registered entries. - @Eldrinn-Elantey- Added: QuestContextMenuRegistry, IQuestContextMenuEntry
- #226 Extended
TaskRetrievalandPanelTaskRetrievalto support a new mode requiring only one item from a group. - @NotKaizul- Added: single-item retrieval task type
- #224 Added
countAsQuestproperty (default true) toNativePropsandQuestInstance; exposed toggle in quest editor advanced settings. - @Caedis- Added: countAsQuest quest property
- #223 Modified
GuiQuestLinesto calculate and display completion percentages; updated language files with new translation keys. - @Caedis- Added: completion percentage display, quest line progress tracking
- #210 Modified
PanelScrollingNBT.javato check for Shift key state on click and bypass intermediate dialogs when Shift is held. - @UltraProdigy- Added: Shift+Click item addition
- #205 Added
DirectionalLine.javaandFactoryDirectionalLine.javafor chevron rendering, extendedCanvasQuestLine.javaandPanelLine.javawith directional rendering, added config options for arrow display and hover animation, line scaling with zoom applied. - @tiffit- Added: directional line rendering, arrow animation, line hover effects
- Closes GTNH#22515
- #201 Modified
QuestInstance#setCompleteto iterate through quest tasks and mark allignored()tasks as complete when quest completion is set. - @Eldrinn-Elantey - #200 Extended
QuestNotification.javato use GTNHLib's TitleAPI via Class.forName reflection, addedQuestNotificationEvent.java, newGuiNotificationSettings.javaUI, updatedNetNotices.javato include title data, added title timing config (10/40/10 fade). - @alppp- Added: title notification display, notification settings GUI, title API integration
- #199 Rewrote
RenderUtils.javacolor handling, addedPopColorInput.javaHSV color picker with preset palette and recent colors, modifiedGuiTextEditor.javato include color/effect buttons, updated format parser to handle both § and & codes, new color continuation across line wraps. - @alppp- Added: HSV color picker popup, color formatting buttons, gradient continuation, format code parser rewrite
- #198 Added
PopContextMenuHoverSub.javafor context menu rendering, extendedGuiQuest.javaandGuiQuestLines.javato display view dependency relationships with new language strings. - @ABKQPO- Added: view dependency context menu, quest dependency visualization
- #191 Modified
NetQuestSync.javato check servernoRewardsflag and conditionally skip reward panel rendering. - @vulcandragi - #189 Added new toggle setting in
BQ_Settings.java, modifiedGuiTextToggles.javaand text rendering pipeline to strip color codes when toggle is disabled, preserves formatting directives on all themes. - @UltraProdigy- Added: color toggle setting, monochrome rendering mode
- #186 Added new command handler in
QuestCommandComplete.javato accept anallparameter and complete all quests via iteration, with corresponding language string added. - @UltraProdigy- Added: complete all quests command, language string for all parameter
- #181 Added copy button control in GuiQuest with clipboard text handling. - @Faotik
- Added: copy quest description button in questbook
- Closes GTNH#23084
- #176 Integrated VmAdapter for Vending Machine 0.4.0 into QuestCache and quest UI; added quest command support for vending trades. - @cubefury
- Added: VmAdapter integration with Vending Machine, vending machine trade support in quest cache, vending machine quest commands
New Content
- #221 Added and updated Russian locale entries across multiple language files. - @Eldrinn-Elantey
- Added: Russian translation entries
Changes
- #233 Removed ColorUtils class, reverted QuestTranslation changes, and removed a dependency addition. - @Ranzuu
- Removed: ColorUtils utility class, unnecessary dependency, QuestTranslation modifications
- #217 Switched
DirectionalLineto useVector2ffrom lwjgl instead of JOML. - @tiffit- Removed: JOML dependency usage
- #209 Added
widthScaleparameter toDirectionalLine.javaandFactoryDirectionalLine.javainitialization, updated theme JSON to expose the property. - @tiffit- Added: widthScale property
- #203 Modified
GuiTextEditor.javato wrap native style button text with corresponding formatting codes (e.g., wrapping with&6...&rfor gold). - @sudojunior - #177 Updated theme name in bq_themes.json. - @Ranzuu
- #172 Replaced RenderUtils string methods with GTNHLib equivalents in BetterQuesting core and ClientProxy; requires GTNHLib PR #169 and Angelica PR #1017. - @DeathFuel
- Added: GTNHLib string method support
- Fixed: compatibility with custom font rendering
- #168 Added detailed logging in CanvasQuestSearch to help troubleshoot quest loading and search issues. - @glektarssza
- Added: detailed error logging in quest search
Bug Fixes
- #258 Corrected synchronization logic in
NetQuestSyncto properly handle quest completion packets across LAN sessions. - @danyadev- Fixed: LAN quest synchronization, Duplicate completion notifications
- Closes GTNH#19269
- #257 Corrected framebuffer caching logic in
CanvasQuestLine, texture rendering inSimpleTextureandSlicedTexture, and scrolling viewport calculations inCanvasScrolling. - @boubou19- Fixed: Quest line rendering artifacts, Texture rendering glitches, Viewport rendering issues
- Closes GTNH#26554
- #250 Implemented
TextFormattingUtilsutility class for stripping text formatting, integrated it intoGuiTextEditorandQuestCommandDefaultsto clean file names on save. - @UltraProdigy- Added: TextFormattingUtils class
- Fixed: Formatting codes in quest file names
- #234 Stripped text formatting from items in
PanelRewardChoice,PanelRewardItem, andPanelTaskItemBaseto ensure consistent readability. - @UltraProdigy- Removed: native item formatting
- Fixed: unreadable colored item names in certain themes
- Closes GTNH#25108
- #229 Replaced custom clipboard implementations with
GuiScreen.setClipboardString, which is properly handled by lwjgl3ify's SDL clipboard mixin on macOS. - @danyadev- Removed: custom clipboard copy implementations
- Fixed: macOS quest ID copy crash
- Closes GTNH#24492
- #222 Updated
bq_themes.jsonto apply theme-appropriate colors to GUI dividers. - @Ranzuu- Fixed: visually jarring white/black dividers
- #220 Updated
NetTaskCheckboxand task implementations (TaskFluid,TaskRetrieval) to sync checkbox state and consume quest progress across party members. - @tiffit- Fixed: desynchronized quest progress in multiplayer
- #214 Modified
EventHandler.javato listen toMouseInputEventin addition toKeyInputEventso buffered mouse events are processed without waiting for keyboard input. - @fowdre- Fixed: mouse button keybind not triggering Open Quests
- #206 Added cleanup logic to
SceneController.javaandGuiQuestLines.javato properly dereference resources on screen close, preventing memory accumulation. - @Alexdoru- Fixed: 4 client memory leaks
- #204 Added scroll position preservation logic in
CanvasItemDatabase.javawhen items are dynamically added to the registry during filtering. - @sudojunior- Fixed: scroll drift during item filtering
- #202 Fixed
GuiQuest.javareward panel initialization to ensurerectRewardis properly initialized even whennoRewardsis enabled, preventing infinite refresh loop when vending machine trades are present. - @cubefury- Fixed: reward panel NPE in multiplayer with disabled rewards
- Closes GTNH#24324
- #197 Modified
FormattingTag.javaandGuiTextToggles.javato preserve underline decoration and apply fallback color for URLs when color formatting is disabled. - @UltraProdigy- Fixed: URL visibility and clickability in color-toggle disabled state
- #196 Removed static server thread field initialization from
BetterQuesting.java, moved server lifecycle management toCommonProxy.javaand newServerTaskScheduler.javaclass to use instance-based references that update per-world load. - @Alexdoru- Added: ServerTaskScheduler class
- Removed: static server reference in core
- Fixed: server thread leak on world reload
- #192 Corrected text tag ordering in
GuiTextToggles.javato properly render Note and Warn formatting. - @UltraProdigy- Fixed: Note and Warn text formatting
- #190 Added null safety check in
EventHandler#postPresetNoticeto verify quest database is loaded before attempting to process notices. - @Alexdoru- Fixed: NPE in preset notice handling during initialization
- Closes GTNH#23646
- #188 Added null check in
TaskRetrieval.java#getTextsForSearchto handle null return values safely. - @Alexdoru- Fixed: NPE in quest search when task returns null text
- #187 Modified
NetNotices.javato send both quest name and questId separately in notice payloads, allowing client-side translation with fallback to provided name before quest database sync. - @Eldrinn-Elantey- Fixed: UUID display in quest notifications on client restart, first-join popup showing quest IDs
- Closes GTNH#23296
- #184 Added file filtering in QuestCommandDefaults to skip non-quest files when loading quest data. - @danyadev
- Added: file type validation in quest loading
- Fixed: quest loading failure with unrelated files in config folder
- #183 Updated PopChoice to apply theme text color to reward claim messages instead of forcing white. - @UltraProdigy
- Fixed: reward claim text always white regardless of theme
- #180 Added boss bar state clearing in PanelEntityPreview to prevent boss health bars from displaying during entity preview rendering. - @ModularityEnjoyer
- Added: boss bar state management in entity preview
- Fixed: boss bars appearing in entity previews (issue #22849)
- Closes GTNH#22849
- #179 Added proper cleanup of world references in PlayerContainerListener and QuestBook event handlers on world unload. - @Alexdoru
- Added: world reference cleanup on unload
- Fixed: world reference memory leak
- #178 Added localization support to QuestTranslation and EventHandler server-side quest notifications. - @iouter
- Added: server-side quest name localization method
- Fixed: unlocalized quest names in server notifications
- #175 Corrected line break logic in RenderUtils to properly handle languages without spaces between words. - @ghostflyby
- Fixed: line break positioning for non-space-separated languages
- #173 Added null checks in OreDictTexture and PanelButtonQuest to gracefully handle missing BigItemStack data instead of crashing. - @ah-OOG-ah
- Added: null checks in icon rendering
- Fixed: NullPointerException in icon display with bad quest data
Performance
- #255 Implemented geometry batching through Tessellator with 4,095 quad cap, cached quest frames in display lists, added framebuffer-based icon/line caching, viewport culling, and configurable cache modes (off/low-fps/freeze) borrowed from NEI architecture. - @boubou19
- Added: QuestFrameCache for display list caching, Viewport culling in CanvasCullingManager, Configurable cache refresh modes, Tessellator batching for dependencies, Framebuffer caching for quest icons and lines
- #243 Added static caching of enum values arrays in
FactorySlicedTextureandSlicedTexture. - @boubou19 - #211 Modified
CanvasScrolling,CanvasSearch, and related database panels to batch panel additions rather than adding individually, conditionally sort by depth only when needed, and reduced max panel-add time from 100ms to 10ms. - @tiffit- Fixed: UI lag when loading large item lists
Internal / Refactor
- #239 Extracted text formatting logic in
PanelTaskItemBaseinto overridable methods to enable addon reuse and customization. - @koolkrafter5- Added: Overridable text rendering methods
- #215 Removed unused test classes, simplified implementations, and cleaned up duplicate code in handlers, party GUIs, and toolbox utilities. - @danyadev
- Removed: GuiScreenTest, PanelVBarFill, PresetTexture
- #212 Replaced hardcoded NBT key access in
NetQuestEditwith encapsulated methods; refactoredToolboxToolCopyto mutate quest objects instead of NBT compounds before sending. - @danyadev- Added: quest action methods in NetQuestEdit
- Fixed: potential mutation of existing quests in createQuests
Chores
- #254 Updated localization string in
en_US.langfrom 'dependants' to 'dependents'. - @fbfnysnshnsgnwg - #235 Introduced
ColorUtilsclass; updated dependencies to use correct version without shadowing; removed duplicate color definitions fromQuestTranslation. - @Ranzuu- Added: ColorUtils utility
- Removed: duplicate color definitions
- #228 Migrated colors to
ColorUtilsfrom GTNHLib; removed color definitions fromQuestTranslation; updated dependencies. - @Ranzuu- Added: ColorUtils dependency
- Removed: color definitions from QuestTranslation
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@UltraProdigy (39), @Dream-Master (15), @Ranzuu (9), @tiffit (8), @cubefury (7), @danyadev (6), @sisyphussy (6), @Alexdoru (5), @boubou19 (5), @alppp (4), @Eldrinn-Elantey (4), @Ethryan (4), @ABKQPO (3), @Algent (3), @Caedis (3), @Nana-Sakura (2), @NotKaizul (2), @PLASMAchicken (2), @sudojunior (2), @ah-OOG-ah (1), @chrombread (1), @DeathFuel (1), @eigenraven (1), @Faotik (1), @fbfnysnshnsgnwg (1), @fowdre (1), @ghostflyby (1), @glektarssza (1), @iouter (1), @Justxs (1), @koolkrafter5 (1), @kurrycat2004 (1), @MCTBL (1), @mitchej123 (1), @ModularityEnjoyer (1), @Nikolay-Sitnikov (1), @Ruling-0 (1), @slprime (1), @vulcandragi (1), @wlhlm (1)