Enchantment is data-driven, so not FeatureDependant (#11377)

This commit is contained in:
Jake Potrebic
2024-09-08 10:42:44 -07:00
parent fc2cdc7db9
commit d1190734bc
2 changed files with 24 additions and 17 deletions

View File

@@ -320,8 +320,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+import io.papermc.paper.registry.PaperRegistries;
+import io.papermc.paper.registry.RegistryAccess;
+import io.papermc.paper.registry.RegistryKey;
+import io.papermc.paper.registry.entry.RegistryEntry;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.stream.Stream;
+import net.kyori.adventure.key.Key;
+import net.minecraft.core.registries.Registries;
+import net.minecraft.resources.ResourceKey;
@@ -338,6 +340,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
@@ -385,11 +388,28 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+
+ @MethodSource("featureFilteredRegistries")
+ @ParameterizedTest
+ <T extends Keyed> void testFeatureDependent(final RegistryKey<T> registryKey) {
+ <T extends Keyed> void testApiImplementsFeatureDependant(final RegistryKey<T> registryKey) {
+ final org.bukkit.Registry<T> registry = RegistryAccess.registryAccess().getRegistry(registryKey);
+ final T anyElement = registry.iterator().next();
+ assertInstanceOf(FeatureDependant.class, anyElement, "Registry " + registryKey + " doesn't have feature dependent elements");
+ final FeatureDependant dependant = ((FeatureDependant) anyElement);
+ assertDoesNotThrow(dependant::requiredFeatures, "Failed to get required features for " + anyElement + " in " + registryKey);
+ }
+
+ static Stream<RegistryKey<?>> nonFeatureFilteredRegistries() {
+ return AbstractTestingBase.REGISTRY_CUSTOM.registries().filter(r -> {
+ final RegistryEntry<?, ?> entry = PaperRegistries.getEntry(r.key());
+ // has an API registry and isn't a filtered registry
+ return entry != null && !FeatureElement.FILTERED_REGISTRIES.contains(r.key());
+ }).map(r -> PaperRegistries.getEntry(r.key()).apiKey());
+ }
+
+
+ @MethodSource("nonFeatureFilteredRegistries")
+ @ParameterizedTest
+ <T extends Keyed> void testApiDoesntImplementFeatureDependant(final RegistryKey<T> registryKey) {
+ final org.bukkit.Registry<T> registry = RegistryAccess.registryAccess().getRegistry(registryKey);
+ final T anyElement = registry.iterator().next();
+ assertFalse(anyElement instanceof FeatureDependant, "Registry " + registryKey + " has feature dependent elements");
+ }
+}