Record Class BundleMetadata

java.lang.Object
java.lang.Record
net.fabricmc.loom.configuration.providers.BundleMetadata

public record BundleMetadata(List<BundleMetadata.Entry> libraries, List<BundleMetadata.Entry> versions, String mainClass) extends Record
  • Constructor Details

    • BundleMetadata

      public BundleMetadata(List<BundleMetadata.Entry> libraries, List<BundleMetadata.Entry> versions, String mainClass)
      Creates an instance of a BundleMetadata record class.
      Parameters:
      libraries - the value for the libraries record component
      versions - the value for the versions record component
      mainClass - the value for the mainClass record component
  • Method Details

    • fromJar

      public static @Nullable BundleMetadata fromJar(Path jar) throws IOException
      Throws:
      IOException
    • fromJarCached

      public static @Nullable BundleMetadata fromJarCached(SpecStore store, Path jar, @Nullable String artifactSha1) throws IOException
      读取服务端制品的 bundle 元数据,结果按制品的 sha1 落盘复用.

      本方法存在的理由是一个配置期约束:服务端库的注入( MinecraftLibraryProvider.provideServerLibraries)依赖这里读出的库列表, 而库注入只能在配置期做,因此配置期**必须**拿到 bundle 元数据。

      但元数据本身是「下载 url + sha1」的纯函数——这两个值来自 version json, 不需要碰磁盘。于是把结果按 sha1 缓存后,后续构建可以完全跳过「打开服务端 jar 读内部清单」这一步,配置期也就不再观察该 jar。这是把服务端下载搬到执行期的**先决条件**。

      首次构建仍须真实读取(此时无缓存),并因此付出一次配置期文件观察; 之后稳定命中。

      Parameters:
      store - L2 规格存储
      jar - 服务端 jar
      artifactSha1 - 该制品在 version json 中声明的 sha1,作为缓存身份
      Returns:
      bundle 元数据;非 bundler 的旧版服务端 jar 返回空
      Throws:
      IOException
    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • libraries

      public List<BundleMetadata.Entry> libraries()
      Returns the value of the libraries record component.
      Returns:
      the value of the libraries record component
    • versions

      public List<BundleMetadata.Entry> versions()
      Returns the value of the versions record component.
      Returns:
      the value of the versions record component
    • mainClass

      public String mainClass()
      Returns the value of the mainClass record component.
      Returns:
      the value of the mainClass record component