Merge branch '69-bug-sql-error-on-plugin-load-v194'

This commit is contained in:
2025-12-14 11:43:35 -05:00
12 changed files with 354 additions and 220 deletions
+97
View File
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.brighten.antivpn</groupId>
<artifactId>Sponge</artifactId>
<version>1.9.4</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>SpongeLoader</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
<repository>
<id>maven-repo</id>
<url>https://nexus.funkemunky.cc/repository/maven-public/</url>
</repository>
<repository>
<id>funkemunky-releases</id>
<url>https://nexus.funkemunky.cc/content/repositories/releases/</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>17</source>
<target>17</target>
<compilerArgument>-XDignore.symbol.file</compilerArgument>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>false</minimizeJar>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
<resource>antivpn-sponge.jarinjar</resource>
<file>${project.parent.basedir}/SpongePlugin/target/SpongePlugin-${project.version}.jar</file>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<dependencies>
<dependency>
<groupId>org.spongepowered</groupId>
<artifactId>spongeapi</artifactId>
<version>11.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>dev.brighten.antivpn</groupId>
<artifactId>SpongePlugin</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>dev.brighten.antivpn</groupId>
<artifactId>loader-utils</artifactId>
<version>1.9.4</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
@@ -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<Class<?>, 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<Server> event) {
this.plugin.onDisable();
}
}
+159
View File
@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>dev.brighten.antivpn</groupId>
<artifactId>Sponge</artifactId>
<version>1.9.4</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>SpongePlugin</artifactId>
<repositories>
<repository>
<id>maven-repo</id>
<url>https://nexus.funkemunky.cc/repository/maven-public/</url>
</repository>
<repository>
<id>funkemunky-releases</id>
<url>https://nexus.funkemunky.cc/content/repositories/releases/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spongepowered</groupId>
<artifactId>spongeapi</artifactId>
<version>11.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>dev.brighten.antivpn</groupId>
<artifactId>loader-utils</artifactId>
<version>1.9.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>dev.brighten.antivpn</groupId>
<artifactId>Source</artifactId>
<version>1.9.4</version>
<scope>provided</scope>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>17</source>
<target>17</target>
<compilerArgument>-XDignore.symbol.file</compilerArgument>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>com/google/**</exclude>
<exclude>org/objectweb/**</exclude>
<exclude>org/checkerframework/**</exclude>
</excludes>
</filter>
</filters>
<relocations>
<relocation>
<pattern>org.yaml.snakeyaml</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.org.yaml.snakeyaml</shadedPattern>
<excludes>
<!-- Exclude annotation values from relocation -->
<exclude>dev.brighten.antivpn.depends.Relocate</exclude>
<exclude>dev.brighten.antivpn.depends.MavenLibraries</exclude>
</excludes>
</relocation>
<relocation>
<pattern>com.github.benmanes.caffeine</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.com.github.benmanes.caffeine</shadedPattern>
</relocation>
<relocation>
<pattern>org.h2</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.org.h2</shadedPattern>
<excludes>
<!-- Exclude annotation values from relocation -->
<exclude>dev.brighten.antivpn.depends.Relocate</exclude>
<exclude>dev.brighten.antivpn.depends.MavenLibraries</exclude>
</excludes>
</relocation>
<relocation>
<pattern>org.bson</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.org.bson</shadedPattern>
<excludes>
<!-- Exclude annotation values from relocation -->
<exclude>dev.brighten.antivpn.depends.Relocate</exclude>
<exclude>dev.brighten.antivpn.depends.MavenLibraries</exclude>
</excludes>
</relocation>
<relocation>
<pattern>com.mongodb</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.com.mongodb</shadedPattern>
<excludes>
<!-- Exclude annotation values from relocation -->
<exclude>dev.brighten.antivpn.depends.Relocate</exclude>
<exclude>dev.brighten.antivpn.depends.MavenLibraries</exclude>
</excludes>
</relocation>
<relocation>
<pattern>com.mysql.cj</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.com.mysql.cj</shadedPattern>
<excludes>
<!-- Exclude annotation values from relocation -->
<exclude>dev.brighten.antivpn.depends.Relocate</exclude>
<exclude>dev.brighten.antivpn.depends.MavenLibraries</exclude>
</excludes>
</relocation>
<relocation>
<pattern>com.mysql.jdbc</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.com.mysql.jdbc</shadedPattern>
<excludes>
<!-- Exclude annotation values from relocation -->
<exclude>dev.brighten.antivpn.depends.Relocate</exclude>
<exclude>dev.brighten.antivpn.depends.MavenLibraries</exclude>
</excludes>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
@@ -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<Class<?>, 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<Server> event) {
AntiVPN.getInstance().getExecutor().disablePlugin();
public SpongePlugin(Map<Class<?>, Object> objects) {
this.objects = objects;
}
@Listener
public void onRegisterRawCommands(final RegisterCommandEvent<Command.Raw> 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();
}
}
@@ -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
+8 -160
View File
@@ -2,176 +2,24 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>AntiVPN</artifactId>
<groupId>dev.brighten.antivpn</groupId>
<artifactId>AntiVPN</artifactId>
<version>1.9.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<modules>
<module>SpongePlugin</module>
<module>SpongeLoader</module>
</modules>
<artifactId>Sponge</artifactId>
<repositories>
<repository>
<id>spongepowered-repo</id>
<url>https://repo.spongepowered.org/maven/</url>
</repository>
<repository>
<id>funkemunky-releases</id>
<url>https://nexus.funkemunky.cc/content/repositories/releases/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spongepowered</groupId>
<artifactId>spongeapi</artifactId>
<version>11.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>dev.brighten.antivpn</groupId>
<artifactId>Source</artifactId>
<version>1.9.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>3.1.8</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.14</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>9.1.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.2.220</version>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>17</source>
<target>17</target>
<compilerArgument>-XDignore.symbol.file</compilerArgument>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>com/google/**</exclude>
<exclude>org/objectweb/**</exclude>
<exclude>org/checkerframework/**</exclude>
</excludes>
</filter>
</filters>
<relocations>
<relocation>
<pattern>org.yaml.snakeyaml</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.org.yaml.snakeyaml</shadedPattern>
<excludes>
<!-- Exclude annotation values from relocation -->
<exclude>dev.brighten.antivpn.depends.Relocate</exclude>
<exclude>dev.brighten.antivpn.depends.MavenLibraries</exclude>
</excludes>
</relocation>
<relocation>
<pattern>com.github.benmanes.caffeine</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.com.github.benmanes.caffeine</shadedPattern>
</relocation>
<relocation>
<pattern>org.h2</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.org.h2</shadedPattern>
<excludes>
<!-- Exclude annotation values from relocation -->
<exclude>dev.brighten.antivpn.depends.Relocate</exclude>
<exclude>dev.brighten.antivpn.depends.MavenLibraries</exclude>
</excludes>
</relocation>
<relocation>
<pattern>org.bson</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.org.bson</shadedPattern>
<excludes>
<!-- Exclude annotation values from relocation -->
<exclude>dev.brighten.antivpn.depends.Relocate</exclude>
<exclude>dev.brighten.antivpn.depends.MavenLibraries</exclude>
</excludes>
</relocation>
<relocation>
<pattern>com.mongodb</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.com.mongodb</shadedPattern>
<excludes>
<!-- Exclude annotation values from relocation -->
<exclude>dev.brighten.antivpn.depends.Relocate</exclude>
<exclude>dev.brighten.antivpn.depends.MavenLibraries</exclude>
</excludes>
</relocation>
<relocation>
<pattern>com.mysql.cj</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.com.mysql.cj</shadedPattern>
<excludes>
<!-- Exclude annotation values from relocation -->
<exclude>dev.brighten.antivpn.depends.Relocate</exclude>
<exclude>dev.brighten.antivpn.depends.MavenLibraries</exclude>
</excludes>
</relocation>
<relocation>
<pattern>com.mysql.jdbc</pattern>
<shadedPattern>dev.brighten.antivpn.shaded.com.mysql.jdbc</shadedPattern>
<excludes>
<!-- Exclude annotation values from relocation -->
<exclude>dev.brighten.antivpn.depends.Relocate</exclude>
<exclude>dev.brighten.antivpn.depends.MavenLibraries</exclude>
</excludes>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
@@ -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
}
]
}
]
}