commit f3ee5829694855999036c834ce427a2823e15091 Author: Jonttuuu <50843099+Jonttuuu@users.noreply.github.com> Date: Sun May 1 00:51:44 2022 +0300 Create FlexConnect project diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c6a2516 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +bin/ +target/ +settings.json +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.classpath +.project +.factorypath +*.iml +*.settings/ +.vscode/ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..4c575b6 --- /dev/null +++ b/pom.xml @@ -0,0 +1,67 @@ + + 4.0.0 + + fi.flexplex + connect + 1.0.0-SNAPSHOT + flexconnect + + + true + + + + FlexConnect + + + ${basedir}/src/main/resources + + plugin.yml + config.yml + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 16 + 16 + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + + + + + + paper + https://papermc.io/repo/repository/maven-public/ + + + + + + com.destroystokyo.paper + paper-api + 1.16.4-R0.1-SNAPSHOT + provided + + + + diff --git a/src/main/java/fi/flexplex/connect/FlexConnect.java b/src/main/java/fi/flexplex/connect/FlexConnect.java new file mode 100644 index 0000000..db8bf35 --- /dev/null +++ b/src/main/java/fi/flexplex/connect/FlexConnect.java @@ -0,0 +1,81 @@ +package fi.flexplex.connect; + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Properties; + +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.plugin.java.JavaPlugin; + +public final class FlexConnect extends JavaPlugin { + + private String token = ""; + + public String getToken() { + return this.token; + } + + @Override + public void onEnable() { + + // Plugin own configs + this.saveDefaultConfig(); + this.token = this.getConfig().getString("token"); + if (this.token.equals("default")) { + this.getLogger().warning("Token for FlexPlex server network has not been set into plugins config file. Please request token from FlexPlex staff members if you don't already have one!"); + } + + boolean configsModified = false; + + // Check online mode + if (this.getServer().getOnlineMode()) { + final Properties properties = new Properties(); + try { + properties.load(new FileInputStream("server.properties")); + properties.setProperty("online-mode", "false"); + properties.store(new FileOutputStream("server.properties"), null); + } catch (final IOException e) { + e.printStackTrace(); + } + this.getLogger().warning("Automatic changes has been made to server.properties file."); + configsModified = true; + } + + // Check paper config + boolean paperConfigModified = false; + final YamlConfiguration paperConfig = this.getServer().spigot().getPaperConfig(); + if (!paperConfig.getBoolean("settings.velocity-support.enabled")) { + paperConfig.set("settings.velocity-support.enabled", true); + paperConfigModified = true; + } + if (!paperConfig.getBoolean("settings.velocity-support.enabled")) { + paperConfig.set("settings.velocity-support.online-mode", true); + paperConfigModified = true; + } + if (!paperConfig.getString("settings.velocity-support.secret").equals("flexplex")) { + paperConfig.set("settings.velocity-support.secret", "flexplex"); + paperConfigModified = true; + } + if (paperConfigModified) { + try { + paperConfig.save("paper.yml"); + } catch (final IOException e) { + e.printStackTrace(); + } + this.getLogger().warning("Automatic changes has been made to paper.yml config file."); + configsModified = true; + } + + // Actions if configs were modified + if (configsModified) { + this.getLogger().warning("Changes has been made to config files. Server will now shutdown automatically."); + this.getServer().shutdown(); + return; + } + + // Register listener + this.getServer().getPluginManager().registerEvents(new FlexConnectListener(this), this); + } + +} diff --git a/src/main/java/fi/flexplex/connect/FlexConnectListener.java b/src/main/java/fi/flexplex/connect/FlexConnectListener.java new file mode 100644 index 0000000..3331dc3 --- /dev/null +++ b/src/main/java/fi/flexplex/connect/FlexConnectListener.java @@ -0,0 +1,30 @@ +package fi.flexplex.connect; + +import com.destroystokyo.paper.profile.ProfileProperty; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerPreLoginEvent; + +public final class FlexConnectListener implements Listener { + + private final FlexConnect flexConnect; + + public FlexConnectListener(final FlexConnect flexConnect) { + this.flexConnect = flexConnect; + } + + @EventHandler + public void onAsyncPlayerPreLogin(final AsyncPlayerPreLoginEvent event) { + // Authenticate players + for (final ProfileProperty property : event.getPlayerProfile().getProperties()) { + if (property.getName().equals("flexplex-token") && property.getValue().equals(flexConnect.getToken())) { + // Authentication success + return; + } + } + // Authentication failed + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "Access denied"); + } + +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..f7763ae --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1 @@ +token: "default" diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..7b07c61 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,7 @@ +name: FlexConnect +version: 1.0 +api-version: 1.13 +description: Connect's your server to FlexPlex network. +author: FlexPlex +website: https://flexplex.fi +main: fi.flexplex.connect.FlexConnect