ConfigUpdater { ConfigChange[] configEnhancementPatch() { return new ConfigChange[]{ new ConfigChange.Moved("Plugin.Locale", "Plugin.Logging.Locale"), new ConfigChange.Moved("Plugin.WriteNewLocaleFileOnEnable", "Plugin.Logging.Create_new_locale_file_on_next_enable"), new ConfigChange.Moved("Plugin.Debug", "Plugin.Logging.Debug"), new ConfigChange.Moved("Plugin.Dev", "Plugin.Logging.Dev"), new ConfigChange.Moved("Plugin.KeepLogsForXDays", "Plugin.Logging.Delete_logs_after_days"), new ConfigChange.Moved("Plugin.Check-for-updates", "Plugin.Update_notifications.Check_for_updates"), new ConfigChange.Moved("Plugin.Notify-About-DEV-Releases", "Plugin.Update_notifications.Notify_about_DEV_releases"), new ConfigChange.Removed("Plugin.Allow-Update-Command"), new ConfigChange.Moved("Plugin.Bungee-Override.CopyBungeeConfig", "Plugin.Configuration.Allow_bungeecord_to_manage_settings"), new ConfigChange.Removed("Plugin.Bungee-Override"), new ConfigChange.Moved("Database.MySQL.LaunchOptions", "Database.MySQL.Launch_options"), new ConfigChange.Moved("WebServer.InternalIP", "WebServer.Internal_IP"), new ConfigChange.Moved("WebServer.Security.SSL-Certificate.KeyStorePath", "WebServer.Security.SSL-Certificate.KeyStore_path"), new ConfigChange.Moved("WebServer.Security.SSL-Certificate.KeyPass", "WebServer.Security.SSL-Certificate.Key_pass"), new ConfigChange.Moved("WebServer.Security.SSL-Certificate.StorePass", "WebServer.Security.SSL-Certificate.Store_pass"), new ConfigChange.Moved("WebServer.Security.SSL-Certificate", "WebServer.Security.SSL_certificate"), new ConfigChange.Moved("WebServer.DisableWebServer", "WebServer.Disable_Webserver"), new ConfigChange.Moved("WebServer.ExternalWebServerAddress", "WebServer.External_Webserver_address"), new ConfigChange.Moved("WebServer", "Webserver"), new ConfigChange.Moved("Commands.AlternativeIP.Enabled", "Webserver.Alternative_IP"), new ConfigChange.Moved("Commands.AlternativeIP.Link", "Webserver.Alternative_IP.Address"), new ConfigChange.Moved("Data.Geolocations", "Data_gathering.Geolocations"), new ConfigChange.Moved("Data.Commands.LogUnknownCommands", "Data_gathering.Commands.Log_unknown"), new ConfigChange.Moved("Data.Commands.CombineCommandAliases", "Data_gathering.Commands.Log_aliases_as_main_command"), new ConfigChange.Moved("Customization.UseServerTime", "Time.Use_server_timezone"), new ConfigChange.Moved("Data.Ping.ServerEnableDelaySeconds", "Time.Delays.Ping_server_enable_delay"), new ConfigChange.Moved("Data.Ping.PlayerLoginDelaySeconds", "Time.Delays.Ping_player_join_delay"), new ConfigChange.Moved("Data.AFKThresholdMinutes", "Time.Thresholds.AFK_threshold"), new ConfigChange.Moved("Analysis.Active.LoginThreshold", "Time.Thresholds.Activity_index.Login_threshold"), new ConfigChange.Moved("Analysis.Active.PlaytimeThreshold", "Time.Thresholds.Activity_index.Playtime_threshold"), new ConfigChange.Moved("Data.KeepInactivePlayerDataForDays", "Time.Thresholds.Remove_inactive_player_data_after"), new ConfigChange.Removed("Analysis.LogProgress"), new ConfigChange.Moved("Analysis.AutoRefreshPeriod", "Time.Periodic_tasks.Analysis_refresh_every"), new ConfigChange.Moved("Theme.Base", "Display_options.Theme"), new ConfigChange.Moved("Customization.Display.SessionsAsTable", "Display_options.Sessions.Replace_accordion_with_table"), new ConfigChange.Moved("Customization.Display.LargestWorldPercInSessionTitle", "Display_options.Sessions.Show_most_played_world_in_title"), new ConfigChange.Moved("Customization.Display.MaxSessions", "Display_options.Sessions.Show_on_page"), new ConfigChange.Moved("Customization.Display.OrderWorldPieByPercentage", "Display_options.Sessions.Order_world_pies_by_percentage"), new ConfigChange.Moved("Customization.Display.MaxPlayers", "Display_options.Players_table.Show_on_server_page"), new ConfigChange.Moved("Customization.Display.MaxPlayersPlayersPage", "Display_options.Players_table.Show_on_players_page"), new ConfigChange.Removed("Customization.Display.PlayerTableFooter"), new ConfigChange.Moved("Customization.Display.PlayerIPs", "Display_options.Show_player_IPs"), new ConfigChange.Moved("Customization.Display.GapsInGraphData", "Display_options.Graphs.Show_gaps_in_data"), new ConfigChange.Moved("Theme.Graphs.TPS.High-Threshold", "Display_options.Graphs.TPS.High_threshold"), new ConfigChange.Moved("Theme.Graphs.TPS.Medium-Threshold", "Display_options.Graphs.TPS.Medium_threshold"), new ConfigChange.Moved("Theme.Graphs.Disk.High-Threshold", "Display_options.Graphs.Disk_space.High_threshold"), new ConfigChange.Moved("Theme.Graphs.Disk.Medium-Threshold", "Display_options.Graphs.Disk_space.Medium_threshold"), new ConfigChange.Moved("Commands.Colors", "Display_options.Command_colors"), new ConfigChange.Moved("Customization.Formatting.DecimalPoints", "Customization.Formatting.Decimal_points"), new ConfigChange.Moved("Customization.Formatting.TimeAmount", "Customization.Formatting.Time_amount"), new ConfigChange.Moved("Customization.Formatting.Dates.RecentDays", "Customization.Formatting.Dates.Show_recent_day_names"), new ConfigChange.Moved("Customization.Formatting", "Formatting"), new ConfigChange.Moved("Customization.WorldAliases", "World_aliases"), new ConfigChange.Moved("Analysis.Export.DestinationFolder", "Export.HTML_Export_path"), new ConfigChange.Copied("Analysis.Export.Enabled", "Export.Parts.JavaScript_and_CSS"), new ConfigChange.Copied("Analysis.Export.Enabled", "Export.Parts.Player_pages"), new ConfigChange.Copied("Analysis.Export.Enabled", "Export.Parts.Players_page"), new ConfigChange.Moved("Analysis.Export.Enabled", "Export.Parts.Server_page"), new ConfigChange.Removed("Commands"), new ConfigChange.Removed("Analysis"), new ConfigChange.Removed("Data"), new ConfigChange.Removed("Customization"), new ConfigChange.Removed("Theme"), new ConfigChange.Removed("Display_options.Sessions.Replace_accordion_with_table"), new ConfigChange.Removed("Display_options.Sessions.Show_most_played_world_in_title"), new ConfigChange.Removed("Time.Thresholds.Activity_index.Login_threshold"), new ConfigChange.Removed("Time.Periodic_tasks.Clean_caches_every"), new ConfigChange.Removed("Time.Periodic_tasks.Analysis_refresh_every"), new ConfigChange.Removed("Display_options.Show_player_IPs"), new ConfigChange.Removed("Export.Parts.JavaScript_and_CSS"), new ConfigChange.Moved("Plugins.LiteBans", "Plugins.Litebans"), new ConfigChange.Moved("Plugins.BuyCraft", "Plugins.Buycraft"), new ConfigChange.Moved("Plugin.Configuration.Allow_bungeecord_to_manage_settings", "Plugin.Configuration.Allow_proxy_to_manage_settings"), new ConfigChange.RemovedComment("Webserver.Disable_Webserver"), new ConfigChange.BooleanToString("Time.Use_server_timezone", FormatSettings.TIMEZONE.getPath(), "server", "UTC"), }; } @Inject  ConfigUpdater(
            PluginLogger logger,
            ErrorLogger errorLogger
    ); void applyConfigUpdate(Config config);  }
@Test void serverMoveChangesDoNotLeaveNewEmptyValues() throws IOException { Path config = tempDir.resolve("oldconfig.yml"); Files.copy(oldConfig.toPath(), config, StandardCopyOption.REPLACE_EXISTING); PlanConfig planConfig = new PlanConfig(config.toFile(), null, null, new TestPluginLogger()); ConfigChange[] changes = UNDER_TEST.configEnhancementPatch(); assertMoveChangesAreAppliedProperly(planConfig, changes); }
@Test void proxyMoveChangesDoNotLeaveNewEmptyValues() throws IOException { Path config = tempDir.resolve("oldconfig.yml"); Files.copy(oldBungeeConfig.toPath(), config, StandardCopyOption.REPLACE_EXISTING); PlanConfig planConfig = new PlanConfig(config.toFile(), null, null, new TestPluginLogger()); ConfigChange[] changes = UNDER_TEST.configEnhancementPatch(); assertMoveChangesAreAppliedProperly(planConfig, changes); }