refactor registry entry to detach 'delayed' from other meta
Also fixes an issue with direct holders
This commit is contained in:
@@ -2,8 +2,7 @@ package io.papermc.paper.registry;
|
||||
|
||||
import io.papermc.paper.registry.data.util.Conversions;
|
||||
import io.papermc.paper.registry.entry.RegistryEntry;
|
||||
import io.papermc.paper.registry.entry.RegistryEntryInfo;
|
||||
import io.papermc.paper.registry.legacy.DelayedRegistryEntry;
|
||||
import io.papermc.paper.registry.entry.RegistryEntryMeta;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
import net.minecraft.core.Registry;
|
||||
@@ -23,21 +22,17 @@ class RegistryBuilderTest {
|
||||
|
||||
static Stream<Arguments> registries() {
|
||||
return PaperRegistries.REGISTRY_ENTRIES.stream()
|
||||
.map(RegistryBuilderTest::possiblyUnwrap)
|
||||
.filter(RegistryEntry.BuilderHolder.class::isInstance)
|
||||
.map(RegistryEntry::meta)
|
||||
.filter(RegistryEntryMeta.Buildable.class::isInstance)
|
||||
.map(Arguments::arguments);
|
||||
}
|
||||
|
||||
private static <M, B extends Keyed> RegistryEntryInfo<M, B> possiblyUnwrap(final RegistryEntryInfo<M, B> entry) {
|
||||
return entry instanceof final DelayedRegistryEntry<M, B> delayed ? delayed.delegate() : entry;
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("registries")
|
||||
<M, T> void testEquality(final RegistryEntry.BuilderHolder<M, T, ?> registryEntry) {
|
||||
<M, T extends Keyed> void testEquality(final RegistryEntryMeta.Buildable<M, T, ?> registryEntry) { // TODO remove Keyed
|
||||
final Registry<M> registry = RegistryHelper.getRegistry().lookupOrThrow(registryEntry.mcKey());
|
||||
for (final Map.Entry<ResourceKey<M>, M> entry : registry.entrySet()) {
|
||||
final M built = registryEntry.fillBuilder(new Conversions(new RegistryOps.HolderLookupAdapter(RegistryHelper.getRegistry())), entry.getValue()).build();
|
||||
final M built = registryEntry.builderFiller().fill(new Conversions(new RegistryOps.HolderLookupAdapter(RegistryHelper.getRegistry())), entry.getValue()).build();
|
||||
assertEquals(entry.getValue(), built);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user