package net.minecraft.server.commands; import com.mojang.brigadier.CommandDispatcher; import java.util.function.Consumer; import net.minecraft.SharedConstants; import net.minecraft.WorldVersion; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; import net.minecraft.server.packs.PackType; public class VersionCommand { private static final Component HEADER = Component.translatable("commands.version.header"); private static final Component STABLE = Component.translatable("commands.version.stable.yes"); private static final Component UNSTABLE = Component.translatable("commands.version.stable.no"); public static void register(CommandDispatcher dispatcher, boolean isDedicatedServer) { dispatcher.register(Commands.literal("version").requires(Commands.hasPermission(isDedicatedServer ? 2 : 0)).executes(commandContext -> { CommandSourceStack commandSourceStack = commandContext.getSource(); commandSourceStack.sendSystemMessage(HEADER); dumpVersion(commandSourceStack::sendSystemMessage); return 1; })); } public static void dumpVersion(Consumer output) { WorldVersion worldVersion = SharedConstants.getCurrentVersion(); output.accept(Component.translatable("commands.version.id", worldVersion.id())); output.accept(Component.translatable("commands.version.name", worldVersion.name())); output.accept(Component.translatable("commands.version.data", worldVersion.dataVersion().version())); output.accept(Component.translatable("commands.version.series", worldVersion.dataVersion().series())); output.accept(Component.translatable("commands.version.protocol", worldVersion.protocolVersion(), "0x" + Integer.toHexString(worldVersion.protocolVersion()))); output.accept(Component.translatable("commands.version.build_time", Component.translationArg(worldVersion.buildTime()))); output.accept(Component.translatable("commands.version.pack.resource", worldVersion.packVersion(PackType.CLIENT_RESOURCES))); output.accept(Component.translatable("commands.version.pack.data", worldVersion.packVersion(PackType.SERVER_DATA))); output.accept(worldVersion.stable() ? STABLE : UNSTABLE); } }