54 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| 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.fabricmc.api.EnvType;
 | |
| import net.fabricmc.api.Environment;
 | |
| 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.PackRepository;
 | |
| import net.minecraft.server.packs.repository.ServerPacksSource;
 | |
| import net.minecraft.server.packs.resources.CloseableResourceManager;
 | |
| import net.minecraft.server.packs.resources.MultiPackResourceManager;
 | |
| 
 | |
| @Environment(EnvType.CLIENT)
 | |
| public class KnownPacksManager {
 | |
| 	private final PackRepository repository = ServerPacksSource.createVanillaTrustedRepository();
 | |
| 	private final Map<KnownPack, String> knownPackToId;
 | |
| 
 | |
| 	public KnownPacksManager() {
 | |
| 		this.repository.reload();
 | |
| 		Builder<KnownPack, String> builder = ImmutableMap.builder();
 | |
| 		this.repository.getAvailablePacks().forEach(pack -> {
 | |
| 			PackLocationInfo packLocationInfo = pack.location();
 | |
| 			packLocationInfo.knownPackInfo().ifPresent(knownPack -> builder.put(knownPack, packLocationInfo.id()));
 | |
| 		});
 | |
| 		this.knownPackToId = builder.build();
 | |
| 	}
 | |
| 
 | |
| 	public List<KnownPack> trySelectingPacks(List<KnownPack> packs) {
 | |
| 		List<KnownPack> list = new ArrayList(packs.size());
 | |
| 		List<String> list2 = new ArrayList(packs.size());
 | |
| 
 | |
| 		for (KnownPack knownPack : packs) {
 | |
| 			String string = (String)this.knownPackToId.get(knownPack);
 | |
| 			if (string != null) {
 | |
| 				list2.add(string);
 | |
| 				list.add(knownPack);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		this.repository.setSelected(list2);
 | |
| 		return list;
 | |
| 	}
 | |
| 
 | |
| 	public CloseableResourceManager createResourceManager() {
 | |
| 		List<PackResources> list = this.repository.openAllSelected();
 | |
| 		return new MultiPackResourceManager(PackType.SERVER_DATA, list);
 | |
| 	}
 | |
| }
 |