Recipe Rewrite (API Only)
Description
The long awaited recipe rewrite (supersedes #4093)
Proposed changes
In short, adds true shaped/shapeless crafting, tagged inputs, and json (de)serialization (custom recipes)
Full ADR here
Related Issues (if applicable)
N/A
Checklist
- [ ] I have fully tested the proposed changes and promise that they will not break everything into chaos.
- [ ] I have also tested the proposed changes in combination with various popular addons and can confirm my changes do not break them.
- [ ] I have made sure that the proposed changes do not break compatibility across the supported Minecraft versions (1.16.* - 1.20.*).
- [ ] I followed the existing code standards and didn't mess up the formatting.
- [ ] I did my best to add documentation to any public classes or methods I added.
- [ ] I have added
NonnullandNullableannotations to my methods to indicate their behaviour for null values - [ ] I added sufficient Unit Tests to cover my code.
Your Pull Request was automatically labelled as: "🔧 API" Thank you for contributing to this project! ❤️
Slimefun preview build
A Slimefun preview build is available for testing! Commit: 49449f71
https://preview-builds.walshy.dev/download/Slimefun/4256/49449f71
Note: This is not a supported build and is only here for the purposes of testing. Do not run this on a live server and do not report bugs anywhere but this PR!
I'm going to throw together a showcase addon sometime next week to facilitate testing since I don't want to migrate any Slimefun stuff in this PR.
@WalshyDev I updated the ADR with most of your review
For custom server recipes, that design was pretty confusing, so I replaced it with one where developers' recipes are in plugins/Slimefun/recipes as usual, and custom server recipes are in plugins/Slimefun/recipes/custom, which takes precedent
Regarding your comments about recipe filenames -- can you elaborate on why we can't rely on filenames for recipes? It makes overriding them with custom recipes easier. Afaik resource packs also use paths/filenames to override certain resources
Lmk if I missed any parts