From d70cd98001e730c1b3dca7b8efd598cc1303c71c Mon Sep 17 00:00:00 2001 From: Adrian Bergqvist Date: Fri, 3 Jun 2022 21:38:08 +0200 Subject: [PATCH] Config File! --- .idea/compiler.xml | 2 +- build.gradle | 2 + .../org/adde0109/ambassador/Ambassador.java | 80 ++++++++++++++----- 3 files changed, 61 insertions(+), 23 deletions(-) diff --git a/.idea/compiler.xml b/.idea/compiler.xml index b9ef655..3524642 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -5,7 +5,7 @@ - + diff --git a/build.gradle b/build.gradle index 95b4aeb..f488406 100644 --- a/build.gradle +++ b/build.gradle @@ -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' } diff --git a/src/main/java/org/adde0109/ambassador/Ambassador.java b/src/main/java/org/adde0109/ambassador/Ambassador.java index b8a7f6c..38fc045 100644 --- a/src/main/java/org/adde0109/ambassador/Ambassador.java +++ b/src/main/java/org/adde0109/ambassador/Ambassador.java @@ -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 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; } }