mirror of
https://github.com/FabricMC/fabric.git
synced 2025-04-21 11:20:55 -04:00
Fix bad interaction between FabricDynamicRegistryProvider
and modded dynamic registries (#3353)
* Add reproduction test * Fix the issue
This commit is contained in:
parent
b18afef34a
commit
d19c412984
3 changed files with 7 additions and 0 deletions
fabric-data-generation-api-v1/src
main/java/net/fabricmc/fabric/api/datagen/v1/provider
testmod/java/net/fabricmc/fabric/test/datagen
|
@ -82,6 +82,8 @@ public abstract class FabricDynamicRegistryProvider implements DataProvider {
|
|||
Entries(RegistryWrapper.WrapperLookup registries, String modId) {
|
||||
this.registries = registries;
|
||||
this.queuedEntries = DynamicRegistries.getDynamicRegistries().stream()
|
||||
// Some modded dynamic registries might not be in the wrapper lookup, filter them out
|
||||
.filter(e -> registries.getOptionalWrapper(e.key()).isPresent())
|
||||
.collect(Collectors.toMap(
|
||||
e -> e.key().getValue(),
|
||||
e -> RegistryEntries.create(registries, e)
|
||||
|
|
|
@ -56,6 +56,9 @@ public class DataGeneratorTestContent implements ModInitializer {
|
|||
TEST_DATAGEN_DYNAMIC_REGISTRY_KEY,
|
||||
new Identifier(MOD_ID, "tiny_potato")
|
||||
);
|
||||
// Empty registry
|
||||
public static final RegistryKey<Registry<TestDatagenObject>> TEST_DATAGEN_DYNAMIC_EMPTY_REGISTRY_KEY =
|
||||
RegistryKey.ofRegistry(new Identifier("fabric", "test_datagen_dynamic_empty"));
|
||||
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
|
@ -73,6 +76,7 @@ public class DataGeneratorTestContent implements ModInitializer {
|
|||
.build());
|
||||
|
||||
DynamicRegistries.register(TEST_DATAGEN_DYNAMIC_REGISTRY_KEY, TestDatagenObject.CODEC);
|
||||
DynamicRegistries.register(TEST_DATAGEN_DYNAMIC_EMPTY_REGISTRY_KEY, TestDatagenObject.CODEC);
|
||||
}
|
||||
|
||||
private static Block createBlock(String name, boolean hasItem, AbstractBlock.Settings settings) {
|
||||
|
|
|
@ -133,6 +133,7 @@ public class DataGeneratorTestEntrypoint implements DataGeneratorEntrypoint {
|
|||
TEST_DATAGEN_DYNAMIC_REGISTRY_KEY,
|
||||
this::bootstrapTestDatagenRegistry
|
||||
);
|
||||
// do NOT add TEST_DATAGEN_DYNAMIC_EMPTY_REGISTRY_KEY, should still work without it
|
||||
}
|
||||
|
||||
private void bootstrapTestDatagenRegistry(Registerable<DataGeneratorTestContent.TestDatagenObject> registerable) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue