AtlasLang

The ultimate lightweight multilingual plugin with PlaceholderAPI!

43

Quick challenge

How far can you run before the mobs catch you?

AtlasLang

Transcript

AtlasLang

Advanced multilingual system for Minecraft

AtlasLang is a modern and lightweight language management plugin designed to provide a true multilingual experience for Minecraft servers.

It allows servers to manage player languages, translations and localization in a clean, scalable and performance-friendly way, making it suitable for both small servers and large networks.

Features - Player-based language system (persistent per player) - Unlimited languages using folders and YML files - Clean and flexible translation structure - PlaceholderAPI integration - Locale support (en_US, es_ES, fr_FR, pt_BR, etc.) - Database support (H2 and MySQL) - GitHub synchronization for language files - Legacy colors, HEX colors and MiniMessage support - Hot reload without server restart - Safe fallback system to prevent errors

AtlasLang is built with performance, scalability and developer experience in mind.

One plugin. Unlimited languages.

AtlasAPI

```java package com.github.nautic.api;

import com.github.nautic.AtlasLang; import com.github.nautic.database.DatabaseManager; import com.github.nautic.handler.LangHandler; import com.github.nautic.manager.LanguageManager; import org.bukkit.entity.Player;

import java.util.Set; import java.util.UUID;

/** * AtlasAPI is the main public API for interacting with the AtlasLang language system. * * @author Senkex * @powered Nautic Studios * * This class provides static utility methods to: * - Retrieve translated messages * - Manage player languages * - Validate registered languages * - Access internal language managers * * The API is designed to be simple, safe, and developer-friendly. */ public final class AtlasAPI {

/** * Singleton instance of the AtlasAPI. */ private static AtlasAPI instance;

/** * Handles language file access and message retrieval. */ private final LangHandler langHandler;

/** * Manages registered languages and language resolution. */ private final LanguageManager languageManager;

/** * Private constructor to enforce singleton pattern. * * @param langHandler The language handler instance * @param languageManager The language manager instance */ private AtlasAPI(LangHandler langHandler, LanguageManager languageManager) { this.langHandler = langHandler; this.languageManager = languageManager; }

/** * Initializes the AtlasAPI. * This method should be called once during plugin startup. * * @param plugin The main AtlasLang plugin instance */ public static void initialize(AtlasLang plugin) { if (instance != null) return; instance = new AtlasAPI( plugin.getLangHandler(), plugin.getLanguageManager() ); }

/** * Returns the AtlasAPI singleton instance. * * @return AtlasAPI instance * @throws IllegalStateException if the API has not been initialized */ public static AtlasAPI get() { if (instance == null) { throw new IllegalStateException("[AtlasAPI] Could not be started"); } return instance; }

/** * Retrieves a translated message for a player using their UUID. * * @param player The player * @param path The language path * @return The translated message */ public static String get(Player player, String path) { return get(player.getUniqueId(), path); }

/** * Retrieves a translated message using a player's UUID. * * @param uuid The player's UUID * @param path The language path * @return The translated message */ public static String get(UUID uuid, String path) { String lang = DatabaseManager.getDatabase().getLanguagePlayer(uuid); if (lang == null) { lang = getDefaultLanguage(); } return get(lang, path); }

/** * Retrieves a translated message using a language identifier. * * @param langInput The language input (alias, locale, or key) * @param path The language path * @return The translated message */ public static String get(String langInput, String path) { String resolved = get().languageManager.resolveLanguageStrict(langInput); if (resolved == null) { resolved = getDefaultLanguage(); } return get().langHandler.get(resolved, "atlasaddon", path); }

/** * Retrieves a translated message or returns a fallback value if not found. * * @param player The player * @param path The language path * @param fallback The fallback value * @return The translated message or fallback */ public static String getOrDefault(Player player, String path, String fallback) { String value = get(player, path); return value != null ? value : fallback; }

/** * Checks whether a specific path exists for a given language. * * @param langInput The language input * @param path The language path * @return true if the path exists, false otherwise */ public static boolean has(String langInput, String path) { String resolved = get().languageManager.resolveLanguageStrict(langInput); if (resolved == null) return false; return get().langHandler.get(resolved, resolved, path) != null; }

/** * Sets the language for a player. * * @param player The player * @param langInput The language input * @return true if the language was set successfully */ public static boolean setLanguage(Player player, String langInput) { return setLanguage(player.getUniqueId(), langInput); }

/** * Sets the language for a player using UUID. * * @param uuid The player's UUID * @param langInput The language input * @return true if the language was set successfully */ public static boolean setLanguage(UUID uuid, String langInput) { String resolved = get().languageManager.resolveLanguageStrict(langInput); if (resolved == null) return false; DatabaseManager.getDatabase().setLanguagePlayer(uuid, resolved); return true; }

/** * Returns the current language of a player. * * @param player The player * @return The player's language */ public static String getLanguage(Player player) { return getLanguage(player.getUniqueId()); }

/** * Returns the current language of a player using UUID. * * @param uuid The player's UUID * @return The player's language or the default language */ public static String getLanguage(UUID uuid) { String lang = DatabaseManager.getDatabase().getLanguagePlayer(uuid); return lang != null ? lang : getDefaultLanguage(); }

/** * Checks if a language is registered in the system. * * @param langInput The language input * @return true if the language exists */ public static boolean isLanguageRegistered(String langInput) { String resolved = get().languageManager.resolveLanguageStrict(langInput); return resolved != null; }

/** * Returns all registered languages. * * @return A set of registered language identifiers */ public static Set<String> getRegisteredLanguages() { return get().languageManager.getRegisteredLanguages(); }

/** * Returns the default language. * * @return Default language identifier */ public static String getDefaultLanguage() { return get().languageManager.getDefaultLang(); }

/** * Provides access to the LanguageManager. * * @return LanguageManager instance */ public static LanguageManager getLanguageManager() { return get().languageManager; }

/** * Provides access to the LangHandler. * * @return LangHandler instance */ public static LangHandler getLangHandler() { return get().langHandler; }

/** * Retrieves an addon-specific message for a player. * * @param player The player * @param path The addon language path * @return The translated addon message */ public static String getAddon(Player player, String path) { return getAddon(player.getUniqueId(), path); }

/** * Retrieves an addon-specific message using UUID. * * @param uuid The player's UUID * @param path The addon language path * @return The translated addon message */ public static String getAddon(UUID uuid, String path) { String lang = DatabaseManager.getDatabase().getLanguagePlayer(uuid); if (lang == null) lang = getDefaultLanguage(); return getAddon(lang, path); }

/** * Retrieves an addon-specific message using a language identifier. * * @param langInput The language input * @param path The addon language path * @return The translated addon message */ public static String getAddon(String langInput, String path) { String resolved = get().languageManager.resolveLanguageStrict(langInput); if (resolved == null) resolved = getDefaultLanguage(); return get().langHandler.get(resolved, "atlasaddon", path); }

} ```

https://bstats.org/signatures/bukkit/AtlasLang.svg

ADS