/* * This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion * Copyright (C) 2016-2021 ViaVersion and contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package com.viaversion.viaversion.api.protocol; import it.unimi.dsi.fastutil.ints.IntSortedSet; public interface ServerProtocolVersion { /** * Returns the lowest supported protocol version by this server. * This and {@link #highestSupportedVersion()} should only differ on proxy servers supporting multiple versions. * * @return lowest supported protocol version */ int lowestSupportedVersion(); /** * Returns the lowest supported protocol version by this server. * This and {@link #lowestSupportedVersion()} should only differ on proxy servers supporting multiple versions. * * @return highest supported protocol version */ int highestSupportedVersion(); /** * Returns a sorted set of all supported protocol version by this server. * For non-proxy servers, this should return a singleton set. * * @return sorted set of supported protocol versions */ IntSortedSet supportedVersions(); /** * Returns true if the actual protocol version has not yet been identified. * In that case, all methods above will returns -1. * * @return true if set, false if unknown (yet) */ default boolean isKnown() { return lowestSupportedVersion() != -1 && highestSupportedVersion() != -1; } }