Ulises LicensesUlises Licenses
FeaturesPricingAPIChangelogs
Discord
Dashboard
  • Overview
  • Installation
  • Plugin Integration
  • Complete Example
  • API Methods
  • Connection Management
  • Auto-Update
  • Best Practices
  1. Docs
  2. /
  3. Complete Example
Reference Implementation

Complete PaperMC Java Plugin Example

Production-ready JavaPlugin lifecycle implementation incorporating configuration loading, initial license assertion, connection retry loop, and asynchronous periodic health checks.

MyBestPluginAntiCheat.java
Java
1public class MyBestPluginAntiCheat extends JavaPlugin {2    private FileConfiguration antileakConfig;3 4    @Override5    public void onEnable() {6        loadAntileakConfig();7 8        String productId = antileakConfig.getString("license.product-id");9        String licenseKey = antileakConfig.getString("license.key");10 11        if (productId.equals("your-product-id-here") || licenseKey.equals("your-license-key-here")) {12            getLogger().severe("License details not configured. Please edit antileak.yml");13            Bukkit.getPluginManager().disablePlugin(this);14            return;15        }16 17        validateLicense(productId, licenseKey);18    }19 20    private void validateLicense(String productId, String licenseKey) {21        UlisesLib ulib = new UlisesLib();22 23        while (true) {24            if (ulib.isLicenseValid(productId, licenseKey)) {25                String discordId = ulib.getDiscordId(productId, licenseKey);26                String expiresAt = ulib.getExpirationDate(productId, licenseKey);27 28                getLogger().info("License validated for Discord ID: " + discordId);29                getLogger().info("License expires: " + expiresAt);30 31                loadFeatures();32                startPeriodicChecks();33                break;34 35            } else {36                String error = ulib.getLastError();37                getLogger().severe("License validation failed: " + error);38 39                if (error != null && error.contains("Unable to connect to the backend server")) {40                    getLogger().warning("Retrying connection in 30 seconds...");41                    try {42                        Thread.sleep(30000);43                    } catch (InterruptedException e) {44                        Bukkit.getPluginManager().disablePlugin(this);45                        break;46                    }47                } else {48                    Bukkit.getPluginManager().disablePlugin(this);49                    break;50                }51            }52        }53    }54 55    private void startPeriodicChecks() {56        Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> {57            UlisesLib ulib = new UlisesLib();58            String productId = antileakConfig.getString("license.product-id");59            String licenseKey = antileakConfig.getString("license.key");60 61            if (!ulib.isLicenseValid(productId, licenseKey)) {62                String error = ulib.getLastError();63                getLogger().severe("Periodic license check failed: " + error);64 65                if (!error.contains("Unable to connect to the backend server")) {66                    Bukkit.getScheduler().runTask(this, () ->67                        Bukkit.getPluginManager().disablePlugin(this)68                    );69                }70            } else {71                getLogger().info("Periodic license check passed.");72            }73        }, 20L * 60 * 10, 20L * 60 * 10);74    }75}
PREVIOUS MODULE← Plugin IntegrationNEXT MODULEAPI Methods →

Built by Ulises - Citymoon Dynamics

Ulises LicensesUlises Licenses

© 2025-2030 Citymoon Dynamics (citymoon.org). All rights reserved.

TermsPrivacyDiscord