Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/estecka/mc-more-canvases
Lets you register new painting using a config file.
https://github.com/estecka/mc-more-canvases
fabric fabricmc minecraft minecraft-mod
Last synced: about 6 hours ago
JSON representation
Lets you register new painting using a config file.
- Host: GitHub
- URL: https://github.com/estecka/mc-more-canvases
- Owner: Estecka
- License: mit
- Created: 2023-05-29T17:54:33.000Z (over 1 year ago)
- Default Branch: 1.19.4
- Last Pushed: 2024-06-19T17:13:34.000Z (5 months ago)
- Last Synced: 2024-06-20T05:45:57.286Z (5 months ago)
- Topics: fabric, fabricmc, minecraft, minecraft-mod
- Language: Java
- Homepage: https://modrinth.com/mod/more-canvases
- Size: 573 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.md
- License: LICENSE
Awesome Lists containing this project
README
# More Canvases
## Overview
Lets you register new painting variants via a configuration file, in compliance with the vanilla variant system.This mod only handles **the registration part of the paintings** and **their addition to the `placeable` tag**. All other aspects (textures, names and authors) must be provided via a resource pack, using the same format as for vanilla paintings.
This should work in multiplayer, so long as everyone uses the same set of paintings as the server.
I recommend also installing [No Kebab](https://modrinth.com/mod/no-kebab). If you accidentally remove a variant from the config, No-Kebab will prevent it from being removed from the world.
## Configuration files
### Painting sets
In order to easily manage multiple painting sets from different sources, this mod can accomodate for any number of configuration files, each containing multiple paintings.
The files are located in `.minecraft/config/more-canvases/*.json`, and may use any name you want; the filename has no bearing on the functionality.Each key in the root object is the ID of a painting. It should contain both the namespace and the path, separated by a semicolon.
Each value has the following properties:
- `size` : An array of two integers, the dimensions of the painting measured in blocks. Width first, then height.
- `placeable` _(Optional; defaults to `true`)_ : Whether this painting should be included in the "placeable" tag. Paintings that are excluded can only be obtained through commands.For example, here's a config file that would reproduce the behaviour of v1.0 of the mod:
```json
{
"mocan:blank2x3": { "size":[2,3] },
"mocan:blank2x4": { "size":[2,4] },
"mocan:blank3x2": { "size":[3,2] },
"mocan:blank3x3": { "size":[3,3] },
"mocan:blank3x4": { "size":[3,4] },
"mocan:blank1x3": { "size":[1,3], "placeable":false },
"mocan:blank1x4": { "size":[1,4], "placeable":false },
"mocan:blank3x1": { "size":[3,1], "placeable":false },
"mocan:blank4x1": { "size":[4,1], "placeable":false }
}
```
(The painting's ID does not need to contain its size; this is just the naming convention I was using back then.)If you're familar with CLI, [here is a tiny script](./config-generator.sh) capable of generating a config file from an unzipped texture pack.
### Error handling
By default, any error in the painting sets will cause the game to crash. Minecraft removes missing paintings from the world with no warning, so this is to prevent any accidental loss.If you know what you're doing, those restrictions can be laxed in a separate configuration file: `.minecraft/config/more-canvases.properties`.
All the properties are `true` by default
- `failHard.onPaintings` crashes if a painting couldn't be created, either because it has an invalid definition, or because a configuration file could not be read.
- `failHard.onDuplicata` crashes if multiple definitions exist for the same id. This only applies to the paintings defined within the scope of More-Canvases, or vanilla paintings. Redefining a painting from another mod may still lead to a crash even with this option set to false, depending on the mod-loading order.
- `failHard.onPlaceable` crashes if the mod fails to populate the placeable tag with the generated paintings.## Related mods
### [ **No Kebab**](https://modrinth.com/mod/no-kebab)
Prevents uninstalled custom paintings from being removed from the world.### [ **Invariable Paintings**](https://modrinth.com/mod/invariable-paintings)
Turns paintings into collectibles.## Extra credits
### Client Paintings
V1 was designed as a companion mod for [Client-Paintings](https://modrinth.com/mod/client-paintings). V2 can still coexist with it, and can still be used to make more painting sizes available to it. However v2 makes Client-Paintings redundant, unless you really like the principle behind its ETF-like variant system.The readme for v1 can still be found on [the corresponding tag](https://github.com/Estecka/mc-more-canvases/tree/1.2.0+1.20) of the repository.
### Dataified paintings
For most means and purpose, Mo-Can achieves the same results as my other mod [Dataified Paintings](https://modrinth.com/mod/dataified-paintings), with the exception of being config-driven instead of datapack-driven. Mo-Can is infinitely easier to maintain and more stable, whereas Dataified is still experimental and not fully functional.