Java Integration
Panduan lengkap untuk mengintegrasikan NxGate ke plugin Minecraft Java Anda.
Instalasi
Maven
pom.xml
1<repositories>2 <repository>3 <id>github</id>4 <url>https://maven.pkg.github.com/NoxlyDev/NxGate-Library</url>5 </repository>6</repositories>78<dependencies>9 <dependency>10 <groupId>xyz.noxlydev.nxgate</groupId>11 <artifactId>nxgate</artifactId>12 <version>1.0.0</version>13 </dependency>14</dependencies>
Gradle (Kotlin DSL)
build.gradle.kts
1repositories {2 maven {3 url = uri("https://maven.pkg.github.com/NoxlyDev/NxGate-Library")4 credentials {5 username = project.findProperty("gpr.user") ?: System.getenv("GITHUB_USERNAME")6 password = project.findProperty("gpr.token") ?: System.getenv("GITHUB_TOKEN")7 }8 }9}1011dependencies {12 implementation 'xyz.noxlydev.nxgate:nxgate:1.0.0'13}
Penting: GitHub Token Required
Library NxGate di-host di GitHub Packages. Anda HARUS menambahkan GitHub token dengan scope read:packages di file ~/.m2/settings.xml.
~/.m2/settings.xml
1<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"3 xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.04 http://maven.apache.org/xsd/settings-1.0.0.xsd">5 <servers>6 <server>7 <id>github</id>8 <username>YOUR_GITHUB_USERNAME</username>9 <password>YOUR_GITHUB_TOKEN</password>10 </server>11 </servers>12</settings>
Penggunaan Dasar
Berikut contoh implementasi dasar NxGate di plugin Minecraft:
1. Konfigurasi config.yml
config.yml
1# NxGate License Configuration2license-key: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
2. Main.java
Main.java
1import xyz.noxlydev.nxgate.NxGateClient;2import xyz.noxlydev.nxgate.VerificationResult;34public class Main extends JavaPlugin {56 @Override7 public void onEnable() {8 // Ambil license key dari config9 saveDefaultConfig();10 String licenseKey = getConfig().getString("license-key");1112 // Inisialisasi client dengan user ID dan license key13 NxGateClient client = new NxGateClient("YOUR_USER_ID", licenseKey);1415 // Verifikasi lisensi16 VerificationResult result = client.verify();1718 if (result.isValid()) {19 getLogger().info("License verified successfully!");20 // Plugin berjalan normal21 } else {22 getLogger().severe("License verification failed: " + result.getResult());23 getLogger().severe("Disabling plugin...");24 getServer().getPluginManager().disablePlugin(this);25 }26 }27}
Langkah-langkah
- Ambil license key dari config.yml
- Inisialisasi NxGateClient dengan user ID dan license key
- Panggil method verify() untuk memverifikasi
- Handle hasil verifikasi (valid/invalid)
Penggunaan Advanced
Untuk fitur lebih lengkap seperti offline mode, RSA challenge, dan custom configuration:
Main.java (Advanced)
1import xyz.noxlydev.nxgate.NxGateClient;2import xyz.noxlydev.nxgate.VerificationResult;3import xyz.noxlydev.nxgate.NxGateConfig;45public class Main extends JavaPlugin {67 private NxGateClient client;89 @Override10 public void onEnable() {11 saveDefaultConfig();12 String licenseKey = getConfig().getString("license-key");1314 // Konfigurasi advanced dengan custom settings15 NxGateConfig config = new NxGateConfig()16 .setUserId("YOUR_USER_ID")17 .setLicenseKey(licenseKey)18 .setServerUrl("https://api.nxgate.noxly.dev") // Custom server jika self-host19 .setScope("minecraft-server") // Optional: untuk license scope20 .setTimeout(5000) // Timeout dalam ms21 .enableOfflineMode(true); // Enable offline caching2223 client = new NxGateClient(config);2425 // Verifikasi dengan RSA challenge untuk keamanan tambahan26 VerificationResult result = client.verifyWithChallenge();2728 switch (result.getResult()) {29 case VALID:30 getLogger().info("✓ License valid!");31 break;32 case INVALID:33 getLogger().severe("✗ License key tidak valid");34 disablePlugin();35 break;36 case EXPIRED:37 getLogger().severe("✗ License sudah expired");38 disablePlugin();39 break;40 case RATE_LIMITED:41 getLogger().warning("⚠Rate limit tercapai, menggunakan cache");42 break;43 case IP_LIMIT_EXCEEDED:44 getLogger().severe("✗ IP limit terlampaui");45 disablePlugin();46 break;47 case SCOPE_MISMATCH:48 getLogger().severe("✗ License scope tidak cocok");49 disablePlugin();50 break;51 case CONNECTION_ERROR:52 if (config.isOfflineModeEnabled()) {53 getLogger().warning("⚠Tidak dapat terhubung, menggunakan cache");54 } else {55 getLogger().severe("✗ Gagal terhubung ke server");56 disablePlugin();57 }58 break;59 default:60 getLogger().severe("✗ Error tidak dikenal: " + result.getMessage());61 disablePlugin();62 }63 }6465 private void disablePlugin() {66 getServer().getPluginManager().disablePlugin(this);67 }6869 @Override70 public void onDisable() {71 if (client != null) {72 client.close();73 }74 }75}
Maven Shade Plugin
Wajib: Shade Library
Anda HARUS menggunakan maven-shade-plugin untuk memasukkan library NxGate ke dalam JAR plugin Anda. Jika tidak, Anda akan mendapat ClassNotFoundException saat runtime.
pom.xml
1<build>2 <plugins>3 <plugin>4 <groupId>org.apache.maven.plugins</groupId>5 <artifactId>maven-shade-plugin</artifactId>6 <version>3.5.1</version>7 <executions>8 <execution>9 <phase>package</phase>10 <goals>11 <goal>shade</goal>12 </goals>13 <configuration>14 <relocations>15 <relocation>16 <pattern>xyz.noxlydev.nxgate</pattern>17 <shadedPattern>your.plugin.package.libs.nxgate</shadedPattern>18 </relocation>19 </relocations>20 </configuration>21 </execution>22 </executions>23 </plugin>24 </plugins>25</build>
Relocation package penting untuk menghindari konflik dengan plugin lain yang mungkin menggunakan versi NxGate berbeda.