package net.minecraft.client.multiplayer; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; import java.util.ArrayList; import java.util.List; import java.util.Map; import net.minecraft.server.packs.PackLocationInfo; import net.minecraft.server.packs.PackResources; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.repository.KnownPack; import net.minecraft.server.packs.repository.Pack; import net.minecraft.server.packs.repository.PackRepository; import net.minecraft.server.packs.repository.ServerPacksSource; import net.minecraft.server.packs.resources.CloseableResourceManager; import net.minecraft.server.packs.resources.MultiPackResourceManager; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class KnownPacksManager { private final PackRepository repository = ServerPacksSource.createVanillaTrustedRepository(); private final Map knownPackToId; public KnownPacksManager() { this.repository.reload(); Builder builder = ImmutableMap.builder(); this.repository.getAvailablePacks().forEach(p_334709_ -> { PackLocationInfo packlocationinfo = p_334709_.location(); packlocationinfo.knownPackInfo().ifPresent(p_333246_ -> builder.put(p_333246_, packlocationinfo.id())); }); this.knownPackToId = builder.build(); } public List trySelectingPacks(List p_332560_) { List list = new ArrayList<>(p_332560_.size()); List list1 = new ArrayList<>(p_332560_.size()); for (KnownPack knownpack : p_332560_) { String s = this.knownPackToId.get(knownpack); if (s != null) { list1.add(s); list.add(knownpack); } } this.repository.setSelected(list1); return list; } public CloseableResourceManager createResourceManager() { List list = this.repository.openAllSelected(); return new MultiPackResourceManager(PackType.SERVER_DATA, list); } }