/* * This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion * Copyright (C) 2016-2021 ViaVersion and contributors * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ package us.myles.ViaVersion.api; import it.unimi.dsi.fastutil.ints.IntSet; public interface ViaVersionConfig { /** * Get if the plugin should check for updates * * @return true if update checking is enabled */ boolean isCheckForUpdates(); /** * Sets whether to check for updates. This updates the internally cached value * as well as the config, but does not save the config to disk. * * @param checkForUpdates true to check for updates on server start and joins */ void setCheckForUpdates(boolean checkForUpdates); /** * Get if collision preventing for players is enabled * * @return true if collision preventing is enabled */ boolean isPreventCollision(); /** * Get if 1.9 & 1.10 clients are shown the new effect indicator in the top-right corner * * @return true if the using of the new effect indicator is enabled */ boolean isNewEffectIndicator(); /** * Get if 1.9 & 1.10 clients are shown the new death message on the death screen * * @return true if enabled */ boolean isShowNewDeathMessages(); /** * Get if metadata errors will be suppressed * * @return true if metadata errors suppression is enabled */ boolean isSuppressMetadataErrors(); /** * Get if blocking in 1.9 & 1.10 appears as a player holding a shield * * @return true if shield blocking is enabled */ boolean isShieldBlocking(); /** * Whether the player can block with the shield without a delay. * * This option requires {@link #isShowShieldWhenSwordInHand()} to be disabled * * @return {@code true} if non delayed shield blocking is enabled. */ boolean isNoDelayShieldBlocking(); /** * Puts the shield into the second hand when holding a sword. * The shield will disappear when switching to another item. * * This option requires {@link #isShieldBlocking()} to be enabled * * @return {@code true} if the shield should appear when holding a sword */ boolean isShowShieldWhenSwordInHand(); /** * Get if armor stand positions are fixed so holograms show up at the correct height in 1.9 & 1.10 * * @return true if hologram patching is enabled */ boolean isHologramPatch(); /** * Get if the 1.11 piston animation patch is enabled * * @return true if the piston patch is enabled. */ boolean isPistonAnimationPatch(); /** * Get if boss bars are fixed for 1.9 & 1.10 clients * * @return true if boss bar patching is enabled */ boolean isBossbarPatch(); /** * Get if the boss bars for 1.9 & 1.10 clients are being stopped from flickering * This will keep all boss bars on 100% (not recommended) * * @return true if boss bar anti flickering is enabled */ boolean isBossbarAntiflicker(); /** * Get the vertical offset armor stands are being moved with when the hologram patch is enabled * * @return the vertical offset holograms will be moved with */ double getHologramYOffset(); /** * Get if players will be automatically put in the same team when collision preventing is enabled * * @return true if automatic teaming is enabled */ boolean isAutoTeam(); /** * Get the maximum number of packets a client can send per second. * * @return The number of packets a client can send per second. */ int getMaxPPS(); /** * Get the kick message sent if the user hits the max packets per second. * * @return Kick message, with colour codes using '&' */ String getMaxPPSKickMessage(); /** * The time in seconds that should be tracked for warnings * * @return Time in seconds that should be tracked for warnings */ int getTrackingPeriod(); /** * The number of packets per second to count as a warning * * @return The number of packets per second to count as a warning. */ int getWarningPPS(); /** * Get the maximum number of warnings the client can have in the interval * * @return The number of packets a client can send per second. */ int getMaxWarnings(); /** * Get the kick message sent if the user goes over the warnings in the interval * * @return Kick message, with colour codes using '&' */ String getMaxWarningsKickMessage(); /** * Is anti-xray enabled? * * @return A boolean */ boolean isAntiXRay(); /** * Send supported versions in the status response packet * * @return If true, enabled */ boolean isSendSupportedVersions(); /** * Stimulate the player tick * * @return if true, enabled */ boolean isSimulatePlayerTick(); /** * Use the item cache to prevent high resource usage * * @return if true, enabled */ boolean isItemCache(); /** * Use the NMS player ticking * * @return if true, enabled */ boolean isNMSPlayerTicking(); /** * Replace extended pistons on 1.10 chunk loading. * * @return true if to replace them */ boolean isReplacePistons(); /** * Get the id for replacing extended pistons. * * @return The integer id */ int getPistonReplacementId(); /** * Force json transform * * @return true if enabled */ boolean isForceJsonTransform(); /** * Should we fix nbt array's in json chat messages for 1.12 clients * * @return true if enabled */ boolean is1_12NBTArrayFix(); /** * Should we make team colours based on the last colour in team prefix * * @return true if enabled */ boolean is1_13TeamColourFix(); /** * Should we fix shift quick move action for 1.12 clients * * @return true if enabled */ boolean is1_12QuickMoveActionFix(); /** * Get the blocked protocols * * @return An Integer list */ IntSet getBlockedProtocols(); /** * Get the custom disconnect message * * @return Disconnect message */ String getBlockedDisconnectMsg(); /** * Get the message sent to players being kicked on reload. * Players are kicked to stop the server crashing * * @return Disconnect message */ String getReloadDisconnectMsg(); /** * Should we hide errors that occur when trying to convert block and item data over versions? * * @return true if enabled */ boolean isSuppressConversionWarnings(); /** * Should we disable the 1.13 auto-complete feature to stop spam kicks? (for any server lower than 1.13) * * @return true if enabled */ boolean isDisable1_13AutoComplete(); /** * Tries to minimize cooldown animation. * * @return true if enabled */ boolean isMinimizeCooldown(); /** * Enable the serverside blockconnections for 1.13+ clients * * @return true if enabled */ boolean isServersideBlockConnections(); /** * Get the type of block-connection provider which should be used * * @return String world for world-level or packet for packet-level */ String getBlockConnectionMethod(); /** * When activated, only the most important blocks are saved in the BlockStorage. * * @return true if enabled */ boolean isReduceBlockStorageMemory(); /** * When activated with serverside-blockconnections, flower parts with blocks above will be sent as stems. * Useful for lobbyservers where users can't build and those stems are used decoratively. * * @return true if enabled */ boolean isStemWhenBlockAbove(); /** * Vines not connected to any blocks will be mapped to air for 1.13+ clients to prevent them from climbing up. * * @return true if enabled */ boolean isVineClimbFix(); /** * When activated, the 1-layer snow will be sent as 2-layer snow to 1.13+ clients to have collision. * * @return true if enabled */ boolean isSnowCollisionFix(); /** * When activated, infested blocks will be mapped to their normal stone variants for 1.13+ clients. * * @return true if enabled */ boolean isInfestedBlocksFix(); /** * When greater than 0, enables tab complete request delaying by x ticks * * @return the delay in ticks */ int get1_13TabCompleteDelay(); /** * When activated, edited books with more than 50 pages will be shortened to 50. * * @return true if enabled */ boolean isTruncate1_14Books(); /** * Handles left handed info by using unused bit 7 on Client Settings packet * * @return true if enabled */ boolean isLeftHandedHandling(); /** * Fixes velocity bugs due to different hitbox for 1.9-1.13 clients on 1.8 servers. * * @return true if enabled */ boolean is1_9HitboxFix(); /** * Fixes velocity bugs due to different hitbox for 1.14+ clients on sub 1.14 servers. * * @return true if enabled */ boolean is1_14HitboxFix(); /** * Fixes non full blocks having 0 light for 1.14+ clients on sub 1.14 servers. * * @return true if enabled */ boolean isNonFullBlockLightFix(); boolean is1_14HealthNaNFix(); /** * Should 1.15 clients respawn instantly / without showing the death screen. * * @return true if enabled */ boolean is1_15InstantRespawn(); /** * Ignores incoming plugin channel messages of 1.16+ clients with channel names longer than 32 charatcers. * * @return true if enabled */ boolean isIgnoreLong1_16ChannelNames(); /** * Force 1.17+ client to accept the server resource pack. * * @return true if enabled */ boolean isForcedUse1_17ResourcePack(); }