GTNHLib
Index · Previous: Hodgepodge · Next: NEI and recipe lookup
The shared library every GTNH mod builds on, 0.7.10 to 0.11.45. Most of it is invisible by design, but this release it grew the config system, the tooltip and overlay APIs and the font handling that other mods then used.
Modded Plants in Flower Pots
Modded plants and saplings from various mods can now be placed in vanilla Minecraft flower pots for decoration. Developers can easily add this support to their own mod blocks through a standard interface.



Shipped in: twilightforest #152, GTNHLib #435, GTNHLib #437, harvestcraft #75, Natura #46, Botania #146
Resource Pack Update Notifier
An in-game notification system that checks your enabled resource packs for newer versions available on GitHub Releases. When an update is found, you'll receive a chat message with a clickable link to download the latest compatible version.

Shipped in: GTNHLib #260, GTNHLib #280, GTNHLib #285
Title & Subtitle Overlay
Server admins can now display title and subtitle text on players' screens using the /title command with support for color codes. Titles fade in, stay, and fade out with fully configurable timing.

Shipped in: GTNHLib #330, ServerUtilities #273, BetterQuesting #200
New features and content
The config system grew significantly with better organization and new capabilities. Mods can now register modded blocks to appear in flower pots, and resource utilities were ported to make content packs more flexible. A new world conversion warning system helps you prepare when worlds need updates, and improved team commands let you manage player groups more effectively.


Shipped in 72 pull requests
- Add inventoryCount to InventoryChangedEvent (GTNHLib #464)
- Allow non-block textures in JSON models (GTNHLib #438)
- Add BOP compat for flower pots (GTNHLib #437)
- Feat: Add opt-in ability for modded blocks to go in flower pots (GTNHLib #435)
- Port 2d & 3d maps & sets from CC (GTNHLib #426)
- Add bukkit compatibility Layer (GTNHLib #423)
- Port ResourceUtils from GT5U to NHlib (GTNHLib #416)
- Add world conversion warning system (GTNHLib #409)
- Update team commands (GTNHLib #407)
- Add a getter to GlyphReplacements (GTNHLib #398)
- LocalTessellator stuff (GTNHLib #393)
- add title icon animations, position, and cinematic effect tiers (GTNHLib #388)
- Add method to safely enchant an itemstack (GTNHLib #387)
- Teams GUI (GTNHLib #384)
- Added color system to unify color resources (GTNHLib #380)
- Add whitelabeling to gtnh teams (GTNHLib #372)
- extend TitleAPI with icon, particle effects, and config (GTNHLib #365)
- LivingEquipmentChangeEvent init detection (GTNHLib #363)
- add u (drop shadow) to isValidAmpCode (GTNHLib #356)
- Add fast WavefrontObject loader (GTNHLib #354)
- Add Model overrideIcon (GTNHLib #343)
- Make config options reloadable from file (GTNHLib #342)
- Add world deletion event mixin (GTNHLib #338)
- Add @Config.{RequiresMod, RequiresModOr and RequiresModAnd} to the config system (GTNHLib #334)
- Add per-slot stack size limit to ItemSink API (GTNHLib #331)
- add title/subtitle api, overlay, and /title command (GTNHLib #330)
- add colors to /blockstate property values (GTNHLib #329)
- add two helper methods to ItemStackNBT (GTNHLib #326)
- add ItemStackNBT helper (GTNHLib #323)
- Add proper automatic model detection (GTNHLib #313)
- implement CubeIterator (GTNHLib #309)
- add BFS leaf decay (GTNHLib #305)
- Move StdLCG to GTNHLib (GTNHLib #304)
- GTNHTeams: Arbitrary-data team system (GTNHLib #297)
- Implement blockstate to Json Model (GTNHLib #295)
- add @Config.Order() to the config system (GTNHLib #286)
- Add InventoryChangedEvent (GTNHLib #282)
- Add IConfigEntry to the Config system (GTNHLib #281)
- Add RU locale Resource Pack Notifier (GTNHLib #280)
- Add custom chat components for fluid and item names (GTNHLib #278)
- Add ability to supply custom models and add transparency support (GTNHLib #277)
- Add a method to automaticall make and register an EIR (GTNHLib #275)
- Add an enhanced infusion recipe that supports replacements (GTNHLib #270)
- Copy the FormattedResearchPage from Salis Arcana for use in other mods (GTNHLib #269)
- Formalize IItemTexture Renderer (GTNHLib #268)
- Fix/use game locale for numbers (GTNHLib #266)
- Added ResourcePack update notifier (GTNHLib #260)
- Adds pick block event mixin (GTNHLib #259)
- Add ability to check 4D map using outside range (GTNHLib #255)
- Add GuiText for customizable GUI text handling (GTNHLib #252)
- Make JVMDG api stubs available for other mods (GTNHLib #245)
- Format numbers work (GTNHLib #235)
- Add a simulated item sink interator (GTNHLib #230)
- Move villager names from WAWLA (GTNHLib #228)
- Port ItemRenderUtil from Gregtech (GTNHLib #227)
- Rewrite Universium Shader; Add Texture Classes (GTNHLib #223)
- Add a glyph replacement map (GTNHLib #221)
- Add a glyph replacement map (GTNHLib #219)
- ItemBlock BlockBench Display (GTNHLib #216)
- Add ITranslucentItem for translucent item support (GTNHLib #215)
- Add basic itemblock JSON models renderer (GTNHLib #211)
- Implement UV locking for JSON models (GTNHLib #208)
- ports cosmicrender from avaritia to gtnhlib (GTNHLib #205)
- Re-add IItemDuct support (includes EIO and BC) (GTNHLib #204)
- Add ability to dynamically control block sounds (GTNHLib #195)
- Add compiling (callback) tessellator mode (GTNHLib #193)
- Misc item moving improvements (GTNHLib #188)
- Add post-processing + VAO methods (GTNHLib #186)
- BlockState System (GTNHLib #176)
- Add BakedModelBuilder + Normal helper methods (GTNHLib #175)
- Add generational timed cache (GTNHLib #171)
- Add Brigadier (GTNHLib #149)
Changes
The font rendering system now matches vanilla Minecraft more closely, and the JSON model API received updates to support more cases. The config system got minor cleanup and reorganization. Block sound mixins can now be toggled if they conflict with other mods, and the color system received adjustments for consistency.
Shipped in 14 pull requests
- Angelica patch (GTNHLib #353)
- Include more data client-side for UI display (GTNHLib #352)
- redo ITeamData#copyData signature (GTNHLib #344)
- Minor configuration system cleanup (GTNHLib #322)
- Set colorIdx to -1 default (GTNHLib #312)
- Font rendering MC parity (GTNHLib #300)
- add back and mark deprecated ClassConstantPoolParser#addString method (GTNHLib #291)
- switch to new RFB transform signature (GTNHLib #289)
- Prevent resizing the ClassConstantPoolParser during runtime (GTNHLib #288)
- Updated the lookout for Resource pack update notifier (GTNHLib #285)
- Changes need to support Core Profile in Angelica (GTNHLib #284)
- Misc changes, and a few fixes (GTNHLib #236)
- Add config to disable block sound mixins (GTNHLib #203)
- Updates to JSON model API (GTNHLib #100)
Performance
Resource metadata is no longer parsed unnecessarily, cutting load times. Rendering got several small optimizations including reduced texture unit switching and faster biome lookups. NBT operations now avoid unnecessary copying and matching, making world loading and item handling snappier.


Shipped in: GTNHLib #454, GTNHLib #453, GTNHLib #404, GTNHLib #401, GTNHLib #378, GTNHLib #183
Fixes
Fixed resource packs failing to load at startup and resource leaks in player inventory handling. Old model formats no longer crash when encountered, particles render correctly on modeled blocks, and the profiler no longer leaks memory. Team kick/promote/demote suggestions now only show offline players when appropriate, and client initialization no longer crashes during texture stitching.



Shipped in 66 pull requests
- Fix resource packs not loading at startup (GTNHLib #452)
- Only block old blockstates (GTNHLib #449)
- Improve edge cases of
@EventBusSubscriber(GTNHLib #448) - Vanilla Color Code Rules Option + Minor JSON Crash Fix (GTNHLib #447)
- Don't crash when old models are loaded (GTNHLib #443)
- Fix world leak caused by PlayerInventoryEventHandler (GTNHLib #439)
- Fix walk/fall particle icons when walking on modeled blocks (GTNHLib #434)
- Honor VertexFormat for WavefrontVBOBuilder (GTNHLib #433)
- Suggest offline team members for kick, promote and demote (GTNHLib #424)
- Stop leaking the profiler (GTNHLib #422)
- Make onFinishTextureStitch static to fix client init crash (GTNHLib #420)
- Fix NumberPattern (GTNHLib #418)
- Apply ITranslucentItem when rendering equipped items (GTNHLib #413)
- Remove threadsafe annotation from ModelISBRH (GTNHLib #408)
- Fix ItemTransfer retry loop with size-dependent filters (GTNHLib #405)
- Fix thermos console logging (GTNHLib #403)
- Fix DirectTessellator AGAIN (again) (GTNHLib #397)
- wrap ChatComponentItemName text in brackets like vanilla func_151000_E() (GTNHLib #396)
- Move
canInsertcheck beforemaxStack. (GTNHLib #395) - Fix deps for mods depending on mods using jvmdg (GTNHLib #394)
- Fixed wrong file location (GTNHLib #390)
- Misc BlockState Fixes (GTNHLib #383)
- Fix model loading from folder resource packs (GTNHLib #382)
- Fix position hash for random models (GTNHLib #381)
- Fix two crashes: (GTNHLib #374)
- Add more model patches (GTNHLib #373)
- Support major.minor.patch version format in PackVersion (GTNHLib #371)
- Fix display lists (GTNHLib #358)
- Catch same team mergers and fix command (GTNHLib #348)
- Fix new team data types not being added to old teams (GTNHLib #347)
- Fix team names with spaces not working due to greedystring (GTNHLib #346)
- Fix ModelISBRH.INSTANCE ThreadLocal incompatibility (GTNHLib #341)
- Fix large quad batches by using 32-bit index buffers when needed (GTNHLib #332)
- Make ModelISBRH.INSTANCE ThreadLocal to fix race condition (GTNHLib #320)
- Fix JsonModel Loading Typo (GTNHLib #318)
- handle obfuscated names in BlockIconTransformer (GTNHLib #316)
- Fix item json model color (GTNHLib #310)
- Fix JSON Model Tint (GTNHLib #308)
- Fix Block Icon Wrapper conditional to instanceof ModelISBRH (GTNHLib #302)
- Fix block crash in postInit (GTNHLib #301)
- Fix EIr only passing the replacements once per world restart (GTNHLib #296)
- fix transformer exclusions (GTNHLib #294)
- Fix HeadlessException in BloomShader (GTNHLib #293)
- Ignore synthetic fields when walking class fields (GTNHLib #290)
- Config tooltip (GTNHLib #287)
- Add gui keybind fallback check (GTNHLib #283)
- remap readFromNBT/writeToNBT injections in TileInFusionMatrix mixin (GTNHLib #274)
- Add lwjgl3 fallback for apple vao (GTNHLib #264)
- Fix erroneous logic in memCopy (GTNHLib #253)
- Fix Exception on Server start (GTNHLib #251)
- Update bs (GTNHLib #249)
- Check deps. (GTNHLib #248)
- Fix simulatedSink issues (GTNHLib #241)
- Update normal calcs to handle degenerate quads (GTNHLib #234)
- Fix a crash with universium shader (GTNHLib #233)
- Fix missing uniform variable in UniversiumShader (GTNHLib #231)
- Initialize UniversiumShader only when needed (GTNHLib #229)
- Fix SharedDepthFramebuffer (GTNHLib #225)
- fix ClassCastException crash in SharedDepthFramebuffer if Iris is disabled (GTNHLib #218)
- Fix ItemStackMap size not updating when removing via iterator (GTNHLib #217)
- Fix ItemBlock face side, add Model Particle, fix texture loading conflict with DragonApi (GTNHLib #212)
- add some fixes for the Universe Shader textures and some more hooks (GTNHLib #209)
- Fix VAO's (GTNHLib #207)
- More item moving fixes (GTNHLib #202)
- More item moving fixes (GTNHLib #200)
- Remove mixin-based IResourcePack detection (GTNHLib #192)