diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml
new file mode 100644
index 0000000..5245b39
--- /dev/null
+++ b/.github/workflows/create-release.yml
@@ -0,0 +1,92 @@
+name: create-release.yml
+on:
+ workflow_dispatch:
+jobs:
+ build:
+ name: Build and Test
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Cache local Maven repository
+ uses: actions/cache@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+ - uses: actions/checkout@v5
+ - name: Set up JDK 21
+ uses: actions/setup-java@v5
+ with:
+ java-version: '21'
+ distribution: 'zulu'
+ - name: Set up Maven
+ uses: stCarolas/setup-maven@v5
+ with:
+ maven-version: 3.9.6
+ - name: Compile
+ run: mvn -B package --file pom.xml
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Upload AntiVPN
+ uses: actions/upload-artifact@v4
+ with:
+ name: AntiVPN-Universal
+ path: Universal/target/AntiVPN-*.jar
+ - name: Upload Sponge plugin
+ uses: actions/upload-artifact@v4
+ with:
+ name: AntiVPN-Sponge
+ path: Sponge/target/Sponge-*.jar
+ release:
+ name: Create Release
+ needs: build
+ runs-on: ubuntu-latest
+ steps:
+ - name: Download AntiVPN
+ uses: actions/download-artifact@v4
+ with:
+ name: AntiVPN-Universal
+ - name: Download Sponge plugin
+ uses: actions/download-artifact@v4
+ with:
+ name: AntiVPN-Sponge
+ - name: Get Version Number from Pom
+ id: get_version
+ run: echo "VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
+ - name: Extract latest CHANGELOG entry
+ id: changelog
+ run: |
+ CHANGELOG_CONTENT=$(awk 'BEGIN {print_section=0;} /^## \[/ {if (print_section == 0) {print_section=1;} else {exit;}} print_section {print;}' CHANGELOG.md)
+ CHANGELOG_ESCAPED=$(echo "$CHANGELOG_CONTENT" | sed ':a;N;$!ba;s/\n/%0A/g')
+ echo "Extracted latest release notes from CHANGELOG.md:"
+ echo -e "$CHANGELOG_CONTENT"
+ echo "::set-output name=content::$CHANGELOG_ESCAPED"
+ - name: Create Release
+ uses: actions/create-release@v1
+ id: create_release
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: v${{ github.run_number }}
+ release_name: Release v${{ github.run_number }}
+ draft: false
+ prerelease: false
+ body: ${{ steps.changelog.outputs.content }}
+ - uses: actions/upload-release-asset@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ upload_url: ${{ steps.create_release.outputs.upload_url }}
+ asset_path: ./AntiVPN-Universal/AntiVPN-*.jar
+ asset_name: AntiVPN-Universal-v${{ env.VERSION }}.jar
+ asset_content_type: application/java-archive
+ - uses: actions/upload-release-asset@v1
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ upload_url: ${{ steps.create_release.outputs.upload_url }}
+ asset_path: ./AntiVPN-Sponge/Sponge-*.jar
+ asset_name: AntiVPN-Sponge-v${{ env.VERSION }}.jar
+ asset_content_type: application/java-archive
+
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 073bbfa..550b098 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -12,15 +12,15 @@ jobs:
steps:
- name: Cache local Maven repository
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Set up JDK 21
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
java-version: '21'
distribution: 'zulu'
diff --git a/Bukkit/pom.xml b/Bukkit/pom.xml
index cda1424..724a62d 100644
--- a/Bukkit/pom.xml
+++ b/Bukkit/pom.xml
@@ -5,7 +5,7 @@
AntiVPN
dev.brighten.antivpn
- 1.9.4-DEV
+ 1.9.4
4.0.0
@@ -81,7 +81,7 @@
dev.brighten.antivpn
Common
- 1.9.4-DEV
+ 1.9.4
provided
diff --git a/Bungee/pom.xml b/Bungee/pom.xml
index 9135c8d..561d9ac 100644
--- a/Bungee/pom.xml
+++ b/Bungee/pom.xml
@@ -5,7 +5,7 @@
AntiVPN
dev.brighten.antivpn
- 1.9.4-DEV
+ 1.9.4
4.0.0
@@ -67,7 +67,7 @@
dev.brighten.antivpn
Common
- 1.9.4-DEV
+ 1.9.4
provided
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..9706111
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,39 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [1.9.4] - 2025-09-30
+
+### Added
+- New dependency management system with automatic library loading and relocation
+- Caffeine cache implementation to replace Guava
+- Sponge platform support with full event handling and command system
+- UUID lookup functionality for player validation
+- Enhanced kick checking system with scheduled task execution
+- Support for Java 17 and Java 21 runtime environments
+- New database metrics tracking for bStats
+
+### Changed
+- **BREAKING**: Minimum Java version upgraded from 8 to 17
+- Replaced Guava cache with Caffeine cache for better performance
+- Modernized player checking system with asynchronous processing
+- Improved database connection handling with proper resource management
+- Enhanced VPN/Proxy detection with new `CheckResult` and `ResultType` system
+- Updated Maven dependencies and build process
+- Reorganized project structure (Assembly → Universal module)
+- Improved error handling and exception logging throughout codebase
+
+### Fixed
+- H2 database compatibility issues with automatic backup and recovery
+- Memory leaks in database result set handling with try-with-resources
+- Thread safety issues in player cache management
+- Command registration and unregistration during plugin lifecycle
+- Proper cleanup of database drivers on shutdown
+- Resource management in SQL connections and prepared statements
+
+### Removed
+- Guava dependency (replaced with Caffeine and built-in utilities)
+- Legacy cached response handling system
+- Old table format compatibility code
\ No newline at end of file
diff --git a/Common/pom.xml b/Common/pom.xml
index dec5693..7926c16 100644
--- a/Common/pom.xml
+++ b/Common/pom.xml
@@ -5,7 +5,7 @@
AntiVPN
dev.brighten.antivpn
- 1.9.4-DEV
+ 1.9.4
4.0.0
diff --git a/Sponge/pom.xml b/Sponge/pom.xml
index 94e28a5..188a5f3 100644
--- a/Sponge/pom.xml
+++ b/Sponge/pom.xml
@@ -5,7 +5,7 @@
AntiVPN
dev.brighten.antivpn
- 1.9.4-DEV
+ 1.9.4
4.0.0
@@ -32,7 +32,7 @@
dev.brighten.antivpn
Common
- 1.9.4-DEV
+ 1.9.4
compile
diff --git a/Universal/pom.xml b/Universal/pom.xml
index b036049..dfbec0e 100644
--- a/Universal/pom.xml
+++ b/Universal/pom.xml
@@ -6,7 +6,7 @@
dev.brighten.antivpn
AntiVPN
- 1.9.4-DEV
+ 1.9.4
Universal
diff --git a/Velocity/pom.xml b/Velocity/pom.xml
index 152db18..8d2db5a 100644
--- a/Velocity/pom.xml
+++ b/Velocity/pom.xml
@@ -5,7 +5,7 @@
AntiVPN
dev.brighten.antivpn
- 1.9.4-DEV
+ 1.9.4
4.0.0
@@ -33,7 +33,7 @@
dev.brighten.antivpn
Common
- 1.9.4-DEV
+ 1.9.4
provided
diff --git a/pom.xml b/pom.xml
index 05cf495..25ea794 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
dev.brighten.antivpn
AntiVPN
pom
- 1.9.4-DEV
+ 1.9.4
Common