diff --git a/Sponge/SpongeLoader/pom.xml b/Sponge/SpongeLoader/pom.xml
new file mode 100644
index 0000000..ba2f189
--- /dev/null
+++ b/Sponge/SpongeLoader/pom.xml
@@ -0,0 +1,97 @@
+
+
+ 4.0.0
+
+ dev.brighten.antivpn
+ Sponge
+ 1.9.4
+ ../pom.xml
+
+
+ SpongeLoader
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+ maven-repo
+ https://nexus.funkemunky.cc/repository/maven-public/
+
+
+ funkemunky-releases
+ https://nexus.funkemunky.cc/content/repositories/releases/
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.13.0
+
+ 17
+ 17
+ -XDignore.symbol.file
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.6.0
+
+
+ package
+
+ shade
+
+
+ false
+
+
+ antivpn-sponge.jarinjar
+ ${project.parent.basedir}/SpongePlugin/target/SpongePlugin-${project.version}.jar
+
+
+
+
+
+
+
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
+ org.spongepowered
+ spongeapi
+ 11.0.0
+ provided
+
+
+ dev.brighten.antivpn
+ SpongePlugin
+ ${project.version}
+ provided
+
+
+ dev.brighten.antivpn
+ loader-utils
+ 1.9.4
+ compile
+
+
+
+
+
\ No newline at end of file
diff --git a/Sponge/SpongeLoader/src/main/java/dev/brighten/antivpn/sponge/SpongeLoaderPlugin.java b/Sponge/SpongeLoader/src/main/java/dev/brighten/antivpn/sponge/SpongeLoaderPlugin.java
new file mode 100644
index 0000000..d77a1eb
--- /dev/null
+++ b/Sponge/SpongeLoader/src/main/java/dev/brighten/antivpn/sponge/SpongeLoaderPlugin.java
@@ -0,0 +1,55 @@
+package dev.brighten.antivpn.sponge;
+
+import com.google.inject.Inject;
+import dev.brighten.antivpn.loader.JarInJarClassLoader;
+import dev.brighten.antivpn.loader.LoaderBootstrap;
+import org.apache.logging.log4j.Logger;
+import org.spongepowered.api.Server;
+import org.spongepowered.api.Sponge;
+import org.spongepowered.api.config.ConfigManager;
+import org.spongepowered.api.event.Listener;
+import org.spongepowered.api.event.lifecycle.ConstructPluginEvent;
+import org.spongepowered.api.event.lifecycle.StoppingEngineEvent;
+import org.spongepowered.plugin.PluginContainer;
+import org.spongepowered.plugin.builtin.jvm.Plugin;
+
+import java.util.Map;
+
+@Plugin("kaurivpn")
+public class SpongeLoaderPlugin {
+
+ private static final String JAR_NAME = "antivpn-sponge.jarinjar";
+ private static final String SOURCE_NAME = "antivpn-source.jarinjar";
+ private static final String BOOTSTRAP_CLASS = "dev.brighten.antivpn.bungee.BungeePlugin";
+
+ private final LoaderBootstrap plugin;
+
+ @Inject
+ private PluginContainer container;
+ @Inject
+ private Logger logger;
+
+ public SpongeLoaderPlugin() {
+ Map, Object> instances = Map.of(PluginContainer.class, container, Logger.class, logger);
+ JarInJarClassLoader loader = new JarInJarClassLoader(getClass().getClassLoader(), JAR_NAME, SOURCE_NAME);
+ this.plugin = loader.instantiatePlugin(BOOTSTRAP_CLASS, Map.class, instances);
+
+ ConfigManager configManager = Sponge.configManager();
+
+ var path = configManager.sharedConfig(container).directory();
+
+ this.plugin.onLoad(path.toFile());
+ }
+
+ @Listener
+ public void onConstruct(final ConstructPluginEvent event) {
+ this.plugin.onEnable();
+ }
+
+ @Listener
+ public void onServer(final StoppingEngineEvent event) {
+ this.plugin.onDisable();
+ }
+
+
+}
diff --git a/Sponge/SpongePlugin/pom.xml b/Sponge/SpongePlugin/pom.xml
new file mode 100644
index 0000000..d27ce7c
--- /dev/null
+++ b/Sponge/SpongePlugin/pom.xml
@@ -0,0 +1,159 @@
+
+
+ 4.0.0
+
+ dev.brighten.antivpn
+ Sponge
+ 1.9.4
+ ../pom.xml
+
+
+ SpongePlugin
+
+
+
+ maven-repo
+ https://nexus.funkemunky.cc/repository/maven-public/
+
+
+ funkemunky-releases
+ https://nexus.funkemunky.cc/content/repositories/releases/
+
+
+
+
+
+ org.spongepowered
+ spongeapi
+ 11.0.0
+ provided
+
+
+ dev.brighten.antivpn
+ loader-utils
+ 1.9.4
+ provided
+
+
+ dev.brighten.antivpn
+ Source
+ 1.9.4
+ provided
+
+
+
+
+ 17
+ 17
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.13.0
+
+ 17
+ 17
+ -XDignore.symbol.file
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.6.0
+
+
+ package
+
+ shade
+
+
+
+
+ *:*
+
+ com/google/**
+ org/objectweb/**
+ org/checkerframework/**
+
+
+
+
+
+
+ org.yaml.snakeyaml
+ dev.brighten.antivpn.shaded.org.yaml.snakeyaml
+
+
+ dev.brighten.antivpn.depends.Relocate
+ dev.brighten.antivpn.depends.MavenLibraries
+
+
+
+ com.github.benmanes.caffeine
+ dev.brighten.antivpn.shaded.com.github.benmanes.caffeine
+
+
+ org.h2
+ dev.brighten.antivpn.shaded.org.h2
+
+
+ dev.brighten.antivpn.depends.Relocate
+ dev.brighten.antivpn.depends.MavenLibraries
+
+
+
+ org.bson
+ dev.brighten.antivpn.shaded.org.bson
+
+
+ dev.brighten.antivpn.depends.Relocate
+ dev.brighten.antivpn.depends.MavenLibraries
+
+
+
+ com.mongodb
+ dev.brighten.antivpn.shaded.com.mongodb
+
+
+ dev.brighten.antivpn.depends.Relocate
+ dev.brighten.antivpn.depends.MavenLibraries
+
+
+
+ com.mysql.cj
+ dev.brighten.antivpn.shaded.com.mysql.cj
+
+
+ dev.brighten.antivpn.depends.Relocate
+ dev.brighten.antivpn.depends.MavenLibraries
+
+
+
+ com.mysql.jdbc
+ dev.brighten.antivpn.shaded.com.mysql.jdbc
+
+
+ dev.brighten.antivpn.depends.Relocate
+ dev.brighten.antivpn.depends.MavenLibraries
+
+
+
+
+
+
+
+
+
+
+ src/main/resources
+ true
+
+
+
+
+
\ No newline at end of file
diff --git a/Sponge/src/main/java/dev/brighten/antivpn/sponge/SpongeListener.java b/Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/SpongeListener.java
similarity index 100%
rename from Sponge/src/main/java/dev/brighten/antivpn/sponge/SpongeListener.java
rename to Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/SpongeListener.java
diff --git a/Sponge/src/main/java/dev/brighten/antivpn/sponge/SpongePlayer.java b/Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/SpongePlayer.java
similarity index 100%
rename from Sponge/src/main/java/dev/brighten/antivpn/sponge/SpongePlayer.java
rename to Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/SpongePlayer.java
diff --git a/Sponge/src/main/java/dev/brighten/antivpn/sponge/SpongePlayerExecutor.java b/Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/SpongePlayerExecutor.java
similarity index 100%
rename from Sponge/src/main/java/dev/brighten/antivpn/sponge/SpongePlayerExecutor.java
rename to Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/SpongePlayerExecutor.java
diff --git a/Sponge/src/main/java/dev/brighten/antivpn/sponge/SpongePlugin.java b/Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/SpongePlugin.java
similarity index 63%
rename from Sponge/src/main/java/dev/brighten/antivpn/sponge/SpongePlugin.java
rename to Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/SpongePlugin.java
index 1aa11f2..2e2f9bb 100644
--- a/Sponge/src/main/java/dev/brighten/antivpn/sponge/SpongePlugin.java
+++ b/Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/SpongePlugin.java
@@ -1,60 +1,64 @@
package dev.brighten.antivpn.sponge;
-import com.google.inject.Inject;
import dev.brighten.antivpn.AntiVPN;
+import dev.brighten.antivpn.loader.LoaderBootstrap;
import dev.brighten.antivpn.sponge.command.SpongeCommand;
import lombok.Getter;
-import org.spongepowered.api.Server;
import org.apache.logging.log4j.Logger;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.command.Command;
-import org.spongepowered.api.config.ConfigManager;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.lifecycle.*;
import org.spongepowered.plugin.PluginContainer;
-import org.spongepowered.plugin.builtin.jvm.Plugin;
-@Plugin("kaurivpn")
+import java.io.File;
+import java.util.Map;
+
@Getter
-public class SpongePlugin {
+public class SpongePlugin implements LoaderBootstrap {
//Plugin init
- @Inject
- private PluginContainer container;
- @Inject
- private Logger logger;
@Getter
private static SpongePlugin instance;
- @Listener
- public void onConstruct(final ConstructPluginEvent event) {
- instance = this;
+ private Logger logger;
+ private PluginContainer container;
+ private final Map, Object> objects;
+ private File dataFolder;
- ConfigManager configManager = Sponge.configManager();
- SpongeListener spongeListener = new SpongeListener();
- var path = configManager.sharedConfig(container).directory();
-
- logger.info("Fucking path: " + path);
-
- AntiVPN.start(spongeListener, new SpongePlayerExecutor(), path.toFile());
- }
-
- @Listener
- public void onServer(final StoppingEngineEvent event) {
- AntiVPN.getInstance().getExecutor().disablePlugin();
+ public SpongePlugin(Map, Object> objects) {
+ this.objects = objects;
}
@Listener
public void onRegisterRawCommands(final RegisterCommandEvent event){
- if(AntiVPN.getInstance() == null) {
- for(int i = 0 ; i < 5 ; i++) System.out.println("FUCKING NULL");
- return;
- }
AntiVPN.getInstance().getExecutor().log("Registering commands...");
for (dev.brighten.antivpn.command.Command command : AntiVPN.getInstance().getCommands()) {
AntiVPN.getInstance().getExecutor().log("Registering command %s...", command.name());
event.register(this.container, new SpongeCommand(command), command.name(), command.aliases());
}
}
+
+ @Override
+ public void onLoad(File dataFolder) {
+ this.dataFolder = dataFolder;
+ container = (PluginContainer) objects.get(PluginContainer.class);
+ logger = (Logger) objects.get(Logger.class);
+ Sponge.eventManager().registerListeners(this.container, this);
+ }
+
+ @Override
+ public void onEnable() {
+ instance = this;
+
+ SpongeListener spongeListener = new SpongeListener();
+
+ AntiVPN.start(spongeListener, new SpongePlayerExecutor(), dataFolder);
+ }
+
+ @Override
+ public void onDisable() {
+ AntiVPN.getInstance().getExecutor().disablePlugin();
+ }
}
diff --git a/Sponge/src/main/java/dev/brighten/antivpn/sponge/command/SpongeCommand.java b/Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/command/SpongeCommand.java
similarity index 96%
rename from Sponge/src/main/java/dev/brighten/antivpn/sponge/command/SpongeCommand.java
rename to Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/command/SpongeCommand.java
index 3bccdc2..06ea090 100644
--- a/Sponge/src/main/java/dev/brighten/antivpn/sponge/command/SpongeCommand.java
+++ b/Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/command/SpongeCommand.java
@@ -33,7 +33,7 @@ public class SpongeCommand implements org.spongepowered.api.command.Command.Raw
val children = command.children();
if(children.length > 0 && args.length > 0) {
- for (dev.brighten.antivpn.command.Command child : children) {
+ for (Command child : children) {
if(child.name().equalsIgnoreCase(args[0]) || Arrays.stream(child.aliases())
.anyMatch(alias -> alias.equalsIgnoreCase(args[0]))) {
if(!sender.hasPermission("antivpn.command.*")
@@ -65,7 +65,7 @@ public class SpongeCommand implements org.spongepowered.api.command.Command.Raw
val children = command.children();
String[] args = arguments.input().split(" ");
if(children.length > 0 && args.length > 0) {
- for (dev.brighten.antivpn.command.Command child : children) {
+ for (Command child : children) {
if(child.name().equalsIgnoreCase(args[0]) || Arrays.stream(child.aliases())
.anyMatch(alias2 -> alias2.equalsIgnoreCase(args[0]))) {
return child.tabComplete(new SpongeCommandExecutor(sender), "alias", IntStream
diff --git a/Sponge/src/main/java/dev/brighten/antivpn/sponge/command/SpongeCommandExecutor.java b/Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/command/SpongeCommandExecutor.java
similarity index 100%
rename from Sponge/src/main/java/dev/brighten/antivpn/sponge/command/SpongeCommandExecutor.java
rename to Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/command/SpongeCommandExecutor.java
diff --git a/Sponge/src/main/java/dev/brighten/antivpn/sponge/util/StringUtil.java b/Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/util/StringUtil.java
similarity index 100%
rename from Sponge/src/main/java/dev/brighten/antivpn/sponge/util/StringUtil.java
rename to Sponge/SpongePlugin/src/main/java/dev/brighten/antivpn/sponge/util/StringUtil.java
diff --git a/Sponge/pom.xml b/Sponge/pom.xml
index c9ce89b..e3a38e5 100644
--- a/Sponge/pom.xml
+++ b/Sponge/pom.xml
@@ -2,176 +2,24 @@
+ 4.0.0
- AntiVPN
dev.brighten.antivpn
+ AntiVPN
1.9.4
- 4.0.0
+ pom
+
+ SpongePlugin
+ SpongeLoader
+
Sponge
-
-
- spongepowered-repo
- https://repo.spongepowered.org/maven/
-
-
- funkemunky-releases
- https://nexus.funkemunky.cc/content/repositories/releases/
-
-
-
-
-
- org.spongepowered
- spongeapi
- 11.0.0
- provided
-
-
- dev.brighten.antivpn
- Source
- 1.9.4
- compile
-
-
- com.github.ben-manes.caffeine
- caffeine
- 3.1.8
- compile
-
-
- org.mongodb
- mongo-java-driver
- 3.12.14
- compile
-
-
- com.mysql
- mysql-connector-j
- 9.1.0
- jar
- compile
-
-
- com.h2database
- h2
- 2.2.220
- compile
-
-
-
17
17
+ UTF-8
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.13.0
-
- 17
- 17
- -XDignore.symbol.file
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 3.6.0
-
-
- package
-
- shade
-
-
-
-
- *:*
-
- com/google/**
- org/objectweb/**
- org/checkerframework/**
-
-
-
-
-
-
- org.yaml.snakeyaml
- dev.brighten.antivpn.shaded.org.yaml.snakeyaml
-
-
- dev.brighten.antivpn.depends.Relocate
- dev.brighten.antivpn.depends.MavenLibraries
-
-
-
- com.github.benmanes.caffeine
- dev.brighten.antivpn.shaded.com.github.benmanes.caffeine
-
-
- org.h2
- dev.brighten.antivpn.shaded.org.h2
-
-
- dev.brighten.antivpn.depends.Relocate
- dev.brighten.antivpn.depends.MavenLibraries
-
-
-
- org.bson
- dev.brighten.antivpn.shaded.org.bson
-
-
- dev.brighten.antivpn.depends.Relocate
- dev.brighten.antivpn.depends.MavenLibraries
-
-
-
- com.mongodb
- dev.brighten.antivpn.shaded.com.mongodb
-
-
- dev.brighten.antivpn.depends.Relocate
- dev.brighten.antivpn.depends.MavenLibraries
-
-
-
- com.mysql.cj
- dev.brighten.antivpn.shaded.com.mysql.cj
-
-
- dev.brighten.antivpn.depends.Relocate
- dev.brighten.antivpn.depends.MavenLibraries
-
-
-
- com.mysql.jdbc
- dev.brighten.antivpn.shaded.com.mysql.jdbc
-
-
- dev.brighten.antivpn.depends.Relocate
- dev.brighten.antivpn.depends.MavenLibraries
-
-
-
-
-
-
-
-
-
-
- src/main/resources
- true
-
-
-
-
\ No newline at end of file
diff --git a/Sponge/src/main/resources/META-INF/sponge_plugins.json b/Sponge/src/main/resources/META-INF/sponge_plugins.json
deleted file mode 100644
index be21d3b..0000000
--- a/Sponge/src/main/resources/META-INF/sponge_plugins.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "loader": {
- "name": "java_plain",
- "version": "1.0"
- },
- "license": "All-Rights-Reserved",
- "plugins": [
- {
- "id": "kaurivpn",
- "name": "Kauri VPN",
- "version": "${version}",
- "entrypoint": "dev.brighten.antivpn.sponge.SpongePlugin",
- "description": "A simple and fast antivpn plugin.",
- "branding": {},
- "links": {
- },
- "contributors": [
- ],
- "dependencies": [
- {
- "id": "spongeapi",
- "version": "11.0.0",
- "load-order": "after",
- "optional": false
- }
- ]
- }
- ]
-}