Rainbow
Rainbow is a client-side Minecraft mod for the Fabric modloader to generate Geyser block/item mappings, locale overrides, and bedrock resourcepacks
for use with Geyser's custom content APIs. Rainbow is available for Minecraft 26.3.
Rainbow is currently experimental, and capable of generating Geyser block/item/skull/waypoint style mappings, and a bedrock resourcepack for somewhat simple blocks, 2D and 3D items, sounds, and waypoint styles. For a moderately complete list of Rainbow's capabilities, see further below.
Rainbow works by detecting custom blocks (using block state overrides) from loaded resourcepacks, and custom items in your inventory, or a container/inventory menu you have opened. It analyses the components of detected items, and uses assets from loaded Java resourcepacks to gather information about block and item models, textures, and more.
Usage
You can download the latest version of Rainbow here on our website or here on Modrinth. Using Rainbow requires the Fabric API to be installed.
To use Rainbow, you must install it on your Minecraft client. Rainbow adds a few commands to the client. Generally, you use them as follows:
- First, start a new pack by running
/rainbow create <name>, replacing<name>with the name of your pack. Your resourcepack and Geyser mappings will be exported in the.minecraft/rainbow/<name>folder. Anything in here can be overwritten! - Once you have created a pack, you can start mapping custom content. Mapped custom content will be included in the exported resourcepack and Geyser mappings. There are multiple ways to map custom content:
/rainbow map block <target>- maps the custom block at<target>, if any./rainbow map item- maps the custom item or skull you're currently holding in your hand, if any./rainbow map sound <namespace>- maps all the custom sounds of the given namespace./rainbow map waypoint <waypoint style>- maps the given waypoint style, if it exists./rainbow mapinventory- scans your inventory for custom items or skulls, and maps all that are found./rainbow auto blocks- scans through all loaded resourcepacks for custom blocks created using block state overrides, and maps all that are found. This may shortly freeze your client./rainbow auto inventory- scans all inventory menus and containers you open for custom items and skulls, and maps all that are found. This is handy for plugins that offer an inventory menu listing all custom items.- Use
/rainbow auto stopto stop the mapping of custom items.
- Use
/rainbow auto recipes- scans through all known recipes for results that are custom items or skulls, and maps all that are found. This is handy for datapacks that contain recipes with custom items as result. You can use the vanilla/recipe give @s *command to give yourself all recipes, which helps Rainbow recognise custom items with this command./rainbow auto sounds- scans through all loaded resourcepacks for custom sounds, and maps all that are found./rainbow auto waypoints- scans through all loaded resourcepacks for custom waypoint styles, and maps all that are found.
- Once you have mapped all of your custom items, use
/rainbow finishto finish the pack. Rainbow will then export the resourcepack and Geyser mappings it has created.
When you've finished your pack, navigate to the .minecraft/rainbow/<name> folder. You can also click on the Wrote pack to disk in chat to open this folder.
In this folder, you'll find 4 important files/folders:
custom_mappings: you need to put the files in here in thecustom_mappingsfolder in Geyser's config folder. These are the generated Geyser mappings.pack.zip: you need to put this file in thepacksfolder in Geyser's config folder.lang: you need to put all files in this folder in thelocales/overridesfolder in Geyser's config folder.- The folder can be empty or non-existent if no language files are found. This is usually not an issue!
report.txt: you don't need to do anything with this file, but it contains information about generated assets and possible problems that occurred.
Once you have taken these steps, restart your server. Bedrock players should then download the generated pack upon joining, and if everything went well, they should be able to see (and hear) custom content!
If you have any questions or run into any problems, please do feel free to ask for support in the Geyser Discord!
What Rainbow can do
Rainbow is currently capable of the following:
- Generating Geyser block mappings for custom blocks made using block state overrides, both automatically and manually from loaded resourcepacks.
- Generating Geyser item mappings complete with data components and proper bedrock options, by detecting items with custom
minecraft:item_modelorminecraft:custom_model_datacomponents, and analysing their components.- Also includes generating mappings with predicates for more complicated Java item model definitions, such as checks for if an item is broken. The following definition types are currently supported by Rainbow:
- Plain item model definitions.
- Conditional item models, supported properties are:
broken,damaged,custom_model_data,has_component, and,fishing_rod/cast.
- Range dispatch item models, supported properties are:
bundle/fullness,count,custom_model_data, and,damage.
- Select item models, supported properties are:
charge_type,trim_material,context_dimension, and,custom_model_data.- For the
display_contextproperty, theguicase is mapped, if present.
- Also includes detecting if an item should be displayed handheld by looking at the item's model.
- Also is able to detect and map items using the "legacy"
custom_model_datarange-dispatch style, and map them to Geyser'slegacyitem mappings. - Also supports mapping dyeable items, but these are (for now) only detected when they're dyed whilst mapping.
- Also includes generating mappings with predicates for more complicated Java item model definitions, such as checks for if an item is broken. The following definition types are currently supported by Rainbow:
- Generating Geyser skull mappings for custom player heads.
- Generating Geyser waypoint style mappings for custom waypoint styles (locator bar icons).
- Generating a simple bedrock resourcepack for blocks and simple 2D items, as well as:
- Simple custom armour items, by analysing an item's
minecraft:equippablecomponent and loaded equipment assets.- Custom elytra items also work, but only visually, due to bedrock limitations.
- 3D items, by converting the Java model to a bedrock one, and generating an attachable and animations for it, as well as rendering a custom GUI icon.
- Is able to translate display transformations for the head, first-person and third-person item slots.
- Custom sounds.
- Simple custom armour items, by analysing an item's
- Generating working animated (flipbook) textures for 2D items and 3D items that make use of a single texture only.
- Exporting merged language files from loaded resourcepacks to a folder, for easy copying to Geyser's
locales/overridesfolder.- Files from different resourcepacks for the same language are merged together.
How to Install Rainbow (Mod)
Rainbow by Unknown is verified for Fabric across Minecraft versions 26.1, 26.1.1, 26.1.2, 26.2, 26.3 (latest release: 0.2.1-26.3-b56, file size: 438 KB). Follow the steps below to install it safely from ModCraft.tv:
- Click the Download button above and select your Minecraft version (26.1, 26.1.1, 26.1.2, 26.2, 26.3) and platform (Fabric).
- Make sure you have the compatible loader or environment installed for Fabric.
- Move the downloaded Rainbow file into your Minecraft
.minecraft/modsfolder and launch the game.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 22d ago | 1 | ||||
| 3mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 5mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 6mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 | ||||
| 7mo ago | 1 |
- [
e0dc13e](https://github.com/GeyserMC/Rainbow/commit/e0dc13e) Version bumps for 26.3 by @eclipseisoffline - [
425ab32](https://github.com/GeyserMC/Rainbow/commit/425ab32) Build fixes for 26.3 by @eclipseisoffline - [
3650dc4](https://github.com/GeyserMC/Rainbow/commit/3650dc4) Version bumps, support for new components and dyeable items by @eclipseisoffline - [
d10232f](https://github.com/GeyserMC/Rainbow/commit/d10232f) Update README by @eclipseisoffline - [
c985955](https://github.com/GeyserMC/Rainbow/commit/c985955) Merge pull request \#52 from GeyserMC\/feature\/26.3 by @eclipseisoffline
- [
b132559](https://github.com/GeyserMC/Rainbow/commit/b132559) Move custom skulls handling to core project, switch to generating mappings instead of YAML file \(\#48\) by @eclipseisoffline
- [
99136a2](https://github.com/GeyserMC/Rainbow/commit/99136a2) Set up issue templates by @eclipseisoffline - [
b9b7746](https://github.com/GeyserMC/Rainbow/commit/b9b7746) Version bumps, fix build by @eclipseisoffline - [
f578a66](https://github.com/GeyserMC/Rainbow/commit/f578a66) Sanitise texture reference in material instance name by @eclipseisoffline - [
fb2b452](https://github.com/GeyserMC/Rainbow/commit/fb2b452) Fix: NoSuchElementException in CustomSkulls \(\#41\) by @eclipseisoffline - [
1efadc9](https://github.com/GeyserMC/Rainbow/commit/1efadc9) Update to 26.2 by @eclipseisoffline - [
9a5c471](https://github.com/GeyserMC/Rainbow/commit/9a5c471) Fix handheld model detection by @eclipseisoffline - [
a2d82b1](https://github.com/GeyserMC/Rainbow/commit/a2d82b1) Move custom skulls handling to core project, switch to generating mappings instead of YAML file by @eclipseisoffline - [
55c7bf2](https://github.com/GeyserMC/Rainbow/commit/55c7bf2) Fix 26.2 pre-release renames by @eclipseisoffline - [
7a771da](https://github.com/GeyserMC/Rainbow/commit/7a771da) Add support for mapping custom waypoint styles by @eclipseisoffline - [
446b92c](https://github.com/GeyserMC/Rainbow/commit/446b92c) Refactor GeyserMapping classes to have an ABC with helper method to create codec, fix datagen module by @eclipseisoffline - [
63a5e50](https://github.com/GeyserMC/Rainbow/commit/63a5e50) Refactor pack stat collection, add skull stats back to report.txt by @eclipseisoffline - [
3d55b12](https://github.com/GeyserMC/Rainbow/commit/3d55b12) Fix: properly set some item component patches based on the model predicates \(\#40\) by @eclipseisoffline - [
c4fa3ba](https://github.com/GeyserMC/Rainbow/commit/c4fa3ba) Fix: report ignoring plain model as success, update README by @eclipseisoffline - [
8bebe6b](https://github.com/GeyserMC/Rainbow/commit/8bebe6b) License project under GNU LGPL 3.0 or later, include copyright notice in every file by @eclipseisoffline - [
ff61b89](https://github.com/GeyserMC/Rainbow/commit/ff61b89) Fix Gradle deprecation warnings by @eclipseisoffline
- [
b3dece7](https://github.com/GeyserMC/Rainbow/commit/b3dece7) Implement mapping and exporting of custom sounds \(\#32\) by @eclipseisoffline
- [
fe863fe](https://github.com/GeyserMC/Rainbow/commit/fe863fe) Fix: don't stitch multi-layer flat built-in models, only render icon by @eclipseisoffline
- [
b464420](https://github.com/GeyserMC/Rainbow/commit/b464420) Fix: properly return empty optional when trying to load missingno texture by @eclipseisoffline - [
e662d1d](https://github.com/GeyserMC/Rainbow/commit/e662d1d) Fix: fallback to mapping vanilla model when legacy CMD mapping fails, add \/rainbow auto recipes command by @eclipseisoffline
- [
3c1ba1c](https://github.com/GeyserMC/Rainbow/commit/3c1ba1c) Fix: actually export custom icons in BedrockItem by @eclipseisoffline
- [
6a62de7](https://github.com/GeyserMC/Rainbow/commit/6a62de7) Fix: replace static TextureHolder with dynamic IconRenderer in ItemModelTextures, for stack-dependent icons by @eclipseisoffline
- [
061cc8f](https://github.com/GeyserMC/Rainbow/commit/061cc8f) Update README and report.txt header by @eclipseisoffline
- [
93192a2](https://github.com/GeyserMC/Rainbow/commit/93192a2) Rename and relocate item mapping definitions by @eclipseisoffline - [
d1fba6f](https://github.com/GeyserMC/Rainbow/commit/d1fba6f) Create records and codecs for Geyser block mappings by @eclipseisoffline - [
2b15670](https://github.com/GeyserMC/Rainbow/commit/2b15670) Create builders for new block mapping classes by @eclipseisoffline - [
b5c08d3](https://github.com/GeyserMC/Rainbow/commit/b5c08d3) Store GeyserBlockMappings in BedrockPack, small Serializable refactors by @eclipseisoffline - [
0dee86f](https://github.com/GeyserMC/Rainbow/commit/0dee86f) Simplify PackPaths by @eclipseisoffline - [
d70ccd6](https://github.com/GeyserMC/Rainbow/commit/d70ccd6) Start working on creating Geyser block mappings by @eclipseisoffline - [
d2f54fc](https://github.com/GeyserMC/Rainbow/commit/d2f54fc) Allow selecting specific block states to map by @eclipseisoffline - [
beb2c45](https://github.com/GeyserMC/Rainbow/commit/beb2c45) Work on properly mapping materials and exporting terrain textures and atlas by @eclipseisoffline - [
4880281](https://github.com/GeyserMC/Rainbow/commit/4880281) Abstract ModelTextures for use with both blocks and items by @eclipseisoffline - [
5922c65](https://github.com/GeyserMC/Rainbow/commit/5922c65) Use max texture size for width and height of BlockModelTextures by @eclipseisoffline - [
d3c6816](https://github.com/GeyserMC/Rainbow/commit/d3c6816) Make sure item icon textures and block textures don't conflict, properly map full block geometry and single materials by @eclipseisoffline - [
8eeb6c3](https://github.com/GeyserMC/Rainbow/commit/8eeb6c3) Work on implementing flipbook textures for blocks by @eclipseisoffline - [
b932fc2](https://github.com/GeyserMC/Rainbow/commit/b932fc2) Clean up animation handling in SingleTexture by @eclipseisoffline - [
45ef40c](https://github.com/GeyserMC/Rainbow/commit/45ef40c) Support exporting flipbook\_textures.json for blocks with flipbook textures by @eclipseisoffline - [
af2d6d9](https://github.com/GeyserMC/Rainbow/commit/af2d6d9) Reduce size of generated texture atlases by re-using textures, clean up texture path handling by @eclipseisoffline
- [
3140ec0](https://github.com/GeyserMC/Rainbow/commit/3140ec0) Fix item data components in rainbow-datagen by @eclipseisoffline
- [
3005a27](https://github.com/GeyserMC/Rainbow/commit/3005a27) Switch to submodule for languages by @eclipseisoffline
- [
64eeeb0](https://github.com/GeyserMC/Rainbow/commit/64eeeb0) Add mapping of custom skulls with generating of custom-skulls.yml file by @eclipseisoffline
- [
e5b1906](https://github.com/GeyserMC/Rainbow/commit/e5b1906) Fix: don't use icon texture when it is not generated, catch all exceptions when parsing language files by @eclipseisoffline
- [
317172d](https://github.com/GeyserMC/Rainbow/commit/317172d) Update Rainbow’s icon \(\#26\) by @Novampr