* Add CompletableFuture to FabricCodecDataProvider
* Deprecate the old method and constructor, and fix the style
* Fix the style for real this time
* Add exceptions to the configure methods
* Apply suggestions from code review
---------
Co-authored-by: modmuss <modmuss50@gmail.com>
* Add JsonKeySortOrderCallback
* Use an entry point rather than an event for sort keys and priorities
* Resolve static imports
* Add a bit of javadoc
* Check if a key is null and modify the javadoc
* Add a field reference in the javadoc
* Rename JsonKeySortOrderAdder to JsonKeySortOrderCallback
(cherry picked from commit 0883a8d4d9)
* Update to loom 1.3
* Fix more 1.3 deprecations
* Opps
* Move to mod publish plugin
* Revert some changes
* Fix some more Gradle deprecations
* Fix names
* Remove extra stuff
* Cleanup
* Fix datagen for custom dynamic registry
* Test datagen for custom dynamic registry
* Check if the dynamic registry is registered with Fabric API
* Cleanup testmod
* Don't apply to registries not added using the fabric api.
---------
Co-authored-by: modmuss50 <modmuss50@gmail.com>
* Some more TAWs
Added some TAWs for various methods in `Blocks` used to create certain types of blocks that mods may want to also create. Using these methods will allow them to ensure they have all the right block settings they need to stay consistent with vanilla blocks that use the same methods.
* Add some fields from BlockLootTableGenerator
useful fields from BlockLootTableGenerator. also cleaned up the datagen api's accesswidener file
* Add API for adding custom dynamic registries
Closes#1012, supersedes #1031 and #2719.
* Add missing license headers
* Clarify RegistryLoaderMixin namespace injection
* Replace event with static registration, add skeleton for sorting registries
* Fix typo
* Refactor event phase sorting system for use with dynamic registries (#1)
* Make minor changes to Technici4n's PR
* Add test for nested dynamic objects
* Revert "Add test for nested dynamic objects"
This reverts commit 486e3e1ce0.
* Revert "Make minor changes to Technici4n's PR"
This reverts commit 741bd52c1e.
* Revert "Refactor event phase sorting system for use with dynamic registries (#1)"
This reverts commit bb7c8b8790.
* Remove sorting API
* Add support for defaulted dynamic registries
* Re-add test for nested dynamic objects
* Add missing license headers
* Fix typo
* Remove defaulted dynamic registries; flatten registration methods
* Remove last reference to registry sorting
* Add option to skip syncing for empty dynregs
* Update DynamicRegistrySyncOption docs
Co-authored-by: Technici4n <13494793+Technici4n@users.noreply.github.com>
* Address review feedback
* Add registry namespace to tag paths for modded registries
* Move dynamic registry tests into their own class for readibility
* Finish DynamicRegistries doc
* Only apply tag change to dynamic registries
* Fix checkstyle
* Update fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/api/event/registry/DynamicRegistries.java
Co-authored-by: Technici4n <13494793+Technici4n@users.noreply.github.com>
---------
Co-authored-by: Technici4n <13494793+Technici4n@users.noreply.github.com>
# Breaking changes
- `VillagerPlantableRegistry` replaced with `ItemTags.VILLAGER_PLANTABLE_SEEDS`
- `FabricItemGroup.builder()` no longer takes an `Identifier`
- `FabricItemGroup.build()` no longer registers the ItemGroup, this now needs to go in the vanilla registry.
- `ItemGroupEvents.modifyEntriesEvent` now takes a `RegistryKey<ItemGroup>` in place of an `Identifier`
- `FabricLanguageProvider` now takes a `RegistryKey<ItemGroup>` in place of an `ItemGroup`
- `IdentifiableItemGroup` removed, replaced with vanilla registries.
- `FabricMaterialBuilder` removed, no replacement.
- `HudRenderCallback.onHudRender` now passed a `DrawableHelper` in place of `MatrixStack`
- `ScreenEvents.beforeRender` now passed a `DrawableHelper` in place of `MatrixStack`
- `ScreenEvents.afterRender` now passed a `DrawableHelper` in place of `MatrixStack`
- `Screens.getItemRenderer()` removed. Replace with `MinecraftClient.getItemRenderer()`
`DrawableHelper` is likely to be renamed soon, see: https://github.com/FabricMC/yarn/pull/3548/
* BlockSetTypeRegistry and WoodTypeRegistry
Adds `BlockSetTypeRegistry` for creating `BlockSetType`s using Identifiers.
Also adds `WoodTypeRegistry` to replace `SignTypeRegistry`, matching the new more accurate Yarn name. The old `SignTypeRegistry` remains as deprecated for compatibility.
Also updates Yarn build.
* Delete SignTypeRegistry.java
Broke in the update anyway, no use keeping it
* Suggestions
* Whoops
* Suggestions
* Fabric custom ingredient API
* More Ingredient API work
* Optimize shapeless matching logic
* Fix all the things
* Move custom ingredient network serialization to account for ingredient extension API
* Apply suggestions from code review
Co-authored-by: apple502j <33279053+apple502j@users.noreply.github.com>
* Address 🍎 review
* Get rid of the @Overwrite
* Implement graceful fallback for clients not supporting some custom ingredients
* Move custom ingredient code to new Recipe API module
* Fix client package change
* Address review comments
- And/Or -> All/Any
- Move builtin ingredient registration to entrypoint
- Initial protocol version is 1
- Misc other changes
* Add testing instructions
* Use a List for `getMatchingStacks`
* Overengineer ingredient query a bit
Co-authored-by: apple502j <33279053+apple502j@users.noreply.github.com>
Co-authored-by: modmuss50 <modmuss50@gmail.com>
* Fixed blocks with vanilla loot tables making strict validation of datagen fail
Previously, blocks that used `.dropsLike(block)` in their block settings to use a vanilla block's loot table, or `.dropsNothing()` to use the `minecraft:empty` loot table, would cause strict validation in data generation to fail as the vanilla loot tables wouldn't be present in the mod's own block loot table generator.
This fixes that by ensuring that the block's loot table ID has a namespace that matches the loot table generator before adding it to the missing IDs list.
Two test blocks were added to the testmod, one which uses `.dropsLike(Blocks.STONE)` to use the same loot table as Stone, and one that uses `.dropsNothing()`. Previously, these would have caused strict validation to fail as the `minecraft:stone` and `minecraft:empty` loot tables aren't generated by the testmod's generator. Now they pass just fine.
* Fixed blocks with vanilla loot tables making strict validation of datagen fail
Previously, blocks that used `.dropsLike(block)` in their block settings to use a vanilla block's loot table, or `.dropsNothing()` to use the `minecraft:empty` loot table, would cause strict validation in data generation to fail as the vanilla loot tables wouldn't be present in the mod's own block loot table generator.
This fixes that by ensuring that the block's loot table ID has a namespace that matches the loot table generator before adding it to the missing IDs list.
Two test blocks were added to the testmod, one which uses `.dropsLike(Blocks.STONE)` to use the same loot table as Stone, and one that uses `.dropsNothing()`. Previously, these would have caused strict validation to fail as the `minecraft:stone` and `minecraft:empty` loot tables aren't generated by the testmod's generator. Now they pass just fine.