Code/net/minecraft/server/commands/ReloadCommand.java

54 lines
2.4 KiB
Java

package net.minecraft.server.commands;
import com.google.common.collect.Lists;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.context.CommandContext;
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> p_138236_, CommandSourceStack p_138237_) {
p_138237_.getServer().reloadResources(p_138236_).exceptionally(p_138234_ -> {
LOGGER.warn("Failed to execute reload", p_138234_);
p_138237_.sendFailure(Component.translatable("commands.reload.failure"));
return null;
});
}
private static Collection<String> discoverNewPacks(PackRepository p_138223_, WorldData p_138224_, Collection<String> p_138225_) {
p_138223_.reload();
Collection<String> collection = Lists.newArrayList(p_138225_);
Collection<String> collection1 = p_138224_.getDataConfiguration().dataPacks().getDisabled();
for (String s : p_138223_.getAvailableIds()) {
if (!collection1.contains(s) && !collection.contains(s)) {
collection.add(s);
}
}
return collection;
}
public static void register(CommandDispatcher<CommandSourceStack> p_138227_) {
p_138227_.register(Commands.literal("reload").requires(p_138231_ -> p_138231_.hasPermission(2)).executes(p_288528_ -> {
CommandSourceStack commandsourcestack = p_288528_.getSource();
MinecraftServer minecraftserver = commandsourcestack.getServer();
PackRepository packrepository = minecraftserver.getPackRepository();
WorldData worlddata = minecraftserver.getWorldData();
Collection<String> collection = packrepository.getSelectedIds();
Collection<String> collection1 = discoverNewPacks(packrepository, worlddata, collection);
commandsourcestack.sendSuccess(() -> Component.translatable("commands.reload.success"), true);
reloadPacks(collection1, commandsourcestack);
return 0;
}));
}
}