Minecraft-Backpack-Mod
13 merged pull requests.
New Features
- #36 Extended ContainerAdvanced and ItemBackpackBase with NoHotBarNeed compatibility logic, added helper method in GuiHelper to detect item slot changes. - @Erixonich
- Added: NoHotBarNeed mod integration, slot change detection logic, UI persistence on backpack slot shift
- #33 Extracted hardcoded button letters to localizable strings in FactoryWorkbenchBackpack and Localizations. - @Ranzuu
- Added: localized button letter entries
- #30 Implemented GuiInventoryTabHandler and inventory tab classes (AbstractInventoryTab, InventoryTabBackpack, InventoryTabVanilla) with TabRegistry integration for multi-mod compatibility. - @Eldrinn-Elantey
- Added: InventoryTabBackpack tab for backpack access, InventoryTabVanilla return tab, AbstractInventoryTab base class, GuiInventoryTabHandler event listener, GuiHelper tab positioning utilities, tab state sync on world join, LibIPN dependency
- #26 Added getTier() utility method to BackpackUtil, integrated dynamic slot calculation and tooltip line generation in ItemBackpackBase with localizable strings. - @Eldrinn-Elantey
- Added: dynamic tooltip generation for backpacks, getTier() utility method, tier and slot display in tooltips, shift-key detail display, localization entries for tooltip strings
- Fixed: TODO for BackpackUtil.getTier()
- #25 Extended backpack factories (FactoryBackpackNormal, FactoryPersonalSlot, FactoryWorkbenchBackpack) and GuiSlot to support color and slot configuration options via Localizations. - @Ranzuu
- Added: backpack title color customization, inventory slot customization, hotbar slot customization, new localization entries
Bug Fixes
- #37 Modified ItemBackpackBase and MessageOpenGui to call prepare() and flush containers before building BackpackSave, ensuring stale inventory data is not reloaded when reopening backpacks. - @Luca-Guettinger
- Fixed: item duplication by reading stale pre-close backpack contents
- Closes Dupes-Exploits-GTNH#256
- #34 Added metadata validation in save/open logic, UUID validation for save filenames, bounds checks for workbench slot clicks, ownership validation for slot-usage requests, packet sender UUID verification, and NEI recipe packet validation in MessageRecipe. - @Algent
- Added: metadata validation on backpack open/save, UUID filename validation, ownership checks for slot-usage info requests, bounds checking for workbench slots, NEI recipe packet validation, InvTweaks boundary validation
- Fixed: IndexOutOfBoundsException on invalid backpack metadata, backpack disappearing when closed, NEI recipe packet exploitation, unauthorized backpack access, save file traversal vulnerabilities
- Closes GTNH#25616
- #29 Added pickup prevention logic in ContainerAdvanced and extended BackpackUtil to disable backpack pickup when container is active. - @Worive
- Added: backpack pickup disabling logic
- Fixed: items deleted after dropping from backpack with filter active
- Closes GTNH#24027
- #24 Moved setFocused(true) call from constructor to initGui() in GuiBackpackRename to ensure proper focus initialization. - @ModularityEnjoyer
- Fixed: text input field not accepting input during backpack rename
- Closes GTNH#23109
- #16 Added client-server communication via MessageBackpackInfo and BackpackUsageCache to fetch and cache backpack inventory data, replacing client-only calculations. - @Worive
- Added: BackpackUsageCache for slot usage data, MessageBackpackInfo packet, MessageBackpackInfoRequest packet, client proxy methods for cache management
- Fixed: slot usage tooltip always showing 0/0, exp level 25 crash on backpack close
- Closes GTNH#20998, GTNH#21700
Performance
- #35 Replaced synchronous write-on-change calls with queuing of dirty data to the regular MC world save thread in SaveFileHandler and EventHandlerBackpack. - @Algent
- Added: world save thread integration for backpack writes
- Fixed: backpack data falling out of sync with world saves, IO pressure from frequent synchronous writes
- #23 Refactored rendering code in ContainerWindow, Window, Button, GuiSlot, Icon, Rectangle, and RenderHelper to batch Tessellator operations and reduce draw call frequency. - @gaogao-qwq
- Fixed: excessive Tessellator draw calls causing frame rate drops
Internal / Refactor
- #19 Split rectangular layout finding into a separate loop in BackpackSave, made variables final for inlining, increased minimum rows to 3, and clarified early return comment. - @koolkrafter5
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@Ranzuu (3), @sisyphussy (3), @UltraProdigy (3), @Algent (2), @Dream-Master (2), @Eldrinn-Elantey (2), @Luca-Guettinger (2), @Worive (2), @Alexdoru (1), @AnsonYeung (1), @boubou19 (1), @Caedis (1), @Erixonich (1), @gaogao-qwq (1), @Guvante (1), @jordanamr (1), @koolkrafter5 (1), @mitchej123 (1), @ModularityEnjoyer (1), @PLASMAchicken (1), @tiffit (1), @TimeConqueror (1)