HomeJavaModsClient side painting variants
Client side painting variants
ModsJava

Client side painting variants

by secret_online · on Modrinth

Which Minecraft do you have?

Every version of the game needs its own build. Pick yours, then download — the wrong build installs fine and then does nothing in the game. This mod is built for Fabric only.

⬇ Download for 1.21.9–1.21.10⬇ Download for 1.21.3–1.21.8⬇ Download for 1.21.1⬇ Download for 1.21⬇ Download for 1.20.5–1.20.6
I don't know my version or loader
Open the Minecraft launcher and look at the profile you play on — it names both, like fabric-loader-1.21.4. The version also shows in the bottom-right corner of the game's main menu.
No loader in the profile name? Then it's plain Minecraft, and these mods won't run — you need Fabric or NeoForge installed first.
Client side painting variants — screenshot 1Client side painting variants — screenshot 2

Client side painting variants

Use resource packs to add new types of painting without removing any existing paintings, entirely on the client side!

Title and logo on top of a field of paintings. Some paintings are the default paintings, but others are custom.

This mod requires Fabric API, so make sure it's installed with this mod.

Wait, how is this different from 1.21's painting variants?

Minecraft 1.21 adds painting variants that rely on data packs to specify new variants. Unfortunately this means that these paintings must be defined per world, or set up by the server's admin. What this mod does is extend that idea further, allowing resource packs to define more painting variants for any players using the mod on their clients. Clients without the mod just see the regular paintings.

This does lead to the one limitation of this mod: it can't add new sizes of paintings, just add more variants to existing sizes (whether they're defined by Minecraft or a data pack).

How does this work on multiplayer?

Comparison of viewing the same paintings from an unmodded and modded client. Custom paintings are only visible on the modded client, but show up as normal paintings on the unmodded client.

For resource/data pack developers

Players with this mod installed can have your paintings added into the pool of available paintings wherever they go with your resource pack, and not just on servers with the data pack. Since this mod doesn't remove any of Minecraft's default paintings, it's a nice non-destructive way to have your artwork integrated into the game.

There are only two requirements for this mod to work.

  1. Ensure your painting textures are in your resource pack's assets/<namespace>/textures/painting/ folder (where the game's default paintings are, so hopefully this is where you've put your painting textures too).
  2. Add the painting variant JSON files to your resource pack's assets/<namespace>/painting_variant/ (note: no trailing s) folder.
    • These are the same format as adding painting variants in a data pack.
      • width: Width of the painting in blocks. Must be in the range of 1-16.
      • height: Height of the painting in blocks. Must be in the range of 1-16.
      • asset_id: Identifier of the texture in the paintings atlas. <namespace>/<filename-without-ext>
    • Ref: 24w18a changelog.
Example resource pack structure
resourcepack.zip
├─pack.mcmeta
├─pack.png
└─assets/
  └─<namespace>/
    ├─painting_variant/
    │ ├─<id1>.json
    │ └─<id2>.json
    └ textures/
      └─painting/
        ├─<id1>.png
        └─<id2>.png

This as similar as possible to 1.21's painting variant system, which is driven by data packs. This mod takes the two folders from the two different types of pack and puts them together.

Equivalent data and resource pack in Vanilla
datapack.zip
├─pack.mcmeta
└─data/
  └─<namespace>/
    └─painting_variant/
      ├─<id1>.json
      └─<id2>.json

resourcepack.zip
├─pack.mcmeta
├─pack.png
└─assets/
  └─<namespace>/
    └ textures/
      └─painting/
        ├─<id1>.png
        └─<id2>.png

I'd love to make this a no-effort thing for pack developers (which would also have the benefit of working out-of-the-box), but unfortunately the resource/data pack split makes the ideal version of this project impossible. Instead, I think this is the next best thing. I hope that it's a small thing you can just do without having to think about it too much.

License

This mod is licensed under the Mozilla Public License 2.0. You may use this mod in your mod packs. Source code is included in a separate sources.jar file alongside every release.

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

Verified by MCModsHub

These come from our own check of the pack file, not from the source page.

Explore more