ReloadCommand.java

net.minecraft.server.commands.ReloadCommand

信息

  • 全限定名:net.minecraft.server.commands.ReloadCommand
  • 类型:public class
  • 包:net.minecraft.server.commands
  • 源码路径:src/main/java/net/minecraft/server/commands/ReloadCommand.java
  • 起始行号:L15
  • 职责:

    TODO

字段/常量

  • LOGGER
    • 类型: Logger
    • 修饰符: private static final
    • 源码定位: L16
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

public static void reloadPacks(Collection<String> selectedPacks, CommandSourceStack source) @ L18

  • 方法名:reloadPacks
  • 源码定位:L18
  • 返回类型:void
  • 修饰符:public static

参数:

  • selectedPacks: Collection
  • source: CommandSourceStack

说明:

TODO

private static Collection<String> discoverNewPacks(PackRepository packRepository, WorldData worldData, Collection<String> currentPacks) @ L26

  • 方法名:discoverNewPacks
  • 源码定位:L26
  • 返回类型:Collection
  • 修饰符:private static

参数:

  • packRepository: PackRepository
  • worldData: WorldData
  • currentPacks: Collection

说明:

TODO

public static void register(CommandDispatcher<CommandSourceStack> dispatcher) @ L40

  • 方法名:register
  • 源码定位:L40
  • 返回类型:void
  • 修饰符:public static

参数:

  • dispatcher: CommandDispatcher

说明:

TODO

代码

public class ReloadCommand {
    private static final Logger LOGGER = LogUtils.getLogger();
 
    public static void reloadPacks(Collection<String> selectedPacks, CommandSourceStack source) {
        source.getServer().reloadResources(selectedPacks).exceptionally(throwable -> {
            LOGGER.warn("Failed to execute reload", throwable);
            source.sendFailure(Component.translatable("commands.reload.failure"));
            return null;
        });
    }
 
    private static Collection<String> discoverNewPacks(PackRepository packRepository, WorldData worldData, Collection<String> currentPacks) {
        packRepository.reload();
        Collection<String> selected = Lists.newArrayList(currentPacks);
        Collection<String> disabled = worldData.getDataConfiguration().dataPacks().getDisabled();
 
        for (String pack : packRepository.getAvailableIds()) {
            if (!disabled.contains(pack) && !selected.contains(pack)) {
                selected.add(pack);
            }
        }
 
        return selected;
    }
 
    public static void register(CommandDispatcher<CommandSourceStack> dispatcher) {
        dispatcher.register(Commands.literal("reload").requires(Commands.hasPermission(Commands.LEVEL_GAMEMASTERS)).executes(s -> {
            CommandSourceStack source = s.getSource();
            MinecraftServer server = source.getServer();
            PackRepository packRepository = server.getPackRepository();
            WorldData worldData = server.getWorldData();
            Collection<String> currentPacks = packRepository.getSelectedIds();
            Collection<String> newSelectedPacks = discoverNewPacks(packRepository, worldData, currentPacks);
            source.sendSuccess(() -> Component.translatable("commands.reload.success"), true);
            reloadPacks(newSelectedPacks, source);
            return 0;
        }));
    }
}

引用的其他类