56 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.server.commands;
 | |
| 
 | |
| import com.google.common.collect.Lists;
 | |
| import com.mojang.brigadier.CommandDispatcher;
 | |
| import com.mojang.logging.LogUtils;
 | |
| import java.util.Collection;
 | |
| import net.minecraft.commands.CommandSourceStack;
 | |
| import net.minecraft.commands.Commands;
 | |
| import net.minecraft.network.chat.Component;
 | |
| import net.minecraft.server.MinecraftServer;
 | |
| import net.minecraft.server.packs.repository.PackRepository;
 | |
| import net.minecraft.world.level.storage.WorldData;
 | |
| import org.slf4j.Logger;
 | |
| 
 | |
| public class ReloadCommand {
 | |
| 	private static final Logger LOGGER = LogUtils.getLogger();
 | |
| 
 | |
| 	public static void reloadPacks(Collection<String> selectedIds, CommandSourceStack source) {
 | |
| 		source.getServer().reloadResources(selectedIds).exceptionally(throwable -> {
 | |
| 			LOGGER.warn("Failed to execute reload", throwable);
 | |
| 			source.sendFailure(Component.translatable("commands.reload.failure"));
 | |
| 			return null;
 | |
| 		});
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Gets a list of IDs for the selected packs as well as all packs not disabled by the world config.
 | |
| 	 */
 | |
| 	private static Collection<String> discoverNewPacks(PackRepository packRepository, WorldData worldData, Collection<String> selectedIds) {
 | |
| 		packRepository.reload();
 | |
| 		Collection<String> collection = Lists.<String>newArrayList(selectedIds);
 | |
| 		Collection<String> collection2 = worldData.getDataConfiguration().dataPacks().getDisabled();
 | |
| 
 | |
| 		for (String string : packRepository.getAvailableIds()) {
 | |
| 			if (!collection2.contains(string) && !collection.contains(string)) {
 | |
| 				collection.add(string);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		return collection;
 | |
| 	}
 | |
| 
 | |
| 	public static void register(CommandDispatcher<CommandSourceStack> dispatcher) {
 | |
| 		dispatcher.register(Commands.literal("reload").requires(Commands.hasPermission(2)).executes(commandContext -> {
 | |
| 			CommandSourceStack commandSourceStack = commandContext.getSource();
 | |
| 			MinecraftServer minecraftServer = commandSourceStack.getServer();
 | |
| 			PackRepository packRepository = minecraftServer.getPackRepository();
 | |
| 			WorldData worldData = minecraftServer.getWorldData();
 | |
| 			Collection<String> collection = packRepository.getSelectedIds();
 | |
| 			Collection<String> collection2 = discoverNewPacks(packRepository, worldData, collection);
 | |
| 			commandSourceStack.sendSuccess(() -> Component.translatable("commands.reload.success"), true);
 | |
| 			reloadPacks(collection2, commandSourceStack);
 | |
| 			return 0;
 | |
| 		}));
 | |
| 	}
 | |
| }
 |