Skip to content

endchest/MLang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒ MLang - Minecraft Language Library

License Minecraft Java

MLang - Powerful and easy-to-use library for working with Minecraft localization. Allows you to easily get user-friendly translations for items, effects, enchantments, and other game elements.

๐Ÿš€ Features

  • โœ… Automatic downloading of language files from GitHub
  • โœ… Asynchronous operations for non-blocking work
  • โœ… Caching of loaded translations for high performance
  • โœ… Multi-language support (en_us, ru_ru, es_es, de_de, etc.)
  • โœ… Fallback system - automatic fallback to default language
  • โœ… Full coverage - materials, effects, enchantments, entities, ItemStack
  • โœ… Simple API - just a few lines of code to get started

๐Ÿ“ฆ Installation

Maven

<repository>
    <id>endchest-releases</id>
    <url>https://repo.endchest.ru/releases</url>
</repository>

<dependency>
    <groupId>me.seetch</groupId>
    <artifactId>mlang</artifactId>
    <version>1.0.0</version>
</dependency>

Gradle

maven {
    url "https://repo.endchest.ru/releases
}

implementation 'me.seetch:mlang:1.0.0'

Manual

Download the JAR file from Releases and add it to your project.

๐Ÿ›  Quick Start

import me.seetch.MLang;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.Material;

public class MyPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        // Initialize MLang
        MLang lang = MLang.getInstance(this);
        
        // Set default language
        lang.setDefaultLanguage("ru_ru");
        lang.setDefaultVersion("1.20.4");
        
        // Asynchronously load languages
        lang.loadDefaultLanguageAsync().thenAccept(success -> {
            if (success) {
                getLogger().info("Language loaded successfully!");
            }
        });
    }
    
    public void exampleUsage() {
        MLang lang = MLang.getInstance(this);
        
        // Get translation for material
        String translation = lang.getMaterialTranslation("ru_ru", Material.DIAMOND_SWORD);
        // Result: "ะะปะผะฐะทะฝั‹ะน ะผะตั‡"
        
        // Using default language
        String defaultTranslation = lang.getMaterialTranslation(Material.STONE);
        // Result: "ะšะฐะผะตะฝัŒ" (if default language is ru_ru)
    }
}

๐Ÿ“š API Documentation

Main Methods

Initialization

MLang lang = MLang.getInstance(JavaPlugin plugin);

Configuration

// Set default language
lang.setDefaultLanguage("en_us");

// Set Minecraft version
lang.setDefaultVersion("1.20.4");

Language Loading

// Asynchronous loading
CompletableFuture<Boolean> future = lang.loadLanguageAsync("ru_ru", "1.20.4");

// Synchronous loading
boolean success = lang.loadLanguage("es_es", "1.20.4");

// Load default language
lang.loadDefaultLanguageAsync();

Getting Translations

// Materials
String material = lang.getMaterialTranslation("ru_ru", Material.DIAMOND);

// Effects
String effect = lang.getEffectTranslation("en_us", Effect.SPEED);

// Enchantments
String enchantment = lang.getEnchantmentTranslation("de_de", Enchantment.SHARPNESS);

// Entity Types
String entity = lang.getEntityTranslation("fr_fr", EntityType.ZOMBIE);

// ItemStack
String item = lang.getItemStackTranslation("es_es", itemStack);

// Direct access to keys
String translation = lang.getTranslation("ru_ru", "block.minecraft.stone");

Utilities

// Generate translation keys
String key = TranslationKeyGenerator.getMaterialKey(Material.STONE);

// Check loaded languages
boolean isLoaded = lang.isLanguageLoaded("ru_ru");

// List all loaded languages
String[] languages = lang.getLoadedLanguages();

๐ŸŒ Supported Languages

MLang supports all official Minecraft languages:

  • en_us - English (United States)
  • ru_ru - ะ ัƒััะบะธะน
  • es_es - Espaรฑol (Espaรฑa)
  • de_de - Deutsch (Deutschland)
  • fr_fr - Franรงais (France)
  • zh_cn - ็ฎ€ไฝ“ไธญๆ–‡
  • ja_jp - ๆ—ฅๆœฌ่ชž
  • And many others...

โš™๏ธ Configuration

MLang automatically creates a languages folder in your plugin directory to store downloaded files:

plugins/
โ””โ”€โ”€ YourPlugin/
โ””โ”€โ”€ languages/
โ”œโ”€โ”€ en_us.json
โ”œโ”€โ”€ ru_ru.json
โ”œโ”€โ”€ es_es.json
โ””โ”€โ”€ ...

๐Ÿค Integration with Other Plugins

public class IntegrationExample {

    public String getItemDisplayName(ItemStack item, String playerLanguage) {
        MLang lang = MLang.getInstance(yourPlugin);
        
        // Get item name translation
        String name = lang.getItemStackTranslation(playerLanguage, item);
        
        // Add formatting for enchanted items
        if (item.hasItemMeta() && item.getItemMeta().hasEnchants()) {
            name = "ยงa" + name + " ยง7(Enchanted)";
        }
        
        return name;
    }
    
    public String getEntityName(EntityType type, String language) {
        MLang lang = MLang.getInstance(yourPlugin);
        return lang.getEntityTranslation(language, type);
    }
}

๐Ÿ“ˆ Performance

  • Caching: All loaded language files are stored in memory
  • Lazy loading: Files are downloaded only when needed
  • Asynchronous: Loading doesn't block the main server thread
  • Memory optimization: Efficient resource usage

๐Ÿ› Error Handling

lang.loadLanguageAsync("invalid_lang", "1.20.4")
.exceptionally(throwable -> {
    getLogger().warning("Failed to load language: " + throwable.getMessage());
    return false;
})
.thenAccept(success -> {
    if (!success) {
        getLogger().warning("Language was not loaded");
    }
});

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ‘ฅ Authors

๐Ÿ™ Acknowledgments

  • InventivetalentDev for minecraft-assets
  • Bukkit/Spigot community for the excellent platform

๐Ÿ“ž Support

If you have questions or suggestions, create an Issue on GitHub.

About

Powerful Minecraft language library for Bukkit/Spigot plugins

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages