Class ObjectHolderRegistry


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

    • LOGGER

      private static final org.apache.logging.log4j.Logger LOGGER
    • objectHolders

      private static final Set<Consumer<Predicate<ResourceLocation>>> objectHolders

      private static final org.objectweb.asm.Type OBJECT_HOLDER
    • MOD

      private static final org.objectweb.asm.Type MOD
  • 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.
      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 String annotationTarget, String value, boolean isClass, boolean extractFromValue)
    • scanClassForFields

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

      public static void applyObjectHolders()
    • applyObjectHolders

      public static void applyObjectHolders(Predicate<ResourceLocation> filter)