Documentation Index
Fetch the complete documentation index at: https://docs.xreatlabs.space/llms.txt
Use this file to discover all available pages before exploring further.
API Overview
The NexAuth API provides comprehensive interfaces for integrating authentication functionality into your plugins and applications.Getting Started
Dependency
Add NexAuth as a dependency in your build file: Gradle:repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
compileOnly 'com.github.XreatLabs:NexAuth:API:x.x.x'
}
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<dependency>
<groupId>com.github.XreatLabs</groupId>
<artifactId>NexAuth-API</artifactId>
<version>x.x.x</version>
<scope>provided</scope>
</dependency>
Basic Usage
import com.nexauth.api.NexAuthAPI;
import com.nexauth.api.AuthResult;
import com.nexauth.api.PlayerAccount;
public class MyPlugin extends JavaPlugin {
private NexAuthAPI nexauth;
@Override
public void onEnable() {
// Get NexAuth API instance
nexauth = NexAuthAPI.getInstance();
// Check if NexAuth is loaded
if (!nexauth.isEnabled()) {
getLogger().warning("NexAuth not found!");
return;
}
}
public void checkAuth(Player player) {
// Check if player is authenticated
if (nexauth.isAuthenticated(player)) {
player.sendMessage("You are authenticated!");
}
}
}
Core Components
Authentication Manager
Handle player authentication operations:AuthManager authManager = nexauth.getAuthManager();
// Authenticate player
AuthResult result = authManager.authenticate(player, "password");
if (result.isSuccess()) {
// Authentication successful
} else {
// Handle failure
player.sendMessage(result.getErrorMessage());
}
// Register new player
AuthResult registerResult = authManager.register(player, "password");
// Check authentication status
boolean authenticated = authManager.isAuthenticated(player);
// Get player account
Optional<PlayerAccount> account = authManager.getAccount(player);
Session Manager
Manage player sessions:SessionManager sessionManager = nexauth.getSessionManager();
// Create session
Session session = sessionManager.createSession(player, Duration.ofHours(24));
// Get session
Optional<Session> session = sessionManager.getSession(player);
// Validate session
boolean valid = sessionManager.validateSession(player, ipAddress);
// Invalidate session
sessionManager.invalidateSession(player);
Event System
Listen to authentication events:import com.nexauth.api.events.PlayerLoginEvent;
import com.nexauth.api.events.PlayerRegisterEvent;
import com.nexauth.api.events.SessionExpireEvent;
public class AuthListener implements Listener {
@EventHandler
public void onPlayerLogin(PlayerLoginEvent event) {
Player player = event.getPlayer();
if (event.isSuccess()) {
getLogger().info(player.getName() + " logged in successfully");
} else {
getLogger().warning(player.getName() + " failed to login");
}
}
@EventHandler
public void onPlayerRegister(PlayerRegisterEvent event) {
Player player = event.getPlayer();
getLogger().info(player.getName() + " registered new account");
}
@EventHandler
public void onSessionExpire(SessionExpireEvent event) {
Session session = event.getSession();
getLogger().info("Session expired for " + session.getPlayerName());
}
}
API Features
Player Account API
PlayerAccount account = nexauth.getAuthManager().getAccount(player).orElse(null);
if (account != null) {
// Account information
UUID uuid = account.getUUID();
String username = account.getUsername();
long registeredAt = account.getRegisteredAt();
long lastLogin = account.getLastLogin();
// Account status
boolean isPremium = account.isPremium();
boolean has2FA = account.hasTwoFactorAuth();
// Account operations
account.changePassword("newPassword");
account.enableTwoFactorAuth("secret");
account.disableTwoFactorAuth();
}
Premium Authentication
PremiumManager premiumManager = nexauth.getPremiumManager();
// Check premium status
boolean isPremium = premiumManager.isPremium(player);
// Get premium UUID
Optional<UUID> premiumUUID = premiumManager.getPremiumUUID(username);
// Force premium refresh
premiumManager.refreshPremiumData(player);
// Link premium account
premiumManager.linkPremiumAccount(player, offlineUsername);
Two-Factor Authentication
TOTPManager totpManager = nexauth.getTOTPManager();
// Enable 2FA
String secret = totpManager.generateSecret(player);
totpManager.enableTOTP(player, secret);
// Verify code
boolean valid = totpManager.verifyCode(player, "123456");
// Generate backup codes
List<String> backupCodes = totpManager.generateBackupCodes(player);
// Disable 2FA
totpManager.disableTOTP(player);
Advanced Usage
Custom Authentication Provider
public class CustomAuthProvider implements AuthProvider {
@Override
public AuthResult authenticate(String username, String password) {
// Custom authentication logic
if (verifyWithCustomSystem(username, password)) {
return AuthResult.success();
} else {
return AuthResult.failure("Invalid credentials");
}
}
@Override
public boolean isPremium(String username) {
// Custom premium check
return checkPremiumStatus(username);
}
// Implement other methods...
}
// Register custom provider
nexauth.registerProvider("custom", new CustomAuthProvider());
Database Integration
DatabaseManager dbManager = nexauth.getDatabaseManager();
// Execute custom queries
dbManager.executeQuery("SELECT * FROM custom_table", (resultSet) -> {
while (resultSet.next()) {
// Process results
}
});
// Batch operations
dbManager.executeBatch(statements -> {
statements.add("INSERT INTO table (...) VALUES (...)");
statements.add("UPDATE table SET ...");
});
// Transactions
dbManager.executeTransaction(() -> {
// Multiple related operations
});
Plugin Integration
Vault Integration
// NexAuth provides Vault integration for economy permissions
// Use Vault's Chat and Permission hooks with authenticated players
Permission perms = getServer().getServicesManager()
.getRegistration(Permission.class).getProvider();
// Check if player is authenticated before permission checks
if (nexauth.getAuthManager().isAuthenticated(player)) {
// Player is authenticated, apply permissions
perms.playerAdd(player, "permission.node");
}
PlaceholderAPI Integration
// NexAuth provides PlaceholderAPI placeholders
// Use these in other plugins or scripts
// %nexauth_authenticated% - Authentication status
// %nexauth_premium% - Premium status
// %nexauth_2fa_enabled% - 2FA status
// %nexauth_registered_date% - Registration date
// %nexauth_last_login% - Last login time
String placeholder = PlaceholderAPI
.setPlaceholders(player, "%nexauth_authenticated%");
Error Handling
try {
AuthResult result = authManager.authenticate(player, password);
if (result.isSuccess()) {
// Success
} else {
// Handle specific error
switch (result.getErrorType()) {
case INVALID_PASSWORD:
player.sendMessage("Incorrect password");
break;
case ACCOUNT_LOCKED:
player.sendMessage("Account is locked");
break;
case DATABASE_ERROR:
player.sendMessage("Authentication error");
break;
}
}
} catch (NexAuthException e) {
// Handle exceptions
getLogger().severe("Authentication error: " + e.getMessage());
}
Best Practices
Support
API Support
Get help with API integration on GitHub Discussions.
Next Steps
Providers API
Learn about authentication providers.

