Описание
> This readme is for v3/v4 of the mod. Find the readme for v1/v2 [here](https://github.com/Estecka/mc-invariable-paintings/blob/2.1.1%2B1.21/README.md).
# 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](https://modrinth.com/resourcepack/invarpaint-cit)** instead of the mod. Clients that join without the pack will see the vanilla painting textures instead of the custom ones.
**[Patched](https://modrinth.com/mod/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](https://modrinth.com/mod/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](https://github.com/Estecka/mc-invariable-paintings/tree/HEAD/src/main/resources/resourcepacks/looting/data/invarpaint/tags/painting_variant).
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:
```jsonc
{
"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](https://modrinth.com/mod/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//textures/item/painting/.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](https://github.com/Estecka/mc-invariable-paintings/tree/HEAD/src/client/resources/resourcepacks/vanilla-cit) 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](https://github.com/Estecka/mc-invariable-paintings/blob/HEAD/src/client/resources/resourcepacks/vanilla-cit/assets/minecraft/items/painting.json) 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 `:painting/`. 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](https://bugs.mojang.com/browse/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**](https://modrinth.com/mod/invarpaint-stockbook)
Keep your painting collection neatly packed inside a single stack.
### [ **No Kebab**](https://modrinth.com/mod/no-kebab)
Prevents accidentally uninstalled custom paintings from being removed from the world.