# PackVariant A single resource pack variant: URL, SHA-1 hash, and the protocols / version expressions it applies to. --- ## Source ```java package gg.lode.paintingapi.api.model; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.List; import java.util.Set; public final class PackVariant { private final String url; private final String hash; private final Set<Integer> protocols; private final List<String> versionExpressions; public PackVariant(@NotNull String url, @NotNull String hash, @NotNull Set<Integer> protocols, @Nullable List<String> versionExpressions) { this.url = url; this.hash = hash; this.protocols = Collections.unmodifiableSet(protocols); this.versionExpressions = versionExpressions == null ? Collections.emptyList() : Collections.unmodifiableList(versionExpressions); } public @NotNull String url() { return url; } public @NotNull String hash() { return hash; } public @NotNull Set<Integer> protocols() { return protocols; } public @NotNull List<String> versionExpressions() { return versionExpressions; } public boolean matches(int protocol) { return protocols.contains(protocol); } } ``` --- ## Related Pages - [[Painting/API/PackDefinition]] — owns the variant list - [[Painting/API/VersionExpression]] — parses the strings in `versionExpressions()`