- Added `baby_texture`, `baby_model`, `baby_animation` and `baby_saddle` model redirect fields
- They act exactly the same as their counterparts without `baby_` prefix
- Anything placed in those fields will be applied only if dragon is baby
- If those fields are not specified, baby models, animations and textures will be applied normally
- Improved readability of model redirect data, hitbox redirect and variant spawn debug prints in logs
- They also are now printed in normal log instead of debug one
- Added options `log_model_redirects` in client config and `log_variant_spawns` and `log_hitbox_redirects` in common config. Both are set to `false` by default
- If `log_model_redirects` set to `false`, information about registered model redirects will not be printed in logs
- If `log_variant_spawns` set to `false`, information about registered variant spawns will not be printed in logs
- If `log_hitbox_redirects` set to `false`, information about registered hitbox redirects will not be printed in logs
- Added `dragon` field for model redirects, hitbox redirects and variant spawns.
- `dragon` field allows to specify dragon ID to which this file belongs. If specified, file name will be ignored
- If `dragon` is not specified, it'll attempt to define dragon ID from file name as before
- Field must be specified outside entry list for all cases, i.e.:
```json
{
"dragon": "some_dragon",
"redirects": [
...
]
}
```
- Now if mod is unable to recognize dragon ID in model redirect, hitbox redirect or variant spawn file, file will be skipped and warning will be printed in console
- Added Jade integration for displaying dragon and egg variants in tooltip
- Additionally added `display_original_variant_name` client config option that can enforce display of string form `VariantName` NBT in dragon variant tooltip
- Added hitbox redirects. **Note: hitbox redirects are applied via checking base variant and will not be applied if you use nametag.**
- Hitbox redirects should go in `hitbox_redirects` folder in your data pack under any namespace.
- For each species file should be named respectively (i.e. `triple_stryke` for Triple Stryke and `monstrous_nightmare` for Monstrous Nightmare)
- Each record in hitbox redirects file can have the following fields:
- `name` - name of the variant to which will be affected, mandatory
- `passenger_positions` - overrides passenger positions relative to the entity, optional. Presented in form of an array that contains relative positions, which are itself are arrays with size of 3, for each passenger in order. I.e. writing like this:
```json
"passenger_positions": [
[-1, 2, 0],
[2, 3, -3]
]
```
means that first passenger (aka controlling passenger or rider) will be offset on -1, 2 and 0 on x, y and z axis respectively relative to vehicle (aka dragon in our case) entity's center. Second passenger will be offset on 2, 3 and -3 on x, y and z axis respectively relative to the center. If there's no redirect for passenger position is found, passenger will be positioned according to how base mod does it.
- `hitbox` - overrides entity's hitbox, optional. Has the following fields: `width` and `height`. Both are mandatory. If not specified, default hitbox will be used
- `attack_box` - overrides attack box sizes for dragons that have it (Gronkle, Stinger, Triple Stryke), optional. Just like `hitbox`, has `width` and `height` fields and both are mandatory
- `attack_box_position` - position of attack box relative to the entity, written as array of 3 numbers, which are x, y and z coordinates relative to the entity. Optional. If not specified, the box will be positioned like in base mod
- Added possibility to make passenger model follow movement of specific bones
- This means that Variant Loader will automatically look up for bones called `passengerN` to position passenger model relative to this bone. `N` here represents passenger's number, where count starts from 0 (first passenger will have number 0, thus mod will look for bone `passenger0`, second will have number 1 and mod will look for `passenger1` and so on).
- If specific bone is not present, passenger will be rendered normally
- Fixed bug that caused variants that applied via nametags to be applied incorrectly if those variants didn't have redirects that base variant has
- Fixed issue that caused model caches to be reset incorrectly, which caused all sorts of weird visual issues with models
- Mod now will automatically assign corresponding Variant Loader variant according to variant id from base mod if it can't find. This means you no longer have to fix dragon variants manually when adding Variant Loader to existing worlds
- Added new `surface_restriction` field to spawn conditions that allows to define if dragon has or has not to be on surface in order to spawn
- If place has dragon spawn, but no variants, dragon will now simply not spawn. If it still manages to spawn, mod will set variant to default and warn in logs instead of throwing exception
- If spawn has weight over 0 and no allowed or banned biome restrictions specified, allowed biomes will automatically be restricted to Overworld ones (via `#forge:is_overworld` tag)
- Client config no longer creates unnecessary backup files (bug fix)
- Updated translation/localisation key generator to support new localisaton keys
- Translation/localisation key generator now only generates keys for variants that have model redirect
- Added possibility to redirect egg textures, models and item models per variant
- Added possibility to redirect localisation keys used for dragon and egg entities and egg item if those don't have custom name (this may not work for already existing eggs, thank IoB's sheetcode)
- Minimal required Forge version is now 40.2.10
- Added possibility to specify full path to asset file in model redirects
- Some perfomance enchasements
- Variants with capital letters in the name no longer crash the game
## The 2.0.0 update
Initially released as beta due amount of changes
### Changelog:
- Entire backend was rewritten, so some unexpected things may be expected
- Added asset path caching for optimization
- Added inheritance for breeding (behaviour can be edited via config)
- By default there's 70% chance to inherit parent's variant (independent from place of breeding). If config value inheritance_chance (in iob_variant_loader.toml) set to 0, variant from breeding will be always random
- Eggs of all species now can have predetermined variant
- If egg has variant, it'll be applied on hatching (behaviour can be edited via config)
- Variant on the egg determined by place of parents breeding rather the place of egg hatching (behaviour can be edited via config)
- The variant that egg has is shown at tooltip. If it's invalid, some gibberish will appear
### Regarding data and resource packs:
- Added field "nametag_accessible" for model redirects. If set to false, this variant cannot be applied via nametag. If not specified, defaults to true
- Variant name shown in tooltip can be edited via language file (changes only displayed name in tooltip, doesn't change actual name of the variant)
- Deadly Nadder membranes now accept it's own glowing layer
- Added field "breeding_weight" for variant spawn declaration. Determines weight of the variant in breeding. If set to 0, variant cannot be obtained from breeding. If not specified, defaults to value specified in "weight"
- "weight" field is now only responsible for variants for wild dragons (naturally generated)
All old packs should work as before
### Added client config (iob_variant_loader-client.toml) with following fields:
- disable_glowing - disables glowing layer on dragons. False by default
- disable_named_variants - disables nametag variants, instead shows actual dragon variant. False by default
- generate_translations - autogenerates translation keys for variants added via resource packs
- ignored_by_generator, ignored_by_generator_endings - some filters for key generator
- Glow layer is now can be added as texture file rather than .mcmeta file (just add "*texturename*_glowing.png" alongside regular texture (in case of this example regular texture would be "texturename.png"))
- Saddle texture now can be redirected
- Fixed mod trying to look path for "gronkle" instead of "gronckle" within assets folder
- Mod will now check its presence on client if installed on server to avoid any possible issues caused by its absence
- Improved reading of json files, so those pesky errors of failed datapack reading should be gone
Added possibility to redirect animation and model files for specific names or variants via resource packs (check example resource pack to see how to do it)
- Glow layer support ([example](https://github.com/NordAct/IoB-Variant-Loader/blob/main/Example-Resource-Pack/assets/isleofberk/textures/dragons/terrible_terror/example.png.mcmeta))
- Ability to add variants to spawn pool without overwriting main file in iobvariantloader namespace ([example](https://github.com/NordAct/IoB-Variant-Loader/blob/main/Example-Data-Pack/data/example/dragon_variants/terrible_terror.json))