2016-07-18 21:02:46 +02:00
/ *
2021-03-23 11:11:01 +01:00
* This file is part of ViaBackwards - https : //github.com/ViaVersion/ViaBackwards
2022-01-09 22:40:10 +01:00
* Copyright ( C ) 2016 - 2022 ViaVersion and contributors
2016-07-18 21:02:46 +02:00
*
2021-03-20 23:12:25 +01:00
* 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 .
2016-07-18 21:02:46 +02:00
*
2021-03-20 23:12:25 +01:00
* 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 .
2016-07-18 21:02:46 +02:00
*
2021-03-20 23:12:25 +01:00
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
2016-07-18 21:02:46 +02:00
* /
2021-04-26 23:31:29 +02:00
package com.viaversion.viabackwards.api ;
2016-07-18 21:02:46 +02:00
2021-04-26 23:31:29 +02:00
import com.viaversion.viabackwards.ViaBackwards ;
import com.viaversion.viabackwards.ViaBackwardsConfig ;
import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter ;
import com.viaversion.viabackwards.protocol.protocol1_10to1_11.Protocol1_10To1_11 ;
import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12 ;
import com.viaversion.viabackwards.protocol.protocol1_11to1_11_1.Protocol1_11To1_11_1 ;
import com.viaversion.viabackwards.protocol.protocol1_12_1to1_12_2.Protocol1_12_1To1_12_2 ;
import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13 ;
import com.viaversion.viabackwards.protocol.protocol1_12to1_12_1.Protocol1_12To1_12_1 ;
import com.viaversion.viabackwards.protocol.protocol1_13_1to1_13_2.Protocol1_13_1To1_13_2 ;
import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14 ;
import com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1 ;
import com.viaversion.viabackwards.protocol.protocol1_14_1to1_14_2.Protocol1_14_1To1_14_2 ;
import com.viaversion.viabackwards.protocol.protocol1_14_2to1_14_3.Protocol1_14_2To1_14_3 ;
import com.viaversion.viabackwards.protocol.protocol1_14_3to1_14_4.Protocol1_14_3To1_14_4 ;
import com.viaversion.viabackwards.protocol.protocol1_14_4to1_15.Protocol1_14_4To1_15 ;
import com.viaversion.viabackwards.protocol.protocol1_14to1_14_1.Protocol1_14To1_14_1 ;
import com.viaversion.viabackwards.protocol.protocol1_15_1to1_15_2.Protocol1_15_1To1_15_2 ;
import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.Protocol1_15_2To1_16 ;
import com.viaversion.viabackwards.protocol.protocol1_15to1_15_1.Protocol1_15To1_15_1 ;
import com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.Protocol1_16_1To1_16_2 ;
import com.viaversion.viabackwards.protocol.protocol1_16_2to1_16_3.Protocol1_16_2To1_16_3 ;
import com.viaversion.viabackwards.protocol.protocol1_16_3to1_16_4.Protocol1_16_3To1_16_4 ;
import com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.Protocol1_16_4To1_17 ;
import com.viaversion.viabackwards.protocol.protocol1_16to1_16_1.Protocol1_16To1_16_1 ;
2021-09-14 18:16:12 +02:00
import com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.Protocol1_17_1To1_18 ;
2021-06-10 18:51:12 +02:00
import com.viaversion.viabackwards.protocol.protocol1_17to1_17_1.Protocol1_17To1_17_1 ;
2022-07-01 12:14:10 +02:00
import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19_1.Protocol1_18_2To1_19_1 ;
2022-01-19 18:13:33 +01:00
import com.viaversion.viabackwards.protocol.protocol1_18to1_18_2.Protocol1_18To1_18_2 ;
2021-04-26 23:31:29 +02:00
import com.viaversion.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10 ;
2021-04-26 23:24:49 +02:00
import com.viaversion.viaversion.api.Via ;
import com.viaversion.viaversion.api.protocol.ProtocolManager ;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion ;
import com.viaversion.viaversion.update.Version ;
2016-07-18 21:02:46 +02:00
2019-09-09 15:23:09 +02:00
import java.io.File ;
2016-10-03 15:20:38 +02:00
import java.util.logging.Logger ;
2016-07-18 21:02:46 +02:00
2016-10-03 15:20:38 +02:00
public interface ViaBackwardsPlatform {
2019-09-09 15:23:09 +02:00
2022-07-28 11:47:25 +02:00
String MINIMUM_VV_VERSION = " 4.4.1 " ;
2021-02-18 14:34:33 +01:00
String IMPL_VERSION = " $IMPL_VERSION " ;
2019-12-11 12:35:55 +01:00
2016-10-03 15:20:38 +02:00
/ * *
2019-12-07 17:14:17 +01:00
* Initialize ViaBackwards .
2016-10-03 15:20:38 +02:00
* /
2019-09-09 15:23:09 +02:00
default void init ( File dataFolder ) {
ViaBackwardsConfig config = new ViaBackwardsConfig ( new File ( dataFolder , " config.yml " ) ) ;
config . reloadConfig ( ) ;
ViaBackwards . init ( this , config ) ;
2022-07-20 18:45:09 +02:00
if ( isOutdated ( ) ) {
disable ( ) ;
return ;
}
2017-05-31 00:03:42 +02:00
2021-02-18 14:34:33 +01:00
Via . getManager ( ) . getSubPlatforms ( ) . add ( IMPL_VERSION ) ;
2020-04-17 21:11:36 +02:00
2020-02-12 13:53:24 +01:00
getLogger ( ) . info ( " Loading translations... " ) ;
2020-01-16 23:23:29 +01:00
TranslatableRewriter . loadTranslatables ( ) ;
2022-07-28 11:47:25 +02:00
final ProtocolManager protocolManager = Via . getManager ( ) . getProtocolManager ( ) ;
protocolManager . setMaxPathDeltaIncrease ( 1 ) ; // Since we skip 1.19
2021-03-24 16:54:07 +01:00
protocolManager . registerProtocol ( new Protocol1_9_4To1_10 ( ) , ProtocolVersion . v1_9_3 , ProtocolVersion . v1_10 ) ;
2020-05-29 15:20:39 +02:00
2021-03-24 16:54:07 +01:00
protocolManager . registerProtocol ( new Protocol1_10To1_11 ( ) , ProtocolVersion . v1_10 , ProtocolVersion . v1_11 ) ;
protocolManager . registerProtocol ( new Protocol1_11To1_11_1 ( ) , ProtocolVersion . v1_11 , ProtocolVersion . v1_11_1 ) ;
2020-05-29 15:20:39 +02:00
2021-03-24 16:54:07 +01:00
protocolManager . registerProtocol ( new Protocol1_11_1To1_12 ( ) , ProtocolVersion . v1_11_1 , ProtocolVersion . v1_12 ) ;
protocolManager . registerProtocol ( new Protocol1_12To1_12_1 ( ) , ProtocolVersion . v1_12 , ProtocolVersion . v1_12_1 ) ;
protocolManager . registerProtocol ( new Protocol1_12_1To1_12_2 ( ) , ProtocolVersion . v1_12_1 , ProtocolVersion . v1_12_2 ) ;
2020-05-29 15:20:39 +02:00
2021-03-24 16:54:07 +01:00
protocolManager . registerProtocol ( new Protocol1_12_2To1_13 ( ) , ProtocolVersion . v1_12_2 , ProtocolVersion . v1_13 ) ;
protocolManager . registerProtocol ( new Protocol1_13To1_13_1 ( ) , ProtocolVersion . v1_13 , ProtocolVersion . v1_13_1 ) ;
protocolManager . registerProtocol ( new Protocol1_13_1To1_13_2 ( ) , ProtocolVersion . v1_13_1 , ProtocolVersion . v1_13_2 ) ;
2020-05-29 15:20:39 +02:00
2021-03-24 16:54:07 +01:00
protocolManager . registerProtocol ( new Protocol1_13_2To1_14 ( ) , ProtocolVersion . v1_13_2 , ProtocolVersion . v1_14 ) ;
protocolManager . registerProtocol ( new Protocol1_14To1_14_1 ( ) , ProtocolVersion . v1_14 , ProtocolVersion . v1_14_1 ) ;
protocolManager . registerProtocol ( new Protocol1_14_1To1_14_2 ( ) , ProtocolVersion . v1_14_1 , ProtocolVersion . v1_14_2 ) ;
protocolManager . registerProtocol ( new Protocol1_14_2To1_14_3 ( ) , ProtocolVersion . v1_14_2 , ProtocolVersion . v1_14_3 ) ;
protocolManager . registerProtocol ( new Protocol1_14_3To1_14_4 ( ) , ProtocolVersion . v1_14_3 , ProtocolVersion . v1_14_4 ) ;
2020-05-29 15:20:39 +02:00
2021-03-24 16:54:07 +01:00
protocolManager . registerProtocol ( new Protocol1_14_4To1_15 ( ) , ProtocolVersion . v1_14_4 , ProtocolVersion . v1_15 ) ;
protocolManager . registerProtocol ( new Protocol1_15To1_15_1 ( ) , ProtocolVersion . v1_15 , ProtocolVersion . v1_15_1 ) ;
protocolManager . registerProtocol ( new Protocol1_15_1To1_15_2 ( ) , ProtocolVersion . v1_15_1 , ProtocolVersion . v1_15_2 ) ;
2020-05-29 15:20:39 +02:00
2021-03-24 16:54:07 +01:00
protocolManager . registerProtocol ( new Protocol1_15_2To1_16 ( ) , ProtocolVersion . v1_15_2 , ProtocolVersion . v1_16 ) ;
protocolManager . registerProtocol ( new Protocol1_16To1_16_1 ( ) , ProtocolVersion . v1_16 , ProtocolVersion . v1_16_1 ) ;
protocolManager . registerProtocol ( new Protocol1_16_1To1_16_2 ( ) , ProtocolVersion . v1_16_1 , ProtocolVersion . v1_16_2 ) ;
protocolManager . registerProtocol ( new Protocol1_16_2To1_16_3 ( ) , ProtocolVersion . v1_16_2 , ProtocolVersion . v1_16_3 ) ;
protocolManager . registerProtocol ( new Protocol1_16_3To1_16_4 ( ) , ProtocolVersion . v1_16_3 , ProtocolVersion . v1_16_4 ) ;
2020-11-06 11:37:58 +01:00
2021-03-24 16:54:07 +01:00
protocolManager . registerProtocol ( new Protocol1_16_4To1_17 ( ) , ProtocolVersion . v1_16_4 , ProtocolVersion . v1_17 ) ;
2021-06-10 18:51:12 +02:00
protocolManager . registerProtocol ( new Protocol1_17To1_17_1 ( ) , ProtocolVersion . v1_17 , ProtocolVersion . v1_17_1 ) ;
2022-01-19 18:13:33 +01:00
2021-09-14 18:16:12 +02:00
protocolManager . registerProtocol ( new Protocol1_17_1To1_18 ( ) , ProtocolVersion . v1_17_1 , ProtocolVersion . v1_18 ) ;
2022-03-16 22:16:22 +01:00
protocolManager . registerProtocol ( new Protocol1_18To1_18_2 ( ) , ProtocolVersion . v1_18 , ProtocolVersion . v1_18_2 ) ;
2022-02-18 11:49:15 +01:00
2022-07-06 17:55:39 +02:00
// 1.19.0 clients cannot join 1.19.1+ servers due to changes in the public profile key. 1.19.0 servers can use ViaBackwards 4.3.1
2022-07-01 12:14:10 +02:00
protocolManager . registerProtocol ( new Protocol1_18_2To1_19_1 ( ) , ProtocolVersion . v1_18_2 , ProtocolVersion . v1_19_1 ) ;
2016-07-18 21:02:46 +02:00
}
2016-10-03 15:20:38 +02:00
/ * *
2020-01-06 16:34:39 +01:00
* Logger provided by the platform .
2016-10-03 15:20:38 +02:00
*
* @return logger instance
* /
Logger getLogger ( ) ;
2017-05-31 00:03:42 +02:00
default boolean isOutdated ( ) {
2019-12-11 12:35:55 +01:00
String vvVersion = Via . getPlatform ( ) . getPluginVersion ( ) ;
if ( vvVersion ! = null & & new Version ( vvVersion ) . compareTo ( new Version ( MINIMUM_VV_VERSION + " -- " ) ) < 0 ) {
2017-05-31 00:03:42 +02:00
getLogger ( ) . severe ( " ================================ " ) ;
getLogger ( ) . severe ( " YOUR VIAVERSION IS OUTDATED " ) ;
2019-12-11 12:35:55 +01:00
getLogger ( ) . severe ( " PLEASE USE VIAVERSION " + MINIMUM_VV_VERSION + " OR NEWER " ) ;
2020-08-11 08:50:33 +02:00
getLogger ( ) . severe ( " LINK: https://ci.viaversion.com/ " ) ;
2017-05-31 00:03:42 +02:00
getLogger ( ) . severe ( " VIABACKWARDS WILL NOW DISABLE " ) ;
getLogger ( ) . severe ( " ================================ " ) ;
return true ;
}
2022-07-20 18:45:09 +02:00
return false ;
}
2017-05-31 00:03:42 +02:00
2022-07-20 18:45:09 +02:00
default boolean isOutdatedPostLoad ( ) {
if ( ! Via . getPlatform ( ) . isProxy ( ) & & Via . getAPI ( ) . getServerVersion ( ) . highestSupportedVersion ( ) = = ProtocolVersion . v1_19 . getVersion ( ) ) {
// Print a warning but still allow it
getLogger ( ) . warning ( " This version of ViaBackwards does not fully support 1.19 servers. Please downgrade to ViaBackwards 4.3.1 for better support of that version. " ) ;
}
2017-05-31 00:03:42 +02:00
return false ;
}
/ * *
2019-12-07 17:14:17 +01:00
* Disable the plugin .
2017-05-31 00:03:42 +02:00
* /
void disable ( ) ;
2020-01-06 16:34:39 +01:00
/ * *
* Returns ViaBackwards ' s data folder .
*
* @return data folder
* /
File getDataFolder ( ) ;
2016-07-18 21:02:46 +02:00
}