
HomeGui
Stop typing /home every 30 seconds. HomeGui adds a click-to-teleport interface for all your saved homes — favorites, search, history, keyboard shortcuts, and 5 color themes. Works with EssentialsX, CMI, and any server that uses a home system.
Оцените первым
2.3K
8
Список изменений
Interface
- Full rewrite of the rendering pipeline with a centralized dark theme palette (
Theme.java) replacing all default Minecraft widget styles - Custom
StyledButtonwidget extendingButtonwith per-instance background, border, accent, and text color overrides - Panel glow effect using a 2px semi-transparent accent layer rendered behind the main panel fill
- Favorite homes marked with a gold 3px left accent bar and persistent star glyph overlay
- Per-home teleport count rendered as a right-aligned dim overlay on each row
- Editable search field with placeholder text and real-time filtering via
EditBox.setResponder() - Contextual empty states with descriptive text depending on whether homes are missing or search returned no results
- Custom scrollbar with proportional thumb, accent-colored fill and border, positioned at the right edge of the list area
- Font-aware text truncation with ellipsis using
Theme.truncate()to prevent overflow in constrained layouts - Tooltip overlay drawn on top of all widgets with accent border, dark background, and multi-line content
Architecture
Theme.java— static utility class holding all color constants (BG,PANEL,CARD,ACCENT,GOLD,DANGER,SUCCESS,TEXT,DIM,FAINT,BORDER,BTN,BTN_HOV) and shared drawing primitives (fillBorder,drawPanel,drawCard,drawSeparator,drawTextCentered,truncate)StyledButton.java— extendsnet.minecraft.client.gui.components.Button(Mojang mappings), overrides onlyrenderWidget()for custom visual output while delegating click handling and narration to the parent classModConfig.getConfigPath()— lazy method replacing the former staticCONFIG_PATHfield to avoidFabricLoader.getInstance()invocation during class loading before Fabric runtime initialization- All screen interaction routed through widget
onClickcallbacks, eliminating method signature dependencies onmouseClicked(double, double, int),mouseClicked(MouseButtonEvent, boolean), andkeyPressed(int, int, int)which differ across Minecraft versions and mapping sets - Scroll state managed by
scrollOffsetwithneedsRebuildflag triggering full widget reconstruction on change to keep visible buttons in sync with the filtered list
Fixes
- Scroll input not reaching the home list because no
mouseClickedoverride could safely target the list area — resolved by routing all clicks throughStyledButtonwidgets that are rebuilt on scroll - Bottom navigation buttons rendering on top of home list entries due to missing vertical space allocation between the list area and the button row — resolved with explicit
listAreaTop/listAreaBottombounds mouseClicked(double, double, int)andkeyPressed(int, int, int)overrides causing compilation failures under Mojang mappings for Minecraft 1.21.10 whereScreenexpectsMouseButtonEventandKeyEventparameter types — removed entirely in favor of widget delegationrebuildWidgets()method name conflicting with an existingprotectedmethod inScreenbase class causing an access privilege error — renamed torebuildUI()CONFIG_PATHevaluated at static field initialization time causingNullPointerExceptionorNoClassDefFoundErrorwhenFabricLoaderwas not yet available — replaced with a lazygetConfigPath()method
Performance
- GitHub Actions workflow configured with Gradle build cache (
--build-cache) and dependency caching viagradle/actions/setup-gradle@v4 - Parallel task execution enabled with
--parallelflag - Virtualized list rendering limited to visible rows within
[scrollOffset, scrollOffset + visibleRows]with a ±1 margin for smooth scrolling - Widget rebuilds gated behind a
needsRebuildboolean checked once pertick()frame, preventing redundantclearWidgets()+ reconstruction cycles
Links
- 💬 Discord
Файлы
homegui-3.2.0.jar(326.99 KiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
3.2.0-0.19.3
Загрузчики
Fabric
Версии игры
1.21.10
Загрузок
4
Дата публикации
01.07.2026
