# PackDefinition
A named pack from `resourcepacks:` in config. Holds an ordered list of variants; the first matching variant is selected per-player.
---
## 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;
public final class PackDefinition {
private final String name;
private final List<PackVariant> variants;
public PackDefinition(@NotNull String name, @NotNull List<PackVariant> variants) {
this.name = name;
this.variants = Collections.unmodifiableList(variants);
}
public @NotNull String name() { return name; }
public @NotNull List<PackVariant> variants() { return variants; }
public @Nullable PackVariant pickFor(int protocol) {
for (PackVariant variant : variants) {
if (variant.matches(protocol)) return variant;
}
return null;
}
}
```
---
## Related Pages
- [[Painting/API/PackVariant]] — variant entries returned by `variants()`
- [[Painting/API/IPaintingAPI]] — `getPackDefinition(String)` returns this type