Changelog & Known Issues for 0.4.0
This mod was originally made to offer mod devs methods for doing things that are typically thought of as impossible, hacky, tedious, or maybe even require a third party java library. It now additionally serves as an API that can be used to load and run mods on multiple versions & mod loaders.
Supported Versions
The status indicators are as follows:
BROKEN → The API has been implemented in this version, but it is not yet able to load.
FUNCTIONAL → There are no known major issues specific to this version.
LOADABLE → The game can load in this version, but entering a world is not yet possible.
PLANNED → The API has not yet been implemented for this version, but it will be soon.
PLAYABLE → Worlds are able to load in this version, but there may be stability issues
Cleanroom
1.12.2 → PLANNED
Fabric/Quilt
1.16.5 → FUNCTIONAL
1.18.2 → FUNCTIONAL
1.19.2 → FUNCTIONAL
1.19.4 → FUNCTIONAL
1.20.1 → FUNCTIONAL
1.20.4 → FUNCTIONAL
1.20.6 → FUNCTIONAL
1.21.1 → FUNCTIONAL
1.21.4 → PLANNED
Forge
1.12.2 → FUNCTIONAL
1.16.5 → FUNCTIONAL
1.18.2 → FUNCTIONAL
1.19.2 → FUNCTIONAL
1.19.4 → FUNCTIONAL
1.20.1 → FUNCTIONAL
1.20.4 → BROKEN
1.20.6 → BROKEN
1.21.1 → FUNCTIONAL
1.21.4 → PLANNED
NeoForge
1.20.1 → FUNCTIONAL
1.20.4 → PLAYABLE
1.20.6 → FUNCTIONAL
1.21.1 → FUNCTIONAL
1.21.4 → PLANNED
Getting Started
Features
I will be writing a more in-depth wiki at some point, but in the meantime here are a few helpful things you can do:
- Easier file creation and manipulation
- Generic image rendering to the screen
- Global nbt data storage and retrieval
- Support for radial gui elements and some helper methods regarding that
- Custom async tick events able set by millisecond
Issues & the Discord Server for my mods
Want to host a server? I am partnered with Bisect Hosting! You can use code 'DimHop' For 25% off your first month!

Click here if the banner isn't showing up
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 | ||||
| 20h ago | 1 |
- [1.18.2-1.20.1 Forge] [The 1.20.4+ mod loading format is no longer assumed for Java 21](<https://github.com/TheComputerizer/Music-Triggers/issues/227>)
- [1.20.1] Fixed a bad advancement wrapper cast
- Lots of backend rewrites and refactoring:
- [Java 25 (and Java 24 with -XX:+UseCompactObjectHeaders) should be able to load now](<https://github.com/TheComputerizer/The-Impossible-Library/issues/25>)
- All internal BurningWave calls are now routed through
Hacks - Consolidated and removed code smells from all
Wrappedimplementations - [Forge & Neoforge] Rewrote and standardized mod loading (this also fixes 1.20.4 & 1.20.6 Forge not being able to load)
- [Forge & Neoforge] Reorganized module layer hacks for proper (WIP) dev environment support
- [1.16.5+] [Consolidated & standardized network implementations](<https://github.com/TheComputerizer/The-Impossible-Library/issues/32>) ([this also fixes serverside triggers for Music Triggers not working in 1.20.4+ Forge & NeoForge](<https://github.com/TheComputerizer/Music-Triggers/issues/208>))
- [1.20.6+ Neoforge] [Replaced poorly implemented string-based early loading file path scanning that caused a crash with Linux](<https://github.com/TheComputerizer/The-Impossible-Library/issues/23>)
- Fixed the TOML parser ignoring leading '-' when parsing numbers (leading to negative numbers being parsed as positive)
- Partially (or maybe fully?) fixed a JVM shutdown crash caused by the BurningWave resource releaser
- Fixed mouse hover calculations for radial & scrollable GUI widgets
- [1.12.2] Fixed rendering compatibility issues with nothirium
- [1.16.5+] [Implemented dimension-specific respawn position checks for players](<https://github.com/TheComputerizer/The-Impossible-Library/issues/17>) ([Music Triggers home trigger](<https://github.com/TheComputerizer/Music-Triggers/issues/196>))
- [1.19.2 - 1.20.1 Forge] [Fixed CustomSuggester not being properly registered for the WrappedCommand implementations](<https://github.com/TheComputerizer/The-Impossible-Library/issues/27>) ([Music Triggers decoder exception](<https://github.com/TheComputerizer/Music-Triggers/issues/207>))
- [1.21.1 Forge] Added a fallback for the Minecraft version not being parsed on servers
- Updated the bundled version of BurningWave for Java 24 support
- Fixed block pos offset issues for negative coordinates
- Relocated the parameter API from music triggers to mods.thecomputerizer.theimpossiblelibrary.api.parameter
- Fixed Renderable implementations not handling parameters properly (music triggers image & title card issue)
- Fixed references to forge class/methods being present in common version code
- Fixed some null checking issues when retrieving registry names for biomes & dimensions
- Consolidated & refactored item registration implementations
- Fixed MineraftAPI#isPaused always returning false when connected to a server
- [1.12.2] Fixed packets not being able to get decoded on dedicated servers
- [1.16.5+] Fixed registry names for dimensions not being retrieved properly
- [1.16.5 - 1.18.2] Fixed the custom argument type for wrapped commands not being registered
- [1.16.5 - 1.20.1 Forge] Fixed network direction issues causing a disconnect when trying to join a server
- [1.16.5 - 1.20.1 Forge] Fixed the 'Unknown custom packet identifier' warnings when receiving packets on the client side
- [1.20.1 Forge] Updated the supported Enhanced Celestials version to 5.0.3.1
- [1.21.1] Added support for Enhanced Celestials 6.0.2.0 to all mod loaders
- Added sources and javadoc jars as additional files
- Fixed a startup crash with unexpected file names and/or content from mod jars
- 1.12.2 is now fully compatible with cleanroom
- Fixed a startup crash during the coremod phase when sinytra connector is present
- Fixed most of the entrypoint stuff not being called in NeoForge 1.20.6/1.21.1 (causing crashes & weird behavior)
- Fixed an offset issue with EntityAPI#getRoundedPos
- Add a bunch more Toml helper methods mainly pertaining to value retrieval
- Fix item model properties trying to get registered on dedicated servers
- Add MinecraftAPI#getCurrentScreen & ClientHelper#getCurrentScreen
- Add EntityAPI#isHostile
- Fixed RandomHelper not handling negative numbers properly
- The entire mod has been rewritten from scratch
- It is now both a multiversion API & multiversion modloader
- Refactored most of the important core stuff into an api package
- Most classes that ended in Util now end in Helper and have been organized into packages that make more sense
- Reformatted and improved upon most Helper classes
- Ported, abstracted, and improved upon the Wrapperable system from Scriptify, the geometry render system from SleepLess, as well as various utility functions from some of my other projects
- Added a layering system for screens and widgets along with a number of new helper methods due to the many abstractions needed
- Fixed some broken mixin stuff
- Fixed some broken network stuff
- Fixed some broken mixin stuff
- Fixed some broken network stuff
- Fixed some broken mixin stuff
- Fixed some broken network stuff
- Fixed packets not getting registered on dedicated servers
- Fixed packets not getting registered on dedicated servers
- Fixed packets not getting registered on dedicated servers
- Updated to Gradle 8.1.1, Fabric 0.76.0, and Loom 1.2.+
- Refactored a bunch of registration stuff
- Replaced all Point4i, implementations with Vector4f implementations for consistency
- Added a SpriteSheet extension for the PNG renderable object for animation support via single column sprite sheet pngs
- Fixed Text renderable opacity values under 0.0314 being rendered at 1 often leading to flashes when fading in
- Implementing reading from and writing Tables and Variables parsed from TOML files to NBT data
- Added a system for easy and centralized packet registration
- Added some additional GenericUtils and DataUtil methods
- Logging done via the LogUtil class can now properly handle null levels, messages, and parameters.
- The LogUtil$ModLogger class now keeps track of how many lines it has written
- Added TextUtil$TextCasing and some related TextUtil methods for manipulating kebab-casing, PascalCasing, snake_casing, and camelCasing
- Fixed some inconsistencies and weird logic various GuiUtil methods.
- Changed GuiUtil#howManyLinesWillThisBe which returned an integer with the number of lines into GuiUtil#splitLines which just returns a list of the lines from the split
- Fixed some duplicate code in the NetworkUtil class
- NetworkUtil#writeString now forces input strings to be encoded in UTF-8 to avoid network crashes related to character encoding
- Moved GuiUtil#convertChatFormatting to FontUtil#convertChatFormatting
- Moved CustomTick from the util package to a new events package
- Added events for a SoundInstance playing, an entity being added to a ServerLevel, a player logging in on the server side, resources finishing being loaded on the client, and an advancement being granted
- Fixed the DataUtil class to make it an actual alternative to the Forge capability system
- Updated to Gradle 8.1.1, Fabric 0.76.0, and Loom 1.2.+
- Refactored a bunch of registration stuff
- Replaced all Point4i, implementations with Vector4f implementations for consistency
- Added a SpriteSheet extension for the PNG renderable object for animation support via single column sprite sheet pngs
- Fixed Text renderable opacity values under 0.0314 being rendered at 1 often leading to flashes when fading in
- Implementing reading from and writing Tables and Variables parsed from TOML files to NBT data
- Added a system for easy and centralized packet registration
- Added some additional GenericUtils and DataUtil methods
- Logging done via the LogUtil class can now properly handle null levels, messages, and parameters.
- The LogUtil$ModLogger class now keeps track of how many lines it has written
- Added TextUtil$TextCasing and some related TextUtil methods for manipulating kebab-casing, PascalCasing, snake_casing, and camelCasing
- Fixed some inconsistencies and weird logic various GuiUtil methods.
- Changed GuiUtil#howManyLinesWillThisBe which returned an integer with the number of lines into GuiUtil#splitLines which just returns a list of the lines from the split
- Fixed some duplicate code in the NetworkUtil class
- NetworkUtil#writeString now forces input strings to be encoded in UTF-8 to avoid network crashes related to character encoding
- Moved GuiUtil#convertChatFormatting to FontUtil#convertChatFormatting
- Moved CustomTick from the util package to a new events package
- Added events for a SoundInstance playing, an entity being added to a ServerLevel, a player logging in on the server side, resources finishing being loaded on the client, and an advancement being granted
- Fixed the DataUtil class to make it an actual alternative to the Forge capability system
- Updated to Gradle 8.1.1, Fabric 0.76.0, and Loom 1.2.+
- Refactored a bunch of registration stuff
- Replaced all Point4i, implementations with Vector4f implementations for consistency
- Added a SpriteSheet extension for the PNG renderable object for animation support via single column sprite sheet pngs
- Fixed Text renderable opacity values under 0.0314 being rendered at 1 often leading to flashes when fading in
- Implementing reading from and writing Tables and Variables parsed from TOML files to NBT data
- Added a system for easy and centralized packet registration
- Added some additional GenericUtils and DataUtil methods
- Logging done via the LogUtil class can now properly handle null levels, messages, and parameters.
- The LogUtil$ModLogger class now keeps track of how many lines it has written
- Added TextUtil$TextCasing and some related TextUtil methods for manipulating kebab-casing, PascalCasing, snake_casing, and camelCasing
- Fixed some inconsistencies and weird logic various GuiUtil methods.
- Changed GuiUtil#howManyLinesWillThisBe which returned an integer with the number of lines into GuiUtil#splitLines which just returns a list of the lines from the split
- Fixed some duplicate code in the NetworkUtil class
- NetworkUtil#writeString now forces input strings to be encoded in UTF-8 to avoid network crashes related to character encoding
- Moved GuiUtil#convertChatFormatting to FontUtil#convertChatFormatting
- Moved CustomTick from the util package to a new events package
- Added events for a SoundInstance playing, an entity being added to a ServerLevel, a player logging in on the server side, resources finishing being loaded on the client, and an advancement being granted
- Fixed the DataUtil class to make it an actual alternative to the Forge capability system
- Updated to Gradle 8.1.1 & FG 6.0.+
- Refactored a bunch of registration stuff
- Replaced all Point4i, implementations with Vector4f implementations for consistency
- Added a SpriteSheet extension for the PNG renderable object for animation support via single column sprite sheet pngs
- Fixed Text renderable opacity values under 0.0314 being rendered at 1 often leading to flashes when fading in
- Implementing reading from and writing Tables and Variables parsed from TOML files to NBT data
- Added a system for easy and centralized packet registration
- Added some additional GenericUtils and DataUtil methods
- Logging done via the LogUtil class can now properly handle null levels, messages, and parameters.
- The LogUtil$ModLogger class now keeps track of how many lines it has written
- Added TextUtil$TextCasing and some related TextUtil methods for manipulating kebab-casing, PascalCasing, snake_casing, and camelCasing
- Fixed some inconsistencies and weird logic various GuiUtil methods.
- Changed GuiUtil#howManyLinesWillThisBe which returned an integer with the number of lines into GuiUtil#splitLines which just returns a list of the lines from the split
- Fixed some duplicate code in the NetworkUtil class
- NetworkUtil#writeString now forces input strings to be encoded in UTF-8 to avoid network crashes related to character encoding
- Moved GuiUtil#convertChatFormatting to FontUtil#convertChatFormatting
- Fixed Text renderable opacity and fade values not getting applied correctly
- Updated to Gradle 8.1.1, & FG 6.0.+
- Refactored a bunch of registration stuff
- Replaced all Point4i, implementations with Vector4f implementations for consistency
- Added a SpriteSheet extension for the PNG renderable object for animation support via single column sprite sheet pngs
- Fixed Text renderable opacity values under 0.0314 being rendered at 1 often leading to flashes when fading in
- Implementing reading from and writing Tables and Variables parsed from TOML files to NBT data
- Added a system for easy and centralized packet registration
- Added some additional GenericUtils and DataUtil methods
- Logging done via the LogUtil class can now properly handle null levels, messages, and parameters.
- The LogUtil$ModLogger class now keeps track of how many lines it has written
- Added TextUtil$TextCasing and some related TextUtil methods for manipulating kebab-casing, PascalCasing, snake_casing, and camelCasing
- Fixed some inconsistencies and weird logic various GuiUtil methods.
- Changed GuiUtil#howManyLinesWillThisBe which returned an integer with the number of lines into GuiUtil#splitLines which just returns a list of the lines from the split
- Fixed some duplicate code in the NetworkUtil class
- NetworkUtil#writeString now forces input strings to be encoded in UTF-8 to avoid network crashes related to character encoding
- Moved GuiUtil#convertChatFormatting to FontUtil#convertChatFormatting
- Updated to Gradle 8.1.1, & FG 6.0.+
- Refactored a bunch of registration stuff
- Replaced all Point4i, implementations with Vector4f implementations for consistency
- Added a SpriteSheet extension for the PNG renderable object for animation support via single column sprite sheet pngs
- Fixed Text renderable opacity values under 0.0314 being rendered at 1 often leading to flashes when fading in
- Implementing reading from and writing Tables and Variables parsed from TOML files to NBT data
- Added a system for easy and centralized packet registration
- Added some additional GenericUtils and DataUtil methods
- Logging done via the LogUtil class can now properly handle null levels, messages, and parameters.
- The LogUtil$ModLogger class now keeps track of how many lines it has written
- Added TextUtil$TextCasing and some related TextUtil methods for manipulating kebab-casing, PascalCasing, snake_casing, and camelCasing
- Fixed some inconsistencies and weird logic various GuiUtil methods.
- Changed GuiUtil#howManyLinesWillThisBe which returned an integer with the number of lines into GuiUtil#splitLines which just returns a list of the lines from the split
- Fixed some duplicate code in the NetworkUtil class
- NetworkUtil#writeString now forces input strings to be encoded in UTF-8 to avoid network crashes related to character encoding
- Moved GuiUtil#convertTextFormatting to FontUtil#convertTextFormatting
- Updated to Gradle 8.1.1 & FG 6.0.+
- Refactored a bunch of registration stuff
- Replaced all Tuple2i, Tuple4i, Point2i, Point4i, Tuple2d, Tuple4d, Point2d, and Point4d implementations with Vec2f and Point4f implementations for consistency
- Added a SpriteSheet extension for the PNG renderable object for animation support via single column sprite sheet pngs
- Fixed Text renderable opacity values under 0.0314 being rendered at 1 often leading to flashes when fading in
- Implementing reading from and writing Tables and Variables parsed from TOML files to NBT data
- Added a system for easy and centralized packet registration
- Added some additional GenericUtils and DataUtil methods
- Logging done via the LogUtil class can now properly handle null levels, messages, and parameters.
- The LogUtil$ModLogger class now keeps track of how many lines it has written
- Added TextUtil$TextCasing and some related TextUtil methods for manipulating kebab-casing, PascalCasing, snake_casing, and camelCasing
- Fixed some inconsistencies and weird logic various GuiUtil methods.
- Changed GuiUtil#howManyLinesWillThisBe which returned an integer with the number of lines into GuiUtil#splitLines which just returns a list of the lines from the split
- Fixed some duplicate code in the NetworkUtil class
- NetworkUtil#writeString now forces input strings to be encoded in UTF-8 to avoid network crashes related to character encoding
- Added a FontUtil class to help with accessing and rendering specific characters as textures rather than needing to go through the FontRenderer
- Moved GuiUtil#convertTextFormatting to FontUtil#convertTextFormatting
- Initial port to 1.20.1
- Decreased the required fabric version to 0.14.14 for quilt support
- Fixed the Text and PNG renderables not getting initialized properly
- Added a convertChatFormatting method to the GuiUtil class
- Stopped including the resources used for testing
- Decreased the required fabric version to 0.14.14 for quilt support
- Fixed the Text and PNG renderables not getting initialized properly
- Added a convertChatFormatting method to the GuiUtil class
- Stopped including the resources used for testing