GuideNH
49 merged pull requests.
New Features
- #71 Added registries and reversible registration handles for toolbar buttons and Export/Snap menu items in Scene Editor; exposes action context, icon model, menu-widget contract, and slider widget for integrations. Moved built-in controls to dedicated registry. Fixes mouse wheel routing for interactive scenes. - @ABKQPO
- Added: Scene Editor control registries, toolbar button API, menu item API, slider widget, action context
- Removed: ARGB, Colors, SymbolicColor, LightDarkMode, GuidePageLanguageIndex, GuideResourceLanguageIndex
- Fixed: mouse wheel routing for scenes
- Migration: Addon Scene Editor controls must now register through the extensible control registry API.
- #69 Extended Frontmatter and FrontmatterNavigation to support navigation.keyword and navigation.keywords fields, updated GuideSearch and IndexSchema to index and search these aliases separately from titles. - @ABKQPO
- Added: navigation keyword search, keyword alias support
- #53 Added displayWidth and displayHeight parameters to FloatingImageCompiler and LytImage, updated rendering logic in LytImageBlock to apply display dimensions, updated documentation and autocomplete registry. - @ABKQPO
- Added: displayWidth attribute for FloatingImage, displayHeight attribute for FloatingImage
- #52 Added ELK-based layout for flowcharts, implemented nested subgraph support, enhanced navigation tree with expand/collapse logic, built background search indexer with markdown stripping, improved viewport culling and debug hit detection. - @ABKQPO
- Added: native Mermaid flowchart rendering, navigation expand/collapse controls, background search indexing, guide search improvements
- Fixed: guide search for large packs, navigation state, snippet generation
- #50 Fixed edge routing in LytMermaidFlowchartCanvas, added EllipseShape and other shape implementations to FlowchartShapes registry, enhanced shape rendering system. - @sbancuz
- Added: website export for Mermaid flowcharts, ellipse shape support, additional flowchart shape options
- Fixed: dangling edges in Mermaid flowcharts
- #39 Added
GuideWelcomeScreenandGuideWelcomeContentthat render localized markdown fromassets/guidenh/welcome/. Per-player/per-save seen state tracked in config. - @DreamYao520- Added: welcome popup on first open, localized welcome resources (en_us, zh_cn), per-player seen state
- #37 Generalized Mermaid rendering pipeline, added
LytMermaidFlowchartCanvasusing ELK layout engine, implementedMermaidNodeRendererfor shape/edge rendering. - @sbancuz- Added: Mermaid flowchart support, ELK layout engine integration, LytButton for toolbar buttons, shape and edge type renderers
- #36 Created debug system with
DebugComponent,DebugFlowContainer, and registry-basedDebugInfoExtractorhandlers. Added hotkey (Ctrl+Shift+Alt+C) and persistent configuration. - @ABKQPO- Added: GUI debug overlay with element inspection, DebugInfoExtractor registry system, runtime element picking via deep traversal, debug visualization tools
- #35 Added
BqGuidePageLinkstag processor andBqGuidePageUriHandlerfor URI routing. Implemented mixins forPanelTextBoxto support custom link rendering. - @ABKQPO- Added: BetterQuesting integration for guide page links, guidenh: URI scheme handler, BQ-gated mixin classes
- #33 Added
DefaultGuideResourcePackManagerimplementingIResourcePack, createdDirectoryResourcePackfor loose filesystem packs, injected into client resource chain. - @ABKQPO- Added: DefaultGuideResourcePackManager for user-created guides, DirectoryResourcePack implementation, config/guidenh/DefaultGuide/ auto-creation
- Removed: GuideDevelopmentResourcePack (replaced by DirectoryResourcePack)
- #29 Modified
GuideSiteExportTaskandGuideSiteWriterto use language-aware resource resolution. AddedGuideSiteLocalizedTextclass for language lookups and new lang file entries. - @ABKQPO- Added: GuideSiteLocalizedText class for language resolution, lang file entries for site export
- #23 Refactored
FloatingImageCompilerandLytImageto replacewidth/heightsemantics withscaleX/scaleYfactors, added crop attributes (x, y, width, height). Updated rendering context and site export. - @ABKQPO- Added: crop parameters (x, y, width, height) for FloatingImage, scaleX and scaleY scaling factors, LytImageBlock class for flexible image layout
- Removed: old width/height direct sizing semantics
- Migration: Guide document authors using FloatingImage must update width/height to scaleX/scaleY, and use new x/y/width/height attributes for texture atlas cropping.
- Closes #22
- #15 Introduced AsyncWorker (4-thread pool) and CompileWorker (daemon) for background heavy lifting. Rewrote SceneScript with 3-phase state machine and materialization tasks. Fixed GuideScreen and NavigationState to properly scope and persist per-guide state (scroll, expansion). Changed nei-custom-diagram to compileOnlyApi. - @Windorain
- Added: AsyncWorker, CompileWorker, SceneScript 3-phase state machine
- Removed: DeferredTask
- Fixed: navigation state persistence across guides, ponder scene localization
- #14 Extended Frontmatter, FrontmatterNavigation, and NavigationIconEntry to support NBT-tagged items in icon fields. Updated FrontmatterValueProvider autocomplete and documentation (wiki Guide-Page-Format, Navigation pages). - @ABKQPO
- Added: NBT support in front matter icons
- #10 Extended RecipeCompiler to support RecipesUsage (multi) tag alongside RecipeUsage (single). Updated GuideSiteRecipeTagRenderer and documentation (wiki/Recipes.md) to reflect new tag variants. - @koolkrafter5
- Added: RecipesUsage tag, Usage short form
Changes
- #64
BlockImageCompiler's default scale went from 1f to 4f, andGuideSiteMdxTagRenderer.readBlockImageScalematches it. - @ABKQPO - #57 Updated BetterQuesting mixin classes and references to match upstream API changes in BetterQuesting. - @ABKQPO
- #49 Updated
NeiGuideNavigationto callRecipeId.getHandlerName()instead of deprecatedgetHandleName(). - @slprime - #46 Added gtnhlib dependency declaration in
dependencies.gradleand imported module in main class. - @ABKQPO- Added: gtnhlib dependency
- #18 Modified GuideLightweightReloadService to gate loading warning logs behind debug mode check. - @ABKQPO
- #9 - @ABKQPO
- #1 Updated gradle.properties (version bump), dependencies.gradle (removed local build references), ClientProxy (refactored with 129 line changes), runtime bridge improvements, and UI navigation enhancements. - @ABKQPO
- Added: GuidePageHistoryHotkey
- Removed: GuideNH.class obsolete code
Bug Fixes
- #60 Fixed CameraSettings offset validation, added ResourcePackContentManifest to track file changes for cache invalidation, enhanced GuideSearch and GuideQueryParser to support file name searches, added NBT support to RecipeCompiler. - @ABKQPO
- Added: file name search support in guide search, NBT support in RecipeFor
- Fixed: Ponder offset value calculation, resource pack reload cache invalidation, search functionality, error messages
- #55 Updated GregTechHelpers to use proper mod ID checks instead of generic gregtech identifier that conflicts with GT6. - @felixfour
- Fixed: optional method loader checks for GregTech
- #51 Restored polling in DevWatchWorkItem with proper shouldRun() logic, exposed GuideSourceWatcher.takeChanges() through MutableGuide, maintained 20-tick polling interval. - @DancingSnow0517
- Fixed: development source file watcher execution, guide live reload from development sources
- #48 Modified
GuideWelcomeScreenevent handling, improved scrollbar with frame-rate-independent tick logic, restored tooltip rendering. - @DreamYao520- Added: scrollbar drag/click support, frame-rate-independent scroll, tooltip rendering
- Removed: stone-brick preview image
- Fixed: mouse event leakage to guide screen, missing tooltips, scroll frame-rate dependency
- #47 Added error handling in
DataDrivenGuideLoaderto gracefully skip invalid YAML frontmatter instead of aborting reload. - @Algent- Fixed: guide reload crash on invalid frontmatter
- #34 Enhanced
SceneScriptandLytGuidebookScenewith improved block transformation and tier detection. AddedStructureLibPreviewBootstrapand related preview infrastructure for robust tier/channel resolution. - @Windorain- Added: StructureLibPreviewBootstrap for tier detection, StructureLibPreviewTask/Worker for async preview loading, GregTech integration helpers
- Fixed: tier 2 steam controller rendering (#19)
- Closes #19
- #28 Set default scale values in
LytImageconstructor. - @ABKQPO- Fixed: image rendering without explicit scale
- #21 Changed inline LaTeX delimiter from
$$$$to$$in wiki documentation and markdown examples. - @ABKQPO- Fixed: inline LaTeX rendering
- #12 Added GtCoverIdNormalizer to convert numeric cover IDs (which vary per save) to consistent string identifiers. Modified GuideTextNbtCodec to apply normalization during NBT deserialization. - @ABKQPO
- Added: GtCoverIdNormalizer
- Fixed: GT cover numeric ID inconsistency across saves
- #8 Corrected language key entries in en_US.lang and zh_CN.lang files. - @ABKQPO
- Fixed: language keys
- #5 Enhanced
ScriptContextImplwith auto-inherit UID on node replacement, persisted navbar state inNavigationState, fixed StructureLib tier/channel rendering, improved chart child element handling, fixed GT multiblock hatch active states. - @Windorain- Added: script context replacement mechanism, navbar state persistence
- Fixed: MOUNT script caching on remount, navbar collapse state reset, StructureLib tier slider rendering, inline formatting in tables, GameScene extraction in ContentTabs, GT multiblock controller states
- #3 Enhanced keybind rendering to support mouse buttons, improved resource pack loading in
DataDrivenGuideLoader, fixed LaTeX alignment in table cells viaLytLatexBlock. - @ABKQPO- Added: mouse button keybind support
- Fixed: mouse keybind display, guide resource loading failures in txloader, LaTeX misalignment in tables
- #2 Added server-side permission validation in GuideCommand, GuideNhClientBridgeController, and network handlers (GuideNhRegionExportServerHandler, GuideNhStructureRequestHandler). Introduced GuideNhServerStructureAccess with permission checks. Added payload limits tracking. - @ABKQPO
- Added: GuideNhServerStructureAccess, server-side permission checks, GuideNhCustomPayloadLimits
- Fixed: packet bypass vulnerabilities, missing permission checks
Performance
- #73 Consolidated language file reading and caching, avoided temporary objects during language index building, deferred page priority parsing, reduced string allocations during ZIP scanning. Introduced GuideLanguageIndex for unified language management and LangEntryReader. - @danyadev
- Added: GuideLanguageIndex, LangEntryReader
- Removed: GuidePageLanguageIndex, GuideResourceLanguageIndex
- #72 Added content revision tracking to GuidePage; modified scene discovery to refresh only after revision changes using identity-based registration to avoid linear duplicate checks. - @ABKQPO
- #70 Refactored DataDrivenGuideLoader to use new GuideResourcePackScanner for single-pass scanning with direct index building; removed separate manifest walk. ZIP packs use mtime-based caching, directory packs are rescanned each load. - @danyadev
- Added: GuideResourcePackScanner
- Removed: ResourcePackContentManifest (manifest-based caching)
- #68 Store only normalized path, size, and modification time for zip packs; limit directory scanning to GuideNH and language files; remove File object lists from ScanCache while preserving content checksums for same-size change detection. - @ABKQPO
- Removed: File object lists from ScanCache
- Fixed: manifest memory usage
- #67 Replaced per-file manifest objects with compact CRC-based fingerprints for directory and zip packs, improved hot-reload change detection without retaining per-file metadata. - @ABKQPO
- Fixed: resource pack manifest memory usage, hot-reload change detection
- #66 Optimized GuidebookLevel allocation patterns to reduce garbage collection pressure when rendering guide scenes. - @boubou19
- #65 Implemented lazy guide page compilation via LazyParsedGuidePage, added bounded language file indexing, persistent search fingerprints, improved AE2 storage cell state tracking from actual network state instead of presence detection. - @ABKQPO
- Added: lazy page compilation, persistent search fingerprints, bounded language file indexing
- Fixed: guide reload performance, stale async work after reloads, AE2 preview state
- #61 Implemented viewport culling for block-level rendering to reduce draw calls and improve frame rates during guide display. - @Windorain
- Added: viewport block-level culling
- #43 Created unified
GuideResourceIndexto scan all packs once per reload, replaced per-phase scans with cached lookups. Eliminated redundant YAML parsing andZipFiletraversals in page selection. - @Windorain- Added: GuideResourceIndex for unified pack scanning, page priority caching system
- Removed: per-phase zip traversals, redundant ZipFile instances in language index
- #41 Modified
GuideReloadListenerto skip redundant early reloads, retaining only the final FML-triggered refresh. - @Algent- Added: GuideReloadListener to gate reloads
- Removed: redundant reload calls during boot
- #40 Modified
DefaultGuideResourcePackManagerto prevent duplicate reload triggering on initialization. - @Algent- Fixed: duplicate reload on startup
- #26 Added concurrent client world initialization, refactored camera rotation logic to use central pivot point, optimized reflection rendering. Extracted resource pack loading to new facade classes. - @ABKQPO
- Added: concurrent scene initialization, optimized camera pivot point logic, performance metrics
- Removed: old sequential scene loading, legacy settings from GuideNhRuntimeBridgeSettings
- Fixed: structure preview tier not persisting on reopen (#20), resource pack loading from external directories (#11)
- Closes #11, #20
Removals
- #54 Removed GuideItemSettings and Guides classes, removed guide item registration, simplified region wand renderer, removed region wand mode cycling command. - @ABKQPO
- Removed: guide item, region wand feature, GuideItemSettings, Guides
Documentation
- #16 Updated en_US.lang and zh_CN.lang resource files with synchronized translations. - @ChromicRedBrick
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@ABKQPO (48), @Windorain (9), @Algent (3), @boubou19 (2), @ChromicRedBrick (2), @danyadev (2), @DreamYao520 (2), @koolkrafter5 (2), @Nana-Sakura (2), @sbancuz (2), @UltraProdigy (2), @YannickMG (2), @DancingSnow0517 (1), @felixfour (1), @slprime (1)