Logo
MINECRAFTBIBLE
Items
Items

All game items

Blocks
Blocks

Building blocks

Mobs
Mobs

Creatures & monsters

Biomes
Biomes

World biomes

Structures
Structures

Generated structures

Recipes
Recipes

Crafting guides

Advancements
Advancements

Achievements

Loot Tables
Loot Tables

Drop rates

Tags
Tags

Item groupings

All Versions
View all data →
Capes
Cape ArchiveNEW

Browse rare Minecon capes, OptiFine capes, and custom capes from players worldwide

Browse

Player Database
Player DatabasePopular

Search any player

Skin Browser
Skin Browser

Browse & download skins

Cape Gallery
Cape GalleryNEW

Minecon & OptiFine capes

Seed Vault
Seed Vault

Curated seeds

Learn

Guides
GuidesNew

Tutorials & tips

Blog
Blog

News & updates

Community

Community Hub
Community HubHub

Posts, discussions & more

All Versions
View community →
Seed Analyzer
Seed Analyzer

World seed analysis

Loot Explorer
Loot Explorer

Drop rates

Crafting Calculator
Crafting Calculator

Material planning

Enchant Calculator
Enchant Calculator

Probability math

Redstone Lab
Redstone Lab

Signal timing

Trading Profit
Trading Profit

Villager ROI

All Versions
View all tools →
Mods
Mods

Browse all mods

Plugins
Plugins

Server plugins

Resource Packs
Resource Packs

Textures & sounds

Shaders
Shaders

Visual enhancements

Datapacks
Datapacks

World logic

Scanner
Mod Intelligence

Scan & analyze any mod

All Versions
View all mods →
Loading...
IntroductionIntroductionVersion HistoryVersion HistoryGuidesGuidesBlog & NewsBlog & News
ItemsItemsBlocksBlocksMobsMobsRecipesRecipesBiomesBiomesStructuresStructuresAdvancementsAdvancementsLoot TablesLoot TablesTagsTags
ModsModsPluginsPluginsResource PacksResource PacksShadersShadersDatapacksDatapacks

MinecraftBible

The Ultimate Wiki

Logo
MINECRAFTBIBLE

The ultimate Minecraft reference. Every item, block, mob, and recipe documented with precision.

Community

  • Player Database
  • Skin Browser
  • Cape Gallery
  • Community Hub
  • Seed Vault

Database

  • Items
  • Blocks
  • Mobs
  • Recipes
  • Biomes
  • Structures

Tools

  • Seed Analyzer
  • Mod Intelligence
  • Crafting Calculator
  • Enchant Calculator

Mods & Packs

  • Mods
  • Plugins
  • Resource Packs
  • Shaders
  • Datapacks

© 2026 MinecraftBible. Not affiliated with Mojang or Microsoft.

PrivacyTermsContact
AtlasLang
PluginApache-2.0

AtlasLang

The ultimate lightweight multilingual plugin with PlaceholderAPI!

7
Downloads
0
Followers
2 months ago
Updated
📦
2
Versions
decorationsocialutilitybukkitfoliapaperpurpurspigot
Download Latestv1.1.0View on Modrinth

📖About 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
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

https://i.imgur.com/FndwRoN.png

👥 Team & Contributors

Nautic-Studios
Nautic-StudiosOwner

⚙️ Compatibility

Environment
🖥️ Server-side
Loaders
bukkitfoliapaperpurpurspigot
Minecraft Versions
1.81.8.11.8.21.8.31.8.41.8.51.8.61.8.7+62 more

🔗 Links

Modrinth Page