Nuclear-Control
14 merged pull requests.
New Features
- #35 Added localization keys for GUI titles across all info panel GUIs and thermo displays. Uses i18n lookups instead of hardcoded strings. - @Ranzuu
- Added: GUI title localization, Optional color code localization for resource packs
- #34 Modified ClientTickHandler to warn and skip duplicate alarm sound entries, allowing third-party sound contributions to coexist. - @2ndDerivative
- Added: Support for third-party alarm sounds
Changes
- #44 All info panel PNGs under assets/nuclearcontrol/textures/blocks/infoPanel are downscaled from 32x32 to 16x16. - @tiffit
Bug Fixes
- #52 AngelicaFontBatcher.getBatcher now checks instanceof FontRendererAccessor and returns null otherwise, so beginBatch and endBatch become no-ops instead of throwing ClassCastException. - @HalfCooler
- Fixed: ClassCastException rendering Industrial Information Panel text without the Angelica font mixin
- Closes GTNH#26676
- #51 Alarm playback moved from a per-tile sound object into a static TileEntitySound manager ticked from ClientTickHandler and cleared on world unload and sound reload. TileEntityHowlerAlarm now syncs powered, range and soundName fields, and serverAllowedAlarms resets on connect and disconnect. - @boubou19
- Fixed: howler alarm sounds stacking after leaving and re-entering range, howler alarm sound loop restarting on reload
- #50 TileEntityInfoPanel.serializeSlotSettings wrote DisplaySettingHelper.toString() into NBT; it now writes toBitString(). - @AnsonYeung
- Fixed: Information Panel infinite growth of tile entity NBT data
- Closes GTNH#26688
- #49 TileEntityInfoPanel overrides getRenderBoundingBox to cover the whole screen. ClientProxy registers both panel classes with Angelica's TileEntityRenderBoundsRegistry when Angelica is loaded. The renderer now skips non-panel screen parts, and the advanced panel text depth is offset by 0.02. - @boubou19
- Fixed: z-fighting on information panel displays, wrong culling of panel screens at some angles
- #42 GuiScrollableList.setScissor used the raw guiScale setting, which is 0 on Auto, giving a zero-size scissor. It now takes the scale factor from ScaledResolution.getScaleFactor(). - @dipo33
- Fixed: Advanced Information Panel line configuration buttons invisible on Auto GUI scale
- Closes GTNH#23767
- #37 ItemCard55Reactor.getStringData changes the lang key from msg.nc.InfoPanel55.tarkin to msg.nc.InfoPanel55.tankin. - @Blubstr
- Fixed: typo in the reactor card tank input lang key
- #36 DisplaySettingHelper(ByteBuf) uses readUnsignedShort instead of readShort for the length. - @MeiTianyou
- Fixed: display settings length overflow when read from a packet
- #33 Replaced the string-based panel settings with a BitSet. Removed
IPanelAdvDataSource, merging it intoIPanelDataSource.GuiScrollableList.initGui()clearsfunctionButtonsbefore rebuilding them,GUI_HEIGHTwent from 233 to 236, and the native cards and the display setting helper were updated. - @guid118- Added: Javadoc for the info panel API
- Removed: IPanelAdvDataSource interface
- Fixed: Button duplication when minimizing the window with the info panel line configuration GUI open
- Closes GTNH#21154
Performance
- #48 Added AngelicaFontBatcher caching, optimized network packet allocations (PacketDataSorterSync, PacketDispSettingsUpdate, PacketSensor, PacketSensorTitle), reduced allocations in TileEntityAdvancedInfoPanel, TileEntityInfoPanel, TileEntityInfoPanelExtender, DataSorter, and Screen rendering paths. Added @Nullable annotation to IPanelDataSource and ItemTimeCard APIs. - @boubou19
- Added: AngelicaFontBatcher for font rendering cache, dependency on Angelica
- #47 Removed per-frame object allocations in MainBlockRenderer, TileEntityInfoPanelRenderer, and DataSorter. Optimized CardWrapperImpl and model rendering. Fixed visibility check for unattached advanced panel extenders. - @boubou19
- Fixed: Invisible advanced panel extenders when unattached, Memory allocations in panel rendering
Chores
- #38 ItemCardAppeng uses an instanceof IAEItemStack pattern on getJobProgress() to match the changed AE2 API. Also bumps dependency versions, the GTNH settings convention plugin and the Gradle wrapper, and adds GTNHLib. - @Kogepan229
- Fixed: compile error against new AE2 API
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@Algent (4), @boubou19 (4), @UltraProdigy (3), @Dream-Master (2), @2ndDerivative (1), @AnsonYeung (1), @Blubstr (1), @chrombread (1), @copilot-pull-request-reviewer (1), @dipo33 (1), @Glease (1), @guid118 (1), @HalfCooler (1), @Kogepan229 (1), @koolkrafter5 (1), @MeiTianyou (1), @Nikolay-Sitnikov (1), @Ranzuu (1), @Ruling-0 (1), @tiffit (1), @wlhlm (1)