BRRP (Better Runtime Resource Pack), is a library mod base on ARRP with some enhancements. This mod provides all features of ARRP, fixes some bugs that exist in ARRP, and provides some new features.
What is a runtime resource pack?
Runtime resource pack (RRP) refers to asset and data files generated when Minecraft is running, in avoidance of some repetitive works. For mods with masses of similar blocks and items, runtime resource pack helps to significantly reduce the size of mod file.
For instance, the loot table of most blocks can be described as "drop the block itself". Some blocks drop only when with Silk Touch. For slab blocks, when double slab block is broken, two blocks are dropped instead of one. In loot tables, each block requires a loot table JSON file; creating them is quite time-consuming. Moreover, almost each block requires a "block states", block model and item model (block models may be more than one). If loot tables and recipes (if it exists) are counted, each block requires at least 5 JSONs to achieve full features. In contrast, runtime resource packs make them generated inside the game instance, instead of stored in the mod JAR file.
Runtime resource packs have no difference than regular resource packs with regard to features. Normal resource packs (including the mod's builtin resource and manually-installed resource-packs or data-packs) can override contents of runtime resource packs, or have relations to runtime resource packs. A typical example is, block models are defined in runtime resource packs, and their texture files are stored in mod files as usual (as it's not appropriate to generate texture files in runtime).
Compared to traditional resource packs, runtime resource packs reduce I/Os, but adds the process of object serialization, which is a drawback of runtime resource pack. When resource packs are generated, objects are converted to byte forms (usually JSON). This process is called serialization. When game instance reads these resource packs, these byte-form contents are analysed to generate objects in game. This process is called deserialization. In traditional resource packs, all resources are serialized, and the game instance needs only to deserialize them when loading resources. However, runtime resource packs require the process of both serialization and deserialization.
To summarize again the process traditional resource packs and runtime resource packs are read in game:
- Traditional File → (read as) byte form → (deserialized as) in-game objects
- Runtime Code → ARRP objects → (serialized as) byte form → (deserialized as) in-game objects
It's considered to directly use objects generated in game in future versions, without the process of deserialization and serialization. This is already possible in theory, but to be in the form of resource pack and allow overriding by traditional resource packs and data packs, some further research is required.
About this mod
This mod (BRRP) can be seen as an extension to ARRP, supporting all features of ARRP. If you installed BRRP mod, and installed mods that depend on ARRP (not BRRP), the game can launch. Therefore, please do not install BRRP and ARRP simultaneously. But if some mods nest ARRP in their mod JARs, some issues may happen, so it's not recommended to nest this mod into your mod JAR.
This mod tries to reduce incompatible changes to ARRP, so no classes, fields or methods are deleted; they are just deprecated. If some mods apply mixins on ARRP, the mod may have some issues when run on BRRP, but the probability of this has been as reduced as possible.
This mod is open-source and published under the MPLv2 license.
Relations of this mod and ARRP:
| Other mods installed: | only depends ARRP | depends BRRP | |-----------------------|-----------------------|---------------------| | only installed ARRP | can run normally | cannot run normally | | only installed BRRP | usually runs normally | can run normally |
Currently, the following mods are compatible with this mod. You can install BRRP without having to install ARRP:
- Extended Block Shapes (1.4.0-1.18.1)
- Mishang Urban Construction (1.18.2-0.1.7)
- Minekea (1.18.2-2.4.0)
- Pannotias Parcels (1.18.2-1.1.0)
Besides, ctft mod may be incompatible with BRRP because it nests ARRP.
More details are available on GitHub.