All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Invariable Paintings

Invariable Paintings

by Estecka • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

This readme is for v3/v4 of the mod. Find the readme for v1/v2 here.

Invariable Paintings

Turns each painting variant into its own item. When a painting is broken, it will drop the variant-locked item instead of the blank one. No new item type was added to the game, variant-locked items work the same as the ones available in the vanilla creative menu.

Empty paintings can no longer be placed, but filled ones can be found in various places.

Environment

Core functionalities are fully server-side.

Client-side installation is strictly optional, containing only minor tooltip changes.

Vanilla clients can use a resource pack instead of the mod. Clients that join without the pack will see the vanilla painting textures instead of the custom ones.

Patched is needed on the server-side in order to add paintings to loot tables. It is technically optional, but without it, paintings will only be available via trading.

Obtaining paintings

Trading

Filled paintings can be bought from Master Shepherds and Wandering Traders. Shepherds no longer sell variantless paintings, but will now require one in their pricing.

The elemental paintings are exclusive to the Wandering Trader, and a few haphazardly chosen others are exclusive to the villagers. Modded paintings will be available to both by default.

Looting

This feature requires Patched.

Filled paintings can be found inside many naturally generated chests, suspicious soils, and while fishing. Some paintings are exclusive to certain location; for example, the Wither painting can only be found in the nether. Modded paintings will be available in most locations by default.

The loot tables are provided as a built-in datapack which can be disabled. Without the datapack, all location-exclusive paintings will instead be available via trading.

Modded-paintings

By default, modded paintings will be part of a "common" pool and be available from all sources.

In datapacks, you can make paintings exclusive to certain sources by adding them to the builtin exclusive tags. You can also create custom exclusive sets by adding new tags to the global invarpaint:exclusive tag. In loot-tables and trades, use the invarpaint:lock_variant_randomly loot-function to randomize a painting's variant from a given pool:

{
    "function": "invarpaint:lock_variant_randomly",
    "variants": [
        // Include paintings from the common pool, notice the leading exclamation mark !
        "!#invarpaint:exclusive",
        // Include paintings from a specific tag.
        "#invarpaint:exclusive/villager",
        // Can also include arbitrary painting variants
        "minecraft:wither"
        "minecraft:endboss"
    ]
}

Inventory Textures

The provided texture-pack only includes textures for vanilla paintings; modded paintings will fallback to a generic texture.

Modded paintings with Variant-CITs

To add custom textures, I recommend using Variants-CIT. The required configuration file is already included in Invarpaint's own pack, so no set-up is needed from you. In a texturepack, simply add your textures to pathes that match the painting's variant ID:
/assets/<namespace>/textures/item/painting/<variant>.png

Modded painting on Vanilla clients

There are two ways to go about it.
In both cases you'll need to create custom JSON models for every painting variant. If you're familiar with Bash, you can borrow the scripts used to generate Invarpaint's own pack, which covers both use cases.

The simplest way is to take the provided pack, and edit the painting model so that it also references the models for your paintings.

Alternatively you can configure the server so that it sets the paintings' item_model component, that way, you can have separate models in separate packs. On the flipside, clients that joins your server without the texture pack will see missing models.
Use this command to change the config : /invarpaint config server.item_model true
Painting items will have their item model set to <namespace>:painting/<path>. Existing paintings will need to be placed and broken in order to be updated.

Miscellaneous changes

Server-side

  • Creative players can pick a painting's variant by holding Ctrl.
  • Placement of variant-locked paintings in tight spaces is more forgiving. (Vanilla would require targeting one specific block.) Shows a warning when trying to place a painting in a space that is too small.
  • Fixes MC-257133, whereby failing to place a painting causes an inventory desync, causing the client to believe it has consummed the item.

Client-side

  • Slightly reworked the tooltip for painting items. The painting title appears in the item name, and the author appears on the same line as the size.

Related mods

Collector's Stockbook

Keep your painting collection neatly packed inside a single stack.

No Kebab

Prevents accidentally uninstalled custom paintings from being removed from the world.

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.2 26.1.x
Fabric
3mo ago 1
1.21.11
Fabric
3mo ago 1
1.21.x
Fabric
3mo ago 1
1.21.x
Fabric
11mo ago 1
1.21.x
Fabric
11mo ago 1
1.21.x
Fabric
last yr. 1
1.21.x
Fabric
last yr. 1
1.21.5
Fabric
last yr. 1
1.21.4
Fabric
last yr. 1
1.21.4
Fabric
last yr. 1
1.21.4
Fabric
last yr. 1
1.21.x
Fabric
last yr. 1
1.21.x
Fabric
last yr. 1
1.21.x
Fabric
last yr. 1
1.21.x
Fabric
last yr. 1
1.21.x
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.19.4
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.20.2
Fabric
last yr. 1
1.20.1
Fabric
last yr. 1
1.19.4
Fabric
last yr. 1
1.20.2
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.19.4
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.19.4
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.20.2
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.19.4
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.19.4
Fabric
last yr. 1
1.20.x
Fabric
last yr. 1
1.19.4
Fabric
last yr. 1
  • Ported to MC 1.21.11 and MC 26, marked previous branch as incompatible.
  • Ported to MC 1.21.11 and MC 26, marked previous branch as incompatible.
  • Ported to MC 1.21.11 and MC 26, marked previous branch as incompatible.
  • Ported to MC 1.21.9, marked previous branch as incompatible.
  • Ported to MC 1.21.9, marked previous branch as incompatible.
  • Added Dennis item texture.
  • Added Dennis to the villager-exclusive loot pools.
  • Marked embedded packs as compatible with MC 1.21.6 and onward.
  • Ported to MC 1.21.5
  • The embedded resource pack no longer requires the item_model component to be set.
  • The server no longer sets the item_model component by default.
  • Some API breaking changes.
  • Marked as incompatible with MC 1.21.5
  • Marked the embedded datapack as compatible with MC 1.21.4

  • Note: The latest version of Patched seems to be compatible, despite having yet to be marked as such.*
  • Ported to MC 1.21.4. Marked previous branch as incompatible.
  • Ported to MC 1.21.4. Marked previous branch as incompatible.
  • Fixed crash when the mod is installed client-side.
  • Ported to MC 1.21.2
  • CITs are now available to vanilla clients** using a [resource pack](https://modrinth.com/resourcepack/invarpaint-cit). Painting items have their item_model component set on the server-side.
  • Removed the client-side CIT logic,** now fully relegated to _Variants-CIT_.
  • Adjusted some CITs. 3x3's are now a bit smaller than 4x4's.
  • The recipe for blank painting was reverted to vanilla. (Leftover from experimental crafting recipes.)
  • Painting trades now expire after a single use.
[2.1.1+1.21] v2.1.1+1.21 by Estecka on Oct 25, 2024
Download
  • Marked this branch as incompatible with MC 1.21.2
[2.1.0+1.21] v2.1.0+1.21 by Estecka on Jun 19, 2024
Download
  • Ported to MC 1.21
  • CITs are now generated based on existing textures, instead of registered painting variants.
  • Added CITs for the new paintings.
  • The repartition of paintings amongst loot tables was adjusted to account for the new variants.
  • Advanced tooltips now show the raw variant ID of painting items.
Additions:
  • Some painting variants may now only be obtained from specific sources.** E.g: the Wither painting is now exclusive to the nether, and the elemental paintings can only be bought from Wandering Traders. The system behind this was built so that modded (untagged) paintings will remain available from most sources by default.
  • The loot function invarpaint:lock_variant_randomly can optionally specify a pool of variants it will be restricted to.
  • Merchant trades can be given exclusive deals by placing paintings into the tags #invarpaint:exclusive/villager or #invarpaint:exclusive/wanderer.
  • The inventory-desync fix is now fully server-side.
  • The server now provides a fallback translation for the warning when placing a painting into a smaller space.

Removals:
  • Vanilla CITs are no longer an optional resource pack. (They are back into the core assets.)
  • Removed the deprecated name minecraft:lock_variant_randomly.
  • Removed experimental crafting recipes.** ([Re-published separately.](https://modrinth.com/mod/invarpaint-crafting))
Features:
  • Added a custom CIT logic for painting items**.
This uses its own resource-pack format, but is easier to setup than CIT-resewn, and yields better performances.
CIT-resewn is still compatible, but no longer necessary.
  • Painting items with an invalid variants now have a unique icon.
  • Creative players can pick a painting's variant by holding Ctrl when picking.**
  • The loot function lock_variant_randomly was renamed to invarpaint:lock_variant_randomly. The old name is still functional, but will be removed in future releases.

Rebalance:
  • Increased the emerald price of painting trades, and reduced the amount of trades before they expire.
  • Shepherds now also require a blank canvas in their price**. (Wandering traders are unaffected.)
  • The "Recycling" preset no longer prevents the crafting of blank canvases.

Features:
  • Added a custom CIT logic for painting items**.
This uses its own resource-pack format, but is easier to setup than CIT-resewn, and yields better performances.
CIT-resewn is still compatible, but no longer necessary.
  • Painting items with an invalid variants now have a unique icon.
  • Creative players can pick a painting's variant by holding Ctrl when picking.**
  • The loot function lock_variant_randomly was renamed to invarpaint:lock_variant_randomly. The old name is still functional, but will be removed in future releases.

Rebalance:
  • Increased the emerald price of painting trades, and reduced the amount of trades before they expire.
  • Shepherds now also require a blank canvas in their price**. (Wandering traders are unaffected.)
  • The "Recycling" preset no longer prevents the crafting of blank canvases.

Features:
  • Added a custom CIT logic for painting items**.
This uses its own resource-pack format, but is easier to setup than CIT-resewn, and yields better performances.
CIT-resewn is still compatible, but no longer necessary.
  • Painting items with an invalid variants now have a unique icon.
  • Creative players can pick a painting's variant by holding Ctrl when picking.**
  • The loot function lock_variant_randomly was renamed to invarpaint:lock_variant_randomly. The old name is still functional, but will be removed in future releases.

Rebalance:
  • Increased the emerald price of painting trades, and reduced the amount of trades before they expire.
  • Shepherds now also require a blank canvas in their price**. (Wandering traders are unaffected.)
  • The "Recycling" preset no longer prevents the crafting of blank canvases.

  • Crafting recipe behaviour is now fully data-driven. The corresponding gamerules have been removed.**
  • Added several recipe preset datapacks.
  • Added a dye count option to the crafting recipes.
  • Added iterative crafting logic, allowing the crafting of any variant, even using short combinations of dyes.**
  • Moved the loot tables to a datapack which can be disabled.

  • Users on 1.20 who use Patched must update to the latest version (3.2.3+1.20.1) for some datapacks to work at all.**
Users on 1.19.4 can safely stay on Patched 1.19.3+1.0.2
  • Crafting recipe behaviour is now fully data-driven. The corresponding gamerules have been removed.**
  • Added several recipe preset datapacks.
  • Added a dye count option to the crafting recipes.
  • Added iterative crafting logic, allowing the crafting of any variant, even using short combinations of dyes.**
  • Moved the loot tables to a datapack which can be disabled.

  • Users on 1.20 who use Patched must update to the latest version (3.2.3+1.20.1) for some datapacks to work at all.**
Users on 1.19.4 can safely stay on Patched 1.19.3+1.0.2
  • Crafting recipe behaviour is now fully data-driven. The corresponding gamerules have been removed.**
  • Added several recipe preset datapacks.
  • Added a dye count option to the crafting recipes.
  • Added iterative crafting logic, allowing the crafting of any variant, even using short combinations of dyes.**
  • Moved the loot tables to a datapack which can be disabled.

  • Users on 1.20 who use Patched must update to the latest version (3.2.3+1.20.1) for some datapacks to work at all.**
Users on 1.19.4 can safely stay on Patched 1.19.3+1.0.2
  • Crafting recipe behaviour is now fully data-driven. The corresponding gamerules have been removed.**
  • Added several recipe preset datapacks.
  • Added a dye count option to the crafting recipes.
  • Added iterative crafting logic, allowing the crafting of any variant, even using short combinations of dyes.**
  • Moved the loot tables to a datapack which can be disabled.

  • Users on 1.20 who use Patched must update to the latest version (3.2.3+1.20.1) for some datapacks to work at all.**
Users on 1.19.4 can safely stay on Patched 1.19.3+1.0.2
  • Added some experimental crafting recipe for paintings.** (Disabled by default)
  • Added a default CIT for filled paintings.**
  • Vanilla CITs can be disabled in the resource-pack menu.
  • The tooltip handles some edge cases more gracefully.
  • Added some experimental crafting recipe for paintings.** (Disabled by default)
  • Added a default CIT for filled paintings.**
  • Vanilla CITs can be disabled in the resource-pack menu.
  • The tooltip handles some edge cases more gracefully.
  • Added some experimental crafting recipe for paintings.** (Disabled by default)
  • Added a default CIT for filled paintings.**
  • Vanilla CITs can be disabled in the resource-pack menu.
  • The tooltip handles some edge cases more gracefully.
  • Added paintings to the loot table of most Suspicious soils.**
  • Added paintings to the loot table of most Suspicious soils.**
  • Added painting trades to the rebalanced Wandering Trader** (1.20.2 only)
  • Added missing credits
Invariable Paintings Icon
Download Invariable Paintings
Select game version
Select platform