Class ClassLoadingGuardian

java.lang.Object
net.neoforged.fml.loading.ClassLoadingGuardian
All Implemented Interfaces:
AutoCloseable

final class ClassLoadingGuardian extends Object implements AutoCloseable
Implements protections against accidentally loading classes owned by mods or Minecraft from any classloader but a given, blessed loader (the transforming class loader).
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • instrumentation

      private final Instrumentation instrumentation
    • protectedPackages

      private final Set<String> protectedPackages
    • guardianTransformer

      private final ClassFileTransformer guardianTransformer
    • uninstalled

      private volatile boolean uninstalled
    • allowedClassLoader

      private volatile ClassLoader allowedClassLoader
  • Constructor Details

  • Method Details

    • fail

      public static void fail()
      NOTE: this is referenced by the generated self-destructing classes when an incorrect class is accessed via the transformer.
    • setAllowedClassLoader

      public void setAllowedClassLoader(ClassLoader allowedClassLoader)
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
    • getPackages

      private static Set<String> getPackages(List<ModFile> gameContent)
    • isReachableFrom

      private boolean isReachableFrom(ClassLoader classLoader, ClassLoader origin)
    • getPackageName

      @Nullable private static @Nullable String getPackageName(String className)