Class ObjectHolderRegistry

java.lang.Object
net.minecraftforge.registries.ObjectHolderRegistry

public class ObjectHolderRegistry extends Object
Internal registry for tracking ObjectHolder references
  • Field Details

  • Constructor Details

    • ObjectHolderRegistry

      public ObjectHolderRegistry()
  • Method Details

    • addHandler

      public static void addHandler(Consumer<Predicate<ResourceLocation>> ref)
      Exposed to allow modders to register their own notification handlers. This runnable will be called after a registry snapshot has been injected and finalized. The internal list is backed by a HashSet so it is HIGHLY recommended you implement a proper equals and hashCode function to de-duplicate callers here. The default @ObjectHolder implementation uses the hashCode/equals for the field the annotation is on.
    • removeHandler

      public static boolean removeHandler(Consumer<Predicate<ResourceLocation>> ref)
      Removed the specified handler from the notification list. The internal list is backed by a hash set, and so proper hashCode and equals operations are required for success. The default @ObjectHolder implementation uses the hashCode/equals for the field the annotation is on.
      Returns:
      true if handler was matched and removed.
    • findObjectHolders

      public static void findObjectHolders()
    • scanTarget

      private static void scanTarget(Map<org.objectweb.asm.Type,String> classModIds, Map<org.objectweb.asm.Type,Class<?>> classCache, org.objectweb.asm.Type type, @Nullable @Nullable String annotationTarget, @Nullable @Nullable Class<?> registryClass, String registryName, String value, boolean isClass, boolean extractFromValue)
    • scanClassForFields

      private static void scanClassForFields(Map<org.objectweb.asm.Type,String> classModIds, org.objectweb.asm.Type targetClass, ResourceLocation registryName, Class<?> registryClass, String value, Class<?> clazz, boolean extractFromExistingValues)
    • getRegistryName

      private static ResourceLocation getRegistryName(Map<org.objectweb.asm.Type,ResourceLocation> classRegistryNames, @Nullable @Nullable String registryName, org.objectweb.asm.Type targetClass, Object declaration)
    • applyObjectHolders

      public static void applyObjectHolders()
    • applyObjectHolders

      public static void applyObjectHolders(Predicate<ResourceLocation> filter)