Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-11-19 14:30:16 +01:00
Refactor ConfigurationProvider
Dieser Commit ist enthalten in:
Ursprung
0c3d709456
Commit
d8f98945e2
@ -63,7 +63,7 @@ public interface ViaAPI<T> {
|
|||||||
* @return API version incremented with meaningful API changes
|
* @return API version incremented with meaningful API changes
|
||||||
*/
|
*/
|
||||||
default int apiVersion() {
|
default int apiVersion() {
|
||||||
return 20;
|
return 21;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
package com.viaversion.viaversion.api;
|
package com.viaversion.viaversion.api;
|
||||||
|
|
||||||
import com.viaversion.viaversion.api.command.ViaVersionCommand;
|
import com.viaversion.viaversion.api.command.ViaVersionCommand;
|
||||||
|
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
||||||
import com.viaversion.viaversion.api.connection.ConnectionManager;
|
import com.viaversion.viaversion.api.connection.ConnectionManager;
|
||||||
import com.viaversion.viaversion.api.debug.DebugHandler;
|
import com.viaversion.viaversion.api.debug.DebugHandler;
|
||||||
import com.viaversion.viaversion.api.platform.ViaInjector;
|
import com.viaversion.viaversion.api.platform.ViaInjector;
|
||||||
@ -91,6 +92,13 @@ public interface ViaManager {
|
|||||||
*/
|
*/
|
||||||
Scheduler getScheduler();
|
Scheduler getScheduler();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the configuration provider.
|
||||||
|
*
|
||||||
|
* @return the configuration provider
|
||||||
|
*/
|
||||||
|
ConfigurationProvider getConfigurationProvider();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If debug is enabled, packets and other otherwise suppressed warnings will be logged.
|
* If debug is enabled, packets and other otherwise suppressed warnings will be logged.
|
||||||
*
|
*
|
||||||
@ -138,4 +146,5 @@ public interface ViaManager {
|
|||||||
* @return whether the manager has been initialized
|
* @return whether the manager has been initialized
|
||||||
*/
|
*/
|
||||||
boolean isInitialized();
|
boolean isInitialized();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||||
|
* Copyright (C) 2016-2023 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 com.viaversion.viaversion.api.configuration;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public interface Config {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reloads the config
|
||||||
|
*/
|
||||||
|
void reload();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Saves the config
|
||||||
|
*/
|
||||||
|
void save();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the specified path to the given value.
|
||||||
|
*
|
||||||
|
* @param path Path of the object to set.
|
||||||
|
* @param value New value to set the path to
|
||||||
|
*/
|
||||||
|
void set(String path, Object value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the configuration values
|
||||||
|
*
|
||||||
|
* @return Map with key-values
|
||||||
|
*/
|
||||||
|
Map<String, Object> getValues();
|
||||||
|
}
|
@ -22,32 +22,26 @@
|
|||||||
*/
|
*/
|
||||||
package com.viaversion.viaversion.api.configuration;
|
package com.viaversion.viaversion.api.configuration;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Collection;
|
||||||
|
|
||||||
public interface ConfigurationProvider {
|
public interface ConfigurationProvider {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the specified path to the given value.
|
* Registers a config to be saved or reloaded when {@link #reloadConfigs()} is called.
|
||||||
*
|
*
|
||||||
* @param path Path of the object to set.
|
* @param config the config to register
|
||||||
* @param value New value to set the path to
|
|
||||||
*/
|
*/
|
||||||
void set(String path, Object value);
|
void register(Config config);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Saves the config
|
* Returns all registered configs.
|
||||||
*/
|
|
||||||
void saveConfig();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reloads the config
|
|
||||||
*/
|
|
||||||
void reloadConfig();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all the configuration values
|
|
||||||
*
|
*
|
||||||
* @return Map with key-values
|
* @return unmodifiable collection of all registered configs
|
||||||
*/
|
*/
|
||||||
Map<String, Object> getValues();
|
Collection<Config> configs();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reloads the configuration files.
|
||||||
|
*/
|
||||||
|
void reloadConfigs();
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,7 @@ import com.viaversion.viaversion.api.protocol.version.BlockedProtocolVersions;
|
|||||||
import it.unimi.dsi.fastutil.ints.IntSet;
|
import it.unimi.dsi.fastutil.ints.IntSet;
|
||||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
|
|
||||||
public interface ViaVersionConfig {
|
public interface ViaVersionConfig extends Config {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get if the plugin should check for updates
|
* Get if the plugin should check for updates
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
package com.viaversion.viaversion.api.platform;
|
package com.viaversion.viaversion.api.platform;
|
||||||
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
import com.viaversion.viaversion.api.Via;
|
||||||
import com.viaversion.viaversion.api.ViaAPI;
|
import com.viaversion.viaversion.api.ViaAPI;
|
||||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||||
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
||||||
@ -180,13 +181,10 @@ public interface ViaPlatform<T> {
|
|||||||
*/
|
*/
|
||||||
ViaVersionConfig getConf();
|
ViaVersionConfig getConf();
|
||||||
|
|
||||||
/**
|
@Deprecated/*(forRemoval = true)*/
|
||||||
* Get the backend configuration provider for this platform.
|
default ConfigurationProvider getConfigurationProvider() {
|
||||||
* (On some platforms this returns the same as getConf())
|
return Via.getManager().getConfigurationProvider();
|
||||||
*
|
}
|
||||||
* @return The configuration provider
|
|
||||||
*/
|
|
||||||
ConfigurationProvider getConfigurationProvider();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get ViaVersions's data folder.
|
* Get ViaVersions's data folder.
|
||||||
|
@ -221,11 +221,6 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform<Player>
|
|||||||
return Bukkit.getPluginManager().getPlugin("ViaVersion").isEnabled();
|
return Bukkit.getPluginManager().getPlugin("ViaVersion").isEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ConfigurationProvider getConfigurationProvider() {
|
|
||||||
return conf;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReload() {
|
public void onReload() {
|
||||||
if (Bukkit.getPluginManager().getPlugin("ProtocolLib") != null) {
|
if (Bukkit.getPluginManager().getPlugin("ProtocolLib") != null) {
|
||||||
|
@ -36,7 +36,7 @@ public class BukkitViaConfig extends AbstractViaConfig {
|
|||||||
|
|
||||||
public BukkitViaConfig() {
|
public BukkitViaConfig() {
|
||||||
super(new File(((Plugin) Via.getPlatform()).getDataFolder(), "config.yml"));
|
super(new File(((Plugin) Via.getPlatform()).getDataFolder(), "config.yml"));
|
||||||
reloadConfig();
|
reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -22,7 +22,6 @@ import com.google.gson.JsonObject;
|
|||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
import com.viaversion.viaversion.api.ViaAPI;
|
import com.viaversion.viaversion.api.ViaAPI;
|
||||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||||
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
|
||||||
import com.viaversion.viaversion.api.platform.PlatformTask;
|
import com.viaversion.viaversion.api.platform.PlatformTask;
|
||||||
import com.viaversion.viaversion.api.platform.UnsupportedSoftware;
|
import com.viaversion.viaversion.api.platform.UnsupportedSoftware;
|
||||||
import com.viaversion.viaversion.api.platform.ViaServerProxyPlatform;
|
import com.viaversion.viaversion.api.platform.ViaServerProxyPlatform;
|
||||||
@ -176,11 +175,6 @@ public class BungeePlugin extends Plugin implements ViaServerProxyPlatform<Proxi
|
|||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ConfigurationProvider getConfigurationProvider() {
|
|
||||||
return config;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReload() {
|
public void onReload() {
|
||||||
// Injector prints a message <3
|
// Injector prints a message <3
|
||||||
|
@ -35,7 +35,7 @@ public class BungeeViaConfig extends AbstractViaConfig {
|
|||||||
|
|
||||||
public BungeeViaConfig(File configFile) {
|
public BungeeViaConfig(File configFile) {
|
||||||
super(new File(configFile, "config.yml"));
|
super(new File(configFile, "config.yml"));
|
||||||
reloadConfig();
|
reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -46,8 +46,9 @@ public final class ProtocolDetectorService extends AbstractProtocolDetectorServi
|
|||||||
|
|
||||||
setProtocolVersion(serverName, serverPing.getVersion().getProtocol());
|
setProtocolVersion(serverName, serverPing.getVersion().getProtocol());
|
||||||
|
|
||||||
if (((BungeeViaConfig) Via.getConfig()).isBungeePingSave()) {
|
final BungeeViaConfig config = (BungeeViaConfig) Via.getConfig();
|
||||||
final Map<String, Integer> servers = ((BungeeViaConfig) Via.getConfig()).getBungeeServerProtocols();
|
if (config.isBungeePingSave()) {
|
||||||
|
final Map<String, Integer> servers = config.getBungeeServerProtocols();
|
||||||
final Integer protocol = servers.get(serverName);
|
final Integer protocol = servers.get(serverName);
|
||||||
if (protocol != null && protocol == serverPing.getVersion().getProtocol()) {
|
if (protocol != null && protocol == serverPing.getVersion().getProtocol()) {
|
||||||
return;
|
return;
|
||||||
@ -57,7 +58,7 @@ public final class ProtocolDetectorService extends AbstractProtocolDetectorServi
|
|||||||
synchronized (Via.getPlatform().getConfigurationProvider()) {
|
synchronized (Via.getPlatform().getConfigurationProvider()) {
|
||||||
servers.put(serverName, serverPing.getVersion().getProtocol());
|
servers.put(serverName, serverPing.getVersion().getProtocol());
|
||||||
}
|
}
|
||||||
Via.getPlatform().getConfigurationProvider().saveConfig();
|
config.save();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ package com.viaversion.viaversion;
|
|||||||
|
|
||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
import com.viaversion.viaversion.api.ViaManager;
|
import com.viaversion.viaversion.api.ViaManager;
|
||||||
|
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
||||||
import com.viaversion.viaversion.api.connection.ConnectionManager;
|
import com.viaversion.viaversion.api.connection.ConnectionManager;
|
||||||
import com.viaversion.viaversion.api.debug.DebugHandler;
|
import com.viaversion.viaversion.api.debug.DebugHandler;
|
||||||
import com.viaversion.viaversion.api.platform.PlatformTask;
|
import com.viaversion.viaversion.api.platform.PlatformTask;
|
||||||
@ -32,6 +33,7 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
|||||||
import com.viaversion.viaversion.api.protocol.version.ServerProtocolVersion;
|
import com.viaversion.viaversion.api.protocol.version.ServerProtocolVersion;
|
||||||
import com.viaversion.viaversion.api.scheduler.Scheduler;
|
import com.viaversion.viaversion.api.scheduler.Scheduler;
|
||||||
import com.viaversion.viaversion.commands.ViaCommandHandler;
|
import com.viaversion.viaversion.commands.ViaCommandHandler;
|
||||||
|
import com.viaversion.viaversion.configuration.ConfigurationProviderImpl;
|
||||||
import com.viaversion.viaversion.connection.ConnectionManagerImpl;
|
import com.viaversion.viaversion.connection.ConnectionManagerImpl;
|
||||||
import com.viaversion.viaversion.debug.DebugHandlerImpl;
|
import com.viaversion.viaversion.debug.DebugHandlerImpl;
|
||||||
import com.viaversion.viaversion.protocol.ProtocolManagerImpl;
|
import com.viaversion.viaversion.protocol.ProtocolManagerImpl;
|
||||||
@ -53,6 +55,7 @@ import java.util.regex.Pattern;
|
|||||||
public class ViaManagerImpl implements ViaManager {
|
public class ViaManagerImpl implements ViaManager {
|
||||||
private final ProtocolManagerImpl protocolManager = new ProtocolManagerImpl();
|
private final ProtocolManagerImpl protocolManager = new ProtocolManagerImpl();
|
||||||
private final ConnectionManager connectionManager = new ConnectionManagerImpl();
|
private final ConnectionManager connectionManager = new ConnectionManagerImpl();
|
||||||
|
private final ConfigurationProvider configurationProvider = new ConfigurationProviderImpl();
|
||||||
private final DebugHandler debugHandler = new DebugHandlerImpl();
|
private final DebugHandler debugHandler = new DebugHandlerImpl();
|
||||||
private final ViaProviders providers = new ViaProviders();
|
private final ViaProviders providers = new ViaProviders();
|
||||||
private final Scheduler scheduler = new TaskScheduler();
|
private final Scheduler scheduler = new TaskScheduler();
|
||||||
@ -306,6 +309,11 @@ public class ViaManagerImpl implements ViaManager {
|
|||||||
return scheduler;
|
return scheduler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ConfigurationProvider getConfigurationProvider() {
|
||||||
|
return configurationProvider;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a mutable set of self-added subplatform version strings.
|
* Returns a mutable set of self-added subplatform version strings.
|
||||||
* This set is expanded by the subplatform itself (e.g. ViaBackwards), and may not contain all running ones.
|
* This set is expanded by the subplatform itself (e.g. ViaBackwards), and may not contain all running ones.
|
||||||
|
@ -20,7 +20,7 @@ package com.viaversion.viaversion.commands.defaultsubs;
|
|||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||||
import com.viaversion.viaversion.api.command.ViaSubCommand;
|
import com.viaversion.viaversion.api.command.ViaSubCommand;
|
||||||
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
import com.viaversion.viaversion.util.Config;
|
||||||
|
|
||||||
public class AutoTeamSubCmd extends ViaSubCommand {
|
public class AutoTeamSubCmd extends ViaSubCommand {
|
||||||
@Override
|
@Override
|
||||||
@ -35,11 +35,11 @@ public class AutoTeamSubCmd extends ViaSubCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(ViaCommandSender sender, String[] args) {
|
public boolean execute(ViaCommandSender sender, String[] args) {
|
||||||
ConfigurationProvider provider = Via.getPlatform().getConfigurationProvider();
|
|
||||||
boolean newValue = !Via.getConfig().isAutoTeam();
|
boolean newValue = !Via.getConfig().isAutoTeam();
|
||||||
|
|
||||||
provider.set("auto-team", newValue);
|
final Config config = (Config) Via.getConfig();
|
||||||
provider.saveConfig();
|
config.set("auto-team", newValue);
|
||||||
|
config.save();
|
||||||
sendMessage(sender, "&6We will %s", (newValue ? "&aautomatically team players" : "&cno longer auto team players"));
|
sendMessage(sender, "&6We will %s", (newValue ? "&aautomatically team players" : "&cno longer auto team players"));
|
||||||
sendMessage(sender, "&6All players will need to re-login for the change to take place.");
|
sendMessage(sender, "&6All players will need to re-login for the change to take place.");
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ package com.viaversion.viaversion.commands.defaultsubs;
|
|||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||||
import com.viaversion.viaversion.api.command.ViaSubCommand;
|
import com.viaversion.viaversion.api.command.ViaSubCommand;
|
||||||
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
import com.viaversion.viaversion.api.configuration.ViaVersionConfig;
|
||||||
|
|
||||||
public class DontBugMeSubCmd extends ViaSubCommand {
|
public class DontBugMeSubCmd extends ViaSubCommand {
|
||||||
|
|
||||||
@ -36,11 +36,11 @@ public class DontBugMeSubCmd extends ViaSubCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(ViaCommandSender sender, String[] args) {
|
public boolean execute(ViaCommandSender sender, String[] args) {
|
||||||
ConfigurationProvider provider = Via.getPlatform().getConfigurationProvider();
|
final ViaVersionConfig config = Via.getConfig();
|
||||||
boolean newValue = !Via.getConfig().isCheckForUpdates();
|
boolean newValue = !config.isCheckForUpdates();
|
||||||
|
|
||||||
Via.getConfig().setCheckForUpdates(newValue);
|
config.setCheckForUpdates(newValue);
|
||||||
provider.saveConfig();
|
config.save();
|
||||||
sendMessage(sender, "&6We will %snotify you about updates.", (newValue ? "&a" : "&cnot "));
|
sendMessage(sender, "&6We will %snotify you about updates.", (newValue ? "&a" : "&cnot "));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -34,7 +34,7 @@ public class ReloadSubCmd extends ViaSubCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(ViaCommandSender sender, String[] args) {
|
public boolean execute(ViaCommandSender sender, String[] args) {
|
||||||
Via.getPlatform().getConfigurationProvider().reloadConfig();
|
Via.getPlatform().getConfigurationProvider().reloadConfigs();
|
||||||
sendMessage(sender, "&6Configuration successfully reloaded! Some features may need a restart.");
|
sendMessage(sender, "&6Configuration successfully reloaded! Some features may need a restart.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -91,13 +91,14 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf
|
|||||||
private boolean cache1_17Light;
|
private boolean cache1_17Light;
|
||||||
private Map<String, String> chatTypeFormats;
|
private Map<String, String> chatTypeFormats;
|
||||||
|
|
||||||
protected AbstractViaConfig(File configFile) {
|
protected AbstractViaConfig(final File configFile) {
|
||||||
super(configFile);
|
super(configFile);
|
||||||
|
Via.getManager().getConfigurationProvider().register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reloadConfig() {
|
public void reload() {
|
||||||
super.reloadConfig();
|
super.reload();
|
||||||
loadFields();
|
loadFields();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||||
|
* Copyright (C) 2023 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.viaversion.viaversion.configuration;
|
||||||
|
|
||||||
|
import com.viaversion.viaversion.api.configuration.Config;
|
||||||
|
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ConfigurationProviderImpl implements ConfigurationProvider {
|
||||||
|
private final List<Config> configs = new ArrayList<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register(final Config config) {
|
||||||
|
configs.add(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<Config> configs() {
|
||||||
|
return Collections.unmodifiableCollection(configs);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reloadConfigs() {
|
||||||
|
for (final Config config : configs) {
|
||||||
|
config.reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -19,7 +19,6 @@ package com.viaversion.viaversion.util;
|
|||||||
|
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
|
||||||
import com.viaversion.viaversion.compatibility.YamlCompat;
|
import com.viaversion.viaversion.compatibility.YamlCompat;
|
||||||
import com.viaversion.viaversion.compatibility.unsafe.Yaml1Compat;
|
import com.viaversion.viaversion.compatibility.unsafe.Yaml1Compat;
|
||||||
import com.viaversion.viaversion.compatibility.unsafe.Yaml2Compat;
|
import com.viaversion.viaversion.compatibility.unsafe.Yaml2Compat;
|
||||||
@ -40,7 +39,7 @@ import org.yaml.snakeyaml.DumperOptions;
|
|||||||
import org.yaml.snakeyaml.Yaml;
|
import org.yaml.snakeyaml.Yaml;
|
||||||
|
|
||||||
@SuppressWarnings("VulnerableCodeUsages")
|
@SuppressWarnings("VulnerableCodeUsages")
|
||||||
public abstract class Config implements ConfigurationProvider {
|
public abstract class Config {
|
||||||
private static final YamlCompat YAMP_COMPAT = YamlCompat.isVersion1() ? new Yaml1Compat() : new Yaml2Compat();
|
private static final YamlCompat YAMP_COMPAT = YamlCompat.isVersion1() ? new Yaml1Compat() : new Yaml2Compat();
|
||||||
private static final ThreadLocal<Yaml> YAML = ThreadLocal.withInitial(() -> {
|
private static final ThreadLocal<Yaml> YAML = ThreadLocal.withInitial(() -> {
|
||||||
DumperOptions options = new DumperOptions();
|
DumperOptions options = new DumperOptions();
|
||||||
@ -56,7 +55,7 @@ public abstract class Config implements ConfigurationProvider {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new Config instance, this will *not* load the config by default.
|
* Create a new Config instance, this will *not* load the config by default.
|
||||||
* To load config see {@link #reloadConfig()}
|
* To load config see {@link #reload()}
|
||||||
*
|
*
|
||||||
* @param configFile The location of where the config is loaded/saved.
|
* @param configFile The location of where the config is loaded/saved.
|
||||||
*/
|
*/
|
||||||
@ -116,14 +115,14 @@ public abstract class Config implements ConfigurationProvider {
|
|||||||
// Call Handler
|
// Call Handler
|
||||||
handleConfig(defaults);
|
handleConfig(defaults);
|
||||||
// Save
|
// Save
|
||||||
saveConfig(location, defaults);
|
save(location, defaults);
|
||||||
|
|
||||||
return defaults;
|
return defaults;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void handleConfig(Map<String, Object> config);
|
protected abstract void handleConfig(Map<String, Object> config);
|
||||||
|
|
||||||
public synchronized void saveConfig(File location, Map<String, Object> config) {
|
public synchronized void save(File location, Map<String, Object> config) {
|
||||||
try {
|
try {
|
||||||
commentStore.writeComments(YAML.get().dump(config), location);
|
commentStore.writeComments(YAML.get().dump(config), location);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@ -133,28 +132,24 @@ public abstract class Config implements ConfigurationProvider {
|
|||||||
|
|
||||||
public abstract List<String> getUnsupportedOptions();
|
public abstract List<String> getUnsupportedOptions();
|
||||||
|
|
||||||
@Override
|
|
||||||
public void set(String path, Object value) {
|
public void set(String path, Object value) {
|
||||||
config.put(path, value);
|
config.put(path, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void save() {
|
||||||
public void saveConfig() {
|
|
||||||
this.configFile.getParentFile().mkdirs();
|
this.configFile.getParentFile().mkdirs();
|
||||||
saveConfig(this.configFile, this.config);
|
save(this.configFile, this.config);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveConfig(final File file) {
|
public void save(final File file) {
|
||||||
saveConfig(file, this.config);
|
save(file, this.config);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void reload() {
|
||||||
public void reloadConfig() {
|
|
||||||
this.configFile.getParentFile().mkdirs();
|
this.configFile.getParentFile().mkdirs();
|
||||||
this.config = new ConcurrentSkipListMap<>(loadConfig(this.configFile));
|
this.config = new ConcurrentSkipListMap<>(loadConfig(this.configFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, Object> getValues() {
|
public Map<String, Object> getValues() {
|
||||||
return this.config;
|
return this.config;
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ public final class DumpUtil {
|
|||||||
com.viaversion.viaversion.util.VersionInfo.getImplementationVersion(),
|
com.viaversion.viaversion.util.VersionInfo.getImplementationVersion(),
|
||||||
Via.getManager().getSubPlatforms()
|
Via.getManager().getSubPlatforms()
|
||||||
);
|
);
|
||||||
final Map<String, Object> configuration = Via.getPlatform().getConfigurationProvider().getValues();
|
final Map<String, Object> configuration = ((Config) Via.getConfig()).getValues();
|
||||||
final DumpTemplate template = new DumpTemplate(version, configuration, Via.getPlatform().getDump(), Via.getManager().getInjector().getDump(), getPlayerSample(playerToSample));
|
final DumpTemplate template = new DumpTemplate(version, configuration, Via.getPlatform().getDump(), Via.getManager().getInjector().getDump(), getPlayerSample(playerToSample));
|
||||||
final CompletableFuture<String> result = new CompletableFuture<>();
|
final CompletableFuture<String> result = new CompletableFuture<>();
|
||||||
Via.getPlatform().runAsync(() -> {
|
Via.getPlatform().runAsync(() -> {
|
||||||
|
@ -21,7 +21,6 @@ import com.google.gson.JsonObject;
|
|||||||
import com.viaversion.viaversion.ViaAPIBase;
|
import com.viaversion.viaversion.ViaAPIBase;
|
||||||
import com.viaversion.viaversion.api.ViaAPI;
|
import com.viaversion.viaversion.api.ViaAPI;
|
||||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||||
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
|
||||||
import com.viaversion.viaversion.api.configuration.ViaVersionConfig;
|
import com.viaversion.viaversion.api.configuration.ViaVersionConfig;
|
||||||
import com.viaversion.viaversion.api.platform.PlatformTask;
|
import com.viaversion.viaversion.api.platform.PlatformTask;
|
||||||
import com.viaversion.viaversion.api.platform.ViaPlatform;
|
import com.viaversion.viaversion.api.platform.ViaPlatform;
|
||||||
@ -118,11 +117,6 @@ public final class TestPlatform implements ViaPlatform {
|
|||||||
return testConfig;
|
return testConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ConfigurationProvider getConfigurationProvider() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public File getDataFolder() {
|
public File getDataFolder() {
|
||||||
return null;
|
return null;
|
||||||
|
@ -21,7 +21,6 @@ import com.google.gson.JsonObject;
|
|||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||||
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
|
||||||
import com.viaversion.viaversion.api.platform.PlatformTask;
|
import com.viaversion.viaversion.api.platform.PlatformTask;
|
||||||
import com.viaversion.viaversion.api.platform.ViaPlatform;
|
import com.viaversion.viaversion.api.platform.ViaPlatform;
|
||||||
import com.viaversion.viaversion.dump.PluginInfo;
|
import com.viaversion.viaversion.dump.PluginInfo;
|
||||||
@ -193,11 +192,6 @@ public class SpongePlugin implements ViaPlatform<Player> {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ConfigurationProvider getConfigurationProvider() {
|
|
||||||
return conf;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public File getDataFolder() {
|
public File getDataFolder() {
|
||||||
return configDir.toFile();
|
return configDir.toFile();
|
||||||
|
@ -30,7 +30,7 @@ public class SpongeViaConfig extends AbstractViaConfig {
|
|||||||
|
|
||||||
public SpongeViaConfig(File configFile) {
|
public SpongeViaConfig(File configFile) {
|
||||||
super(new File(configFile, "config.yml"));
|
super(new File(configFile, "config.yml"));
|
||||||
reloadConfig();
|
reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -29,7 +29,6 @@ import com.velocitypowered.api.proxy.Player;
|
|||||||
import com.velocitypowered.api.proxy.ProxyServer;
|
import com.velocitypowered.api.proxy.ProxyServer;
|
||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
import com.viaversion.viaversion.api.command.ViaCommandSender;
|
||||||
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
|
|
||||||
import com.viaversion.viaversion.api.platform.PlatformTask;
|
import com.viaversion.viaversion.api.platform.PlatformTask;
|
||||||
import com.viaversion.viaversion.api.platform.ViaServerProxyPlatform;
|
import com.viaversion.viaversion.api.platform.ViaServerProxyPlatform;
|
||||||
import com.viaversion.viaversion.dump.PluginInfo;
|
import com.viaversion.viaversion.dump.PluginInfo;
|
||||||
@ -193,11 +192,6 @@ public class VelocityPlugin implements ViaServerProxyPlatform<Player> {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ConfigurationProvider getConfigurationProvider() {
|
|
||||||
return conf;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public File getDataFolder() {
|
public File getDataFolder() {
|
||||||
return configDir.toFile();
|
return configDir.toFile();
|
||||||
|
@ -34,7 +34,7 @@ public class VelocityViaConfig extends AbstractViaConfig {
|
|||||||
|
|
||||||
public VelocityViaConfig(File configFile) {
|
public VelocityViaConfig(File configFile) {
|
||||||
super(new File(configFile, "config.yml"));
|
super(new File(configFile, "config.yml"));
|
||||||
reloadConfig();
|
reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -63,7 +63,8 @@ public final class ProtocolDetectorService extends AbstractProtocolDetectorServi
|
|||||||
|
|
||||||
setProtocolVersion(serverName, serverPing.getVersion().getProtocol());
|
setProtocolVersion(serverName, serverPing.getVersion().getProtocol());
|
||||||
|
|
||||||
if (((VelocityViaConfig) Via.getConfig()).isVelocityPingSave()) {
|
final VelocityViaConfig config = (VelocityViaConfig) Via.getConfig();
|
||||||
|
if (config.isVelocityPingSave()) {
|
||||||
final Map<String, Integer> servers = configuredServers();
|
final Map<String, Integer> servers = configuredServers();
|
||||||
final Integer protocol = servers.get(serverName);
|
final Integer protocol = servers.get(serverName);
|
||||||
if (protocol != null && protocol == serverPing.getVersion().getProtocol()) {
|
if (protocol != null && protocol == serverPing.getVersion().getProtocol()) {
|
||||||
@ -74,7 +75,7 @@ public final class ProtocolDetectorService extends AbstractProtocolDetectorServi
|
|||||||
synchronized (Via.getPlatform().getConfigurationProvider()) {
|
synchronized (Via.getPlatform().getConfigurationProvider()) {
|
||||||
servers.put(serverName, serverPing.getVersion().getProtocol());
|
servers.put(serverName, serverPing.getVersion().getProtocol());
|
||||||
}
|
}
|
||||||
Via.getPlatform().getConfigurationProvider().saveConfig();
|
config.save();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren