Config File!

This commit is contained in:
Adrian Bergqvist 2022-06-03 21:38:08 +02:00
parent 6460be6e1c
commit d70cd98001
3 changed files with 61 additions and 23 deletions

View File

@ -5,7 +5,7 @@
<profile name="Gradle Imported" enabled="true">
<outputRelativeToContentRoot value="true" />
<processorPath useClasspath="false">
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.velocitypowered/velocity-api/3.1.2-SNAPSHOT/5b05f9d06210af389f1bc92fc177ce0c72ab2fd7/velocity-api-3.1.2-SNAPSHOT.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.velocitypowered/velocity-api/3.1.2-SNAPSHOT/88f0b9c39c98439596b8f7f419a817a0371ffb2b/velocity-api-3.1.2-SNAPSHOT.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.moandjiezana.toml/toml4j/0.7.2/a03337911d0bd2c40932aca3946edb30d0e7d0c/toml4j-0.7.2.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.spongepowered/configurate-gson/3.7.2/431733e80d7dfc62b37962c2723bba5c996548f/configurate-gson-3.7.2.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.kyori/adventure-text-minimessage/4.10.1/c433cd701761c75ca06b7f36eb2623068203dd61/adventure-text-minimessage-4.10.1.jar" />

View File

@ -10,9 +10,11 @@ repositories {
name 'papermc'
url 'https://repo.papermc.io/repository/maven-public/'
}
mavenCentral()
}
dependencies {
implementation 'com.velocitypowered:velocity-api:3.1.2-SNAPSHOT'
implementation 'com.electronwill.night-config:toml:3.6.5'
annotationProcessor 'com.velocitypowered:velocity-api:3.1.2-SNAPSHOT'
}

View File

@ -1,26 +1,21 @@
package org.adde0109.ambassador;
import com.google.common.io.ByteArrayDataInput;
import com.electronwill.nightconfig.core.ConfigSpec;
import com.electronwill.nightconfig.core.io.ParsingException;
import com.google.inject.Inject;
import com.velocitypowered.api.event.Continuation;
import com.velocitypowered.api.event.Subscribe;
import com.velocitypowered.api.event.connection.PreLoginEvent;
import com.velocitypowered.api.event.player.ServerLoginPluginMessageEvent;
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
import com.velocitypowered.api.plugin.Plugin;
import com.velocitypowered.api.plugin.annotation.DataDirectory;
import com.velocitypowered.api.proxy.LoginPhaseConnection;
import com.velocitypowered.api.proxy.ProxyServer;
import com.velocitypowered.api.proxy.messages.ChannelIdentifier;
import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier;
import com.velocitypowered.api.proxy.server.RegisteredServer;
import com.velocitypowered.api.proxy.server.ServerPing;
import com.velocitypowered.api.util.ModInfo;
import java.io.EOFException;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.slf4j.Logger;
import java.nio.charset.StandardCharsets;
import org.slf4j.Logger;
import com.electronwill.nightconfig.core.file.FileConfig;
import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;
@ -30,7 +25,8 @@ public class Ambassador {
private final ProxyServer server;
private final Logger logger;
private final Path dataDirectory;
private RegisteredServer forgeServer;
private Optional<RegisteredServer> forgeServer;
private FileConfig config;
private static ForgeHandshakeDataHandler forgeHandshakeDataHandler;
@ -43,20 +39,60 @@ public class Ambassador {
@Subscribe
public void onProxyInitialization(ProxyInitializeEvent event) {
Path serverFilePath = dataDirectory.resolve("forgeServer.txt");
/*try {
Files.createDirectory(dataDirectory);
serverFilePath.toFile().createNewFile()
if(readOrCreateConfig()) {
forgeHandshakeDataHandler = new ForgeHandshakeDataHandler(forgeServer.get(),logger);
server.getEventManager().register(this, forgeHandshakeDataHandler);
}
else {
logger.info("Ambassador will be disabled because of errors");
}
}
private boolean readOrCreateConfig() {
try {
Files.createDirectories(dataDirectory);
Files.createFile(dataDirectory.resolve("forgeServer.toml"));
}
catch (FileAlreadyExistsException ignored) {
}
catch (IOException e) {
logger.error("Config related error: " + e.toString());
return false;
}
*/
try {
config = FileConfig.of(dataDirectory.resolve("forgeServer.toml"));
config.load();
}
catch (ParsingException e) {
logger.error("Config related error: " + e.toString());
return false;
}
forgeServer = server.getServer("lobby").orElseThrow(IllegalAccessError::new);
forgeHandshakeDataHandler = new ForgeHandshakeDataHandler(forgeServer,logger);
server.getEventManager().register(this, forgeHandshakeDataHandler);
ConfigSpec spec = new ConfigSpec();
spec.define("Forge Server", "");
spec.correct(config);
config.save();
if(config.get("Forge Server") != "") {
forgeServer = server.getServer(config.get("Forge Server"));
if(!forgeServer.isPresent()) {
logger.error("Could not find " + config.get("Forge Server") + " in registered servers!");
config.close();
return false;
}
}
else {
logger.error("Please specify the forge server in the config");
config.close();
return false;
}
return true;
}
}