Description
MaLiLib is a library mod for client-side mods, containing most of the shared code between the dependent mods. For example it contains all the configuration options and serialization, a powerful keybind system, most of the Screen/GUI code and a bunch of other miscellaneous utility classes and methods for the mods that are built around MaLiLib.
(The name is short for masa's Litemod Library because I have zero imagination...
The mod was initially created for the 1.12.x LiteLoader versions of masa's client mods.)
Mods that require MaLiLib
MaLiLib is required by all of masa's client-side mods, starting from the indicated versions:
- Item Scroller - 0.14.0 and later
- Litematica - for any builds starting from around 2018-06-11
- MiniHUD - 0.17.0 and later
- TellMe - 0.6.1 and later
- Tweakeroo - 0.8.0 and later
There are also a number of other client-side mods by other authors that are built around MaLiLib. The mod project/description usually indicates which mod(s) are required as a dependency.
Mod Versions
Make sure to download the correct mod version for your Minecraft version and mod loader from the Versions page!!
Note: There are both Fabric and Forge versions of the mod! Look at the tagged mod loader or the file name to get the correct version of the mod for your mod loader!
The file name always indicates the mod loader (for example Fabric vs. Forge) and the Minecraft version.
The file name is in the format:
malilib-<mod loader>-<MC version>-<mod version>.jar
For example:
malilib-fabric-1.19.2-0.13.0.jar
The required version of malilib for each mod version may be indicated in the changelog of each of the dependent mods. But basically you want to get the version of all the mods that were the latest released version at the given time, to avoid version mismatches.
This would mostly become more tricky to figure out if you for some reason want to use certain older mod versions than the latest available version for a given MC version. Especially the 0.9.x and 0.10.x version era of MaLiLib for MC 1.12.2 and 1.14.x and 1.15.x (and maybe also 1.16.x still?) were kinda volatile for version compatibility. Also the releases based on the code rewrites, starting from MaLiLib 0.50.0 and going until the eventual 1.0.0 release change lots of things between versions, so getting all the mods from the same release date is crucial.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
|
R
0.18.0
|
21h ago | 1 | |||
| 21h ago | 1 | ||||
|
R
0.17.0
|
21h ago | 1 | |||
|
R
0.16.3
|
21h ago | 1 | |||
|
R
0.16.2
|
21h ago | 1 | |||
|
R
0.16.1
|
21h ago | 1 | |||
|
R
0.16.0
|
21h ago | 1 | |||
|
R
0.15.4
|
21h ago | 1 | |||
|
R
0.15.3
|
21h ago | 1 | |||
|
R
0.15.2
|
21h ago | 1 | |||
| 21h ago | 1 | ||||
|
R
0.14.0
|
21h ago | 1 | |||
|
R
0.54.0
|
21h ago | 1 | |||
|
R
0.13.0
|
21h ago | 1 | |||
|
R
0.53.0
|
21h ago | 1 | |||
|
R
0.13.0
|
21h ago | 1 | |||
|
R
0.13.0
|
21h ago | 1 | |||
|
R
0.52.1
|
21h ago | 1 | |||
|
R
0.52.0
|
21h ago | 1 | |||
|
R
0.51.1
|
21h ago | 1 | |||
|
R
0.51.0
|
21h ago | 1 | |||
|
R
0.50.1
|
21h ago | 1 | |||
|
A
0.50.0
|
21h ago | 1 | |||
|
R
0.12.1
|
21h ago | 1 | |||
| 21h ago | 1 | ||||
|
R
0.12.0
|
21h ago | 1 | |||
|
R
0.11.8
|
21h ago | 1 | |||
|
R
0.11.7
|
21h ago | 1 | |||
|
R
0.11.6
|
21h ago | 1 | |||
|
R
0.11.5
|
21h ago | 1 | |||
|
R
0.11.4
|
21h ago | 1 | |||
|
R
0.11.3
|
21h ago | 1 | |||
|
R
0.11.1
|
21h ago | 1 | |||
|
R
0.11.0
|
21h ago | 1 | |||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
|
R
0.9.6
|
21h ago | 1 | |||
|
R
0.9.5
|
21h ago | 1 | |||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
|
R
0.9.5
|
21h ago | 1 | |||
|
A
0.9.3
|
21h ago | 1 | |||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
|
R
0.9.4
|
21h ago | 1 | |||
|
R
0.9.3
|
21h ago | 1 | |||
|
R
0.9.3
|
21h ago | 1 | |||
|
R
0.9.3
|
21h ago | 1 | |||
|
R
0.9.2
|
21h ago | 1 | |||
|
R
0.9.2
|
21h ago | 1 | |||
|
R
0.9.1
|
21h ago | 1 | |||
|
R
0.9.1
|
21h ago | 1 | |||
|
R
0.9.0
|
21h ago | 1 | |||
|
R
0.9.0
|
21h ago | 1 | |||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
|
R
0.8.5
|
21h ago | 1 | |||
|
R
0.8.5
|
21h ago | 1 | |||
|
R
0.8.4
|
21h ago | 1 | |||
|
R
0.8.4
|
21h ago | 1 | |||
|
R
0.8.3
|
21h ago | 1 | |||
|
R
0.8.3
|
21h ago | 1 | |||
|
R
0.8.2
|
21h ago | 1 | |||
|
R
0.8.2
|
21h ago | 1 | |||
|
R
0.8.1
|
21h ago | 1 | |||
|
R
0.8.1
|
21h ago | 1 | |||
|
R
0.8.0
|
21h ago | 1 | |||
|
R
0.8.0
|
21h ago | 1 | |||
|
R
0.8.0
|
21h ago | 1 | |||
| 21h ago | 1 | ||||
|
R
0.7.0
|
21h ago | 1 | |||
|
R
0.7.0
|
21h ago | 1 | |||
|
R
0.6.1
|
21h ago | 1 | |||
|
R
0.6.1
|
21h ago | 1 | |||
|
R
0.6.0
|
21h ago | 1 | |||
|
R
0.6.0
|
21h ago | 1 | |||
|
R
0.5.1
|
21h ago | 1 | |||
|
R
0.5.1
|
21h ago | 1 | |||
|
R
0.5.0
|
21h ago | 1 | |||
|
R
0.5.0
|
21h ago | 1 | |||
|
R
0.4.1
|
21h ago | 1 | |||
|
R
0.4.0
|
21h ago | 1 | |||
|
R
0.4.0
|
21h ago | 1 | |||
|
R
0.3.1
|
21h ago | 1 | |||
|
R
0.3.1
|
21h ago | 1 | |||
|
R
0.3.0
|
21h ago | 1 | |||
|
R
0.2.0
|
21h ago | 1 | |||
|
R
0.1.0
|
21h ago | 1 |
- experimental: SDL Gamepad handling for Keybinds
- fix: isKeyHeld() state & other Keybind shenanigans
- fix: crafter inv slot count when using NBT-only mode getDataInventory().
- Fix unneccesary callback firing
- Remove expimental Sodium mixin
- Changes for GLFW -> SDL Keybinds
- 26.3
- fix problems with using ChestTracker (Such as not updating "empty" chests, or ruining "Double Chests" Inv Preview displays); and accuracy.
- fix problems with using ChestTracker (Such as not updating "empty" chests, or ruining "Double Chests" Inv Preview displays); and accuracy.
- fix problems with using ChestTracker (Such as not updating "empty" chests, or ruining "Double Chests" Inv Preview displays); and accuracy.
- add: 'name' and 'properties' to BlockUtils.java
- fix: SizeTracker.java system; and cap all Data Tag Network IO / File sizes.
- add: enderCache & fix a few nbt-only Inv preview double chest items.
- update: MaLiLibReference.java; remove FAPI from the mix for checking isRunningInIde(); and divorce is from LOCAL_DEBUG; then introduce a runtime arg / Environment variable.
- fix: LayerRange to/fromJson for axis
- fix: Returning a fake Block Entity for a Lootable Container
- fix: Don't query or process any Blocks when they are not loaded by the Client World
- fix: invalid fromData() parsing under NbtInventory.EntrySlot
- add: 'name' and 'properties' to BlockUtils.java
- fix: SizeTracker.java system; and cap all Data Tag Network IO / File sizes.
- add: enderCache & fix a few nbt-only Inv preview double chest items.
- update: MaLiLibReference.java; remove FAPI from the mix for checking isRunningInIde(); and divorce is from LOCAL_DEBUG; then introduce a runtime arg / Environment variable.
- fix: LayerRange to/fromJson for axis
- fix: Returning a fake Block Entity for a Lootable Container
- fix: Don't query or process any Blocks when they are not loaded by the Client World
- fix: invalid fromData() parsing under NbtInventory.EntrySlot
- add: 'name' and 'properties' to BlockUtils.java
- fix: SizeTracker.java system; and cap all Data Tag Network IO / File sizes.
- add: enderCache & fix a few nbt-only Inv preview double chest items.
- update: MaLiLibReference.java; remove FAPI from the mix for checking isRunningInIde(); and divorce is from LOCAL_DEBUG; then introduce a runtime arg / Environment variable.
- fix: LayerRange to/fromJson for axis
- fix: Returning a fake Block Entity for a Lootable Container
- fix: Don't query or process any Blocks when they are not loaded by the Client World
- fix: invalid fromData() parsing under NbtInventory.EntrySlot
- fix: restore MixinWorldRenderer (Cherry pick issues)
- fix: PacketSplitter to do better, and reduced DEFAULT_MAX_RECEIVE_SIZE to 16MB
- fix: a few items in the Data Tag system.
- network protocol overhaul: All protocols now require explicit registration by the Client.
- Introduce Compressed Data Tag Packets. This saves a ton of Buffer space & bandwidth.
- Hard network backwards compat breakage.
- fix: Render a Blank Item Icon for ConfigBlockState when the Item doesn't contain available components.
- add: WidgetHoverComponent.java for rendering "Vanilla Component" Hover text.
- add: IConfigBase.java -- commentComponent getter and setter [OPTIONAL]
- add: WidgetDirectoryNavigation.java "right click" to open Root, and add new "Open Directory" icon. These Open the respective folders in your OS File Browser; similar to using the "Resource Packs" route.
- add: support for reading block states using "name" and "properties"
- add: ConfigBlockStateList.java and all related Widgets.
- fix: GuiBlockStateEditor.java alignments
- fix: Block Lootable container's from Inv Preview, because otherwise the code will "accidentally" mark them as looted. (More C2ME problems)
- add: Caching last Opened Container Menu's via the EntityDataRegistry via the (enableChestDataTracker) config
- fix: Inv Preview nbt-only size calculations (IDataSyncer / NbtInventory)
- fix: PacketSplitter to do better, and reduced DEFAULT_MAX_RECEIVE_SIZE to 16MB
- fix: a few items in the Data Tag system.
- network protocol overhaul: All protocols now require explicit registration by the Client.
- Introduce Compressed Data Tag Packets. This saves a ton of Buffer space & bandwidth.
- Hard network backwards compat breakage.
- fix: Render a Blank Item Icon for ConfigBlockState when the Item doesn't contain available components.
- add: WidgetHoverComponent.java for rendering "Vanilla Component" Hover text.
- add: IConfigBase.java -- commentComponent getter and setter [OPTIONAL]
- add: WidgetDirectoryNavigation.java "right click" to open Root, and add new "Open Directory" icon. These Open the respective folders in your OS File Browser; similar to using the "Resource Packs" route.
- add: support for reading block states using "name" and "properties"
- add: ConfigBlockStateList.java and all related Widgets.
- fix: GuiBlockStateEditor.java alignments
- fix: Block Lootable container's from Inv Preview, because otherwise the code will "accidentally" mark them as looted. (More C2ME problems)
- add: Caching last Opened Container Menu's via the EntityDataRegistry via the (enableChestDataTracker) config
- fix: Inv Preview nbt-only size calculations (IDataSyncer / NbtInventory)
- fix: PacketSplitter to do better, and reduced DEFAULT_MAX_RECEIVE_SIZE to 16MB
- fix: a few items in the Data Tag system.
- network protocol overhaul: All protocols now require explicit registration by the Client.
- Introduce Compressed Data Tag Packets. This saves a ton of Buffer space & bandwidth.
- Hard network backwards compat breakage.
- fix: Render a Blank Item Icon for ConfigBlockState when the Item doesn't contain available components.
- add: WidgetHoverComponent.java for rendering "Vanilla Component" Hover text.
- add: IConfigBase.java -- commentComponent getter and setter [OPTIONAL]
- add: WidgetDirectoryNavigation.java "right click" to open Root, and add new "Open Directory" icon. These Open the respective folders in your OS File Browser; similar to using the "Resource Packs" route.
- add: support for reading block states using "name" and "properties"
- add: ConfigBlockStateList.java and all related Widgets.
- fix: GuiBlockStateEditor.java alignments
- fix: Block Lootable container's from Inv Preview, because otherwise the code will "accidentally" mark them as looted. (More C2ME problems)
- add: Caching last Opened Container Menu's via the EntityDataRegistry via the (enableChestDataTracker) config
- fix: Inv Preview nbt-only size calculations (IDataSyncer / NbtInventory)
- Increase PacketSplitter Max Buffer
- Increase PacketSplitter Max Buffer
- Increase PacketSplitter Max Buffer
- Obfuscated must not like explicit variable names; even though it gives no errors in IDE.
- fix: Language JSON (%f) loading for all ConfigManager registered mods
- add: translatable "true" / "false" Boolean buttons.
- add: Carpet-TIS "largeBarrel" direct supporting function for Inventory Preview. (This config doesn't require Carpet TIS, but it also checks for the Carpet rule being enabled)
- add: 'enableLargeBarrelPreview' config -- This enables the 'largeBarrel' Inventory Preview display regardless of whether Carpet TIS is installed.
- add: translatable Empty Keybind button text
- Revert a bunch of nonsense.
- add: CarpetCompat to reveal carpet rules;
- add: GuiBase.calcMaxTextFieldWidth() function for Text Fields.
- fix: Outlines No Corners selection box floating point precision.
- fix: ItemStack checks to verify Item Component NBT via RecipeBookUtils
- fix: Language JSON (%f) loading for all ConfigManager registered mods
- add: translatable "true" / "false" Boolean buttons.
- add: Carpet-TIS "largeBarrel" direct supporting function for Inventory Preview. (This config doesn't require Carpet TIS, but it also checks for the Carpet rule being enabled)
- add: 'enableLargeBarrelPreview' config -- This enables the 'largeBarrel' Inventory Preview display regardless of whether Carpet TIS is installed.
- add: translatable Empty Keybind button text
- Revert a bunch of nonsense.
- add: CarpetCompat to reveal carpet rules;
- add: GuiBase.calcMaxTextFieldWidth() function for Text Fields.
- fix: Outlines No Corners selection box floating point precision.
- fix: ItemStack checks to verify Item Component NBT via RecipeBookUtils
- fix: Language JSON (%f) loading for all ConfigManager registered mods
- add: translatable "true" / "false" Boolean buttons.
- add: Carpet-TIS "largeBarrel" direct supporting function for Inventory Preview. (This config doesn't require Carpet TIS, but it also checks for the Carpet rule being enabled)
- add: 'enableLargeBarrelPreview' config -- This enables the 'largeBarrel' Inventory Preview display regardless of whether Carpet TIS is installed.
- add: translatable Empty Keybind button text
- Revert a bunch of nonsense.
- add: CarpetCompat to reveal carpet rules;
- add: GuiBase.calcMaxTextFieldWidth() function for Text Fields.
- fix: Outlines No Corners selection box floating point precision.
- fix: ItemStack checks to verify Item Component NBT via RecipeBookUtils
- Set
translationOverridesto be ON by default. - add: "Walls" Overlay On Demand Renderer.
- Overhaul:
entityDataSync(IDataSyncer) backend for thread safety, and createENTITY_DATA_REGISTRY - Fix IncompatibleClassChangeError on MC 26.2: EditBox.onValueChange is final (#155)
- Sync entire
OnDemandRenderersystem from 26.2 - Sync "complexTexture" changes from 26.2 for
RenderContext - Sync
IDataSyncerInterface overhaul from 26.2 for thread safety & cohesion & introduceENTITY_DATA_REGISTRY
- Sync entire
OnDemandRenderersystem from 26.2 - Sync "complexTexture" changes from 26.2 for
RenderContext - Sync
IDataSyncerInterface overhaul from 26.2 for thread safety & cohesion & introduceENTITY_DATA_REGISTRY - Sync minor IThreadDaemon adjustments from 26.1
- Sync various language updates from 26.1+
- Update various rendering items
- migrate a few more
util/positionclasses from PRW - fix Text Plate On Demand Renderer & fully activate it
- Add: "Simple" block targeting overlay
- Polish up "On Demand Render" system for production use.
- fix: i18nRegistry.scanForTranslationKey() to consider if the key exists in the matching ModID first; and if not; continue the exhaustive scan.
- fix: Thread spin-locks after sleep()
- fix: i18nRegistry.scanForTranslationKey() to consider if the key exists in the matching ModID first; and if not; continue the exhaustive scan.
- fix: Thread spin-locks after sleep()
- add:
translationModesystem as a replacement for the "followBaseLanguage" terminology. - set: i18n Manager Override system to be disabled by default & set to the
Follow Minecraftmode. - add: IConfigHandler 'onLanguageChanged()' callback for whenever Vanilla changes it's language. This is optional; but useful if you want to make sure the Downstream mods are properly tracking when Vanilla changes it's language setting.
- Delete all untranslated
0%translations.
- add:
translationModesystem as a replacement for the "followBaseLanguage" terminology. - set: i18n Manager Override system to be disabled by default & set to the
Follow Minecraftmode. - add: IConfigHandler 'onLanguageChanged()' callback for whenever Vanilla changes it's language. This is optional; but useful if you want to make sure the Downstream mods are properly tracking when Vanilla changes it's language setting.
- Delete all untranslated
0%translations.
- fix: shift onWorldRenderLast to before onLateDebug
- Introduce TRANSLATION Registry so that downstream mods can build their own i18nManager in their Mod Init; and then register it for StringUtils.translate() to work with the new i18n option.
- Adjust Thread Daemon workflow for cleaner sleep / Executor management
- Remove "Async" Thread interface; cleanup / rename "Default"
- adjust "safe" Thread count; add a new "Max" thread count pinned to (cores / 2)
- Add Configurable Keyboard Type (AZERTY vs QWERTY)
- add: translation credits Hover text system (And for all IConfigOptionListEntry/IConfigOptionValues, as an optional feature)
- NOTES:**
- Changing Your Keyboard Type to AZERTY or QWERY will remap all of your configured keybinds**
- When changing each mods' Language configuration; the Config Screen must be closed / reopened to fully take effect.**
- All Downstream translation mods has a Config to "follow" whatever MaLiLib's language is set to as the default; so that ideally you would only need to change the language once under MaLiLib, but still can configure them independently as needed this way.**
- fix: shift onWorldRenderLast to before onLateDebug
- Introduce TRANSLATION Registry so that downstream mods can build their own i18nManager in their Mod Init; and then register it for StringUtils.translate() to work with the new i18n option.
- add:
ConfigOptionValuesas a clone of PRWOptionListConfig - add: 'configWriteMethod' using
ConfigOptionValues - Adjust Thread Daemon workflow for cleaner sleep / Executor management
- Remove "Async" Thread interface; cleanup / rename "Default"
- adjust "safe" Thread count; add a new "Max" thread count pinned to (cores / 2)
- Add Configurable Keyboard Type (AZERTY vs QWERTY)
- add: translation credits Hover text system (And for all IConfigOptionListEntry/IConfigOptionValues, as an optional feature)
- NOTES:**
- Changing Your Keyboard Type to AZERTY or QWERY will remap all of your configured keybinds**
- When changing each mods' Language configuration; the Config Screen must be closed / reopened to fully take effect.**
- All Downstream translation mods has a Config to "follow" whatever MaLiLib's language is set to as the default; so that ideally you would only need to change the language once under MaLiLib, but still can configure them independently as needed this way.**