[Question] Get a player's minecraft language

Discussion in 'Plugin Development' started by Tupac, Feb 23, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    Tupac

  2. Show us what you have tried
     
  3. Offline

    Tupac

    Code:
    package me.doctor.simplespawn;
    
    import org.bukkit.entity.Player;
    import java.lang.reflect.*;
    public enum Language {
        AUSTRALIAN_ENGLISH("Australian English", "en_AU"),
        AFRIKAANS("Afrikaans", "af_ZA"),
        ARABIC("العربية", "ar_SA"),
        BULGARIAN("Български", "bg_BG"),
        CATALAN("Català", "ca_ES"),
        CZECH("Čeština", "cs_CZ"),
        CYMRAEG("Cymraeg", "cy_GB"), //???
        DANISH("Dansk", "da_DK"),
        GERMAN("Deutsch", "de_DE"),
        GREEK("Ελληνικά", "el_GR"),
        CANADIAN_ENGLISH("Canadian English", "en_CA"),
        ENGLISH("English", "en_GB"),
        PIRATE_SPEAK("Pirate Speak", "en_PT"), //ARRRR!
        ESPERANTO("Esperanto", "eo_EO"),
        ARGENTINEAN_SPANISH("Español Argentino", "es_AR"), //these spanish languages still needs correct name, but i don't know how to name them
        SPANISH("Español", "es_ES"),
        MEXICO_SPANISH("Español México", "es_MX"),
        URUGUAY_SPANISH("Español Uruguay", "es_UY"),
        VENEZUELA_SPANISH("Español Venezuela", "es_VE"),
        ESTONIAN("Eesti", "et_EE"),
        EUSKARA("Euskara", "eu_ES"), //???
        ENGLISH1("زبان انگلیسی", "fa_IR"), //I translated this text and it was just 'English', even code inside was en_US
        FINNISH("Suomi", "fi_FI"),
        TAGALOG("Tagalog", "fil_PH"), //???
        FRENCH_CA("Français", "fr_CA"), //I think CA is from canada or something like that
        FRENCH("Français", "fr_FR"),
        GAEILGE("Gaeilge", "ga_IE"), //???
        GALICIAN("Galego", "gl_ES"),
        HEBREW("עברית", "he_IL"),
        ENGLISH2("अंग्रेज़ी", "hi_IN"), //another weird english
        CROATIAN("Hrvatski", "hr_HR"),
        HUNGARIAN("Magyar", "hu_HU"),
        ARMENIAN("Հայերեն", "hy_AM"),
        BAHASA_INDONESIA("Bahasa Indonesia", "id_ID"),
        ICELANDIC("Íslenska", "is_IS"),
        ITALIAN("Italiano", "it_IT"),
        JAPANESE("日本語", "ja_JP"),
        GEORGIAN("ქართული", "ka_GE"),
        KOREAN("한국어", "ko_KR"),
        KERNEWEK("Kernewek", "kw_GB"), //???
        ENGLISH3("अंग्रेज़ी", "ky_KG"), //another weird english
        LINGUA_LATINA("Lingua latina", "la_LA"), //???
        LETZEBUERGESCH("Lëtzebuergesch", "lb_LU"), //google translate don't know what is this :o
        LITHUANIAN("Lietuvių", "lt_LT"),
        LATVIAN("Latviešu", "lv_LV"),
        MALAY_NZ("Bahasa Melayu", "mi_NZ"), //???
        MALAY_MY("Bahasa Melayu", "ms_MY"), //???
        MALTI("Malti", "mt_MT"),
        NORWEGIAN("Norsk", "nb_NO"),
        DUTCH("Nederlands", "nl_NL"),
        NORWEGIAN_NYNORSK("Norsk nynorsk", "nn_NO"), //???
        NORWEGIAN1("Norsk", "no_NO"), //???
        OCCITAN("Occitan", "oc_FR"), //???
        PORTUGUESE_BR("Português", "pt_BR"),
        PORTUGUESE_PT("Português", "pt_PT"),
        QUENYA("Quenya", "qya_AA"), //???
        ROMANIAN("Română", "ro_RO"),
        RUSSIAN("Русский", "ru_RU"),
        ENGLISH4("Angličtina", "sk_SK"), //another weird english, i think it's slovak
        SLOVENIAN("Slovenščina", "sl_SI"),
        SERBIAN("Српски", "sr_SP"),
        SWEDISH("Svenska", "sv_SE"),
        THAI("ภาษาไทย", "th_TH"),
        tlhIngan_Hol("tlhIngan Hol", "tlh_AA"), //???
        TURKISH("Türkçe", "tr_TR"),
        UKRAINIAN("Українська", "uk_UA"),
        VIETNAMESE("Tiếng Việt", "vi_VI"),
        SIMPLIFIED_CHINESE("简体中文", "zh_CN"),
        TRADITIONAL_CHINESE("繁體中文", "zh_TW"),
        POLISH("Polski", "pl_PL");
     
        private String name;
        private String code;
     
        Language(String name, String code) {
            this.name = name;
            this.code = code;
        }
     
        public String getName() {
            return name;
        }
     
        public String getCode() {
            return code;
        }
     
        public static Language getLanguage(Player p) {
            try {
                Object ep = getMethod("getHandle", p.getClass()).invoke(p, (Object[]) null);
                Field f = ep.getClass().getDeclaredField("locale");
                f.setAccessible(true);
                String language = (String) f.get(ep);
                return getByCode(language);
            }
            catch (Throwable t) {
                t.printStackTrace();
                return null;
            }
        }
     
        private static Method getMethod(String name, Class<?> clazz) {
            for (Method m : clazz.getDeclaredMethods()) {
                if (m.getName().equals(name)) return m;
            }
            return null;
        }
     
        public static Language getByCode(String code) {
            for (Language l : values()) {
                if (l.getCode().equalsIgnoreCase(code)) return l;
            }
            return null;
        }
     
    }
    
    I copied the enum off one of the posts, Language.java


    Code:
    package me.doctor.simplespawn;
    
    import java.util.Set;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerRespawnEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class SimpleSpawn extends JavaPlugin implements Listener {
      private final ChatColor GREEN = ChatColor.GREEN;
      private final ChatColor RED = ChatColor.RED;
      private final ChatColor DARK_RED = ChatColor.DARK_RED;
      private Set<String> allowedWorlds;
     
      public void onEnable() {
        getServer().getPluginManager().registerEvents(this, this); {
        saveDefaultConfig();
        allowedWorlds = getConfig().getConfigurationSection("worlds").getKeys(false);
        getCommand("spset").setExecutor(this);
      }
      }
      @EventHandler (priority = EventPriority.HIGHEST, ignoreCancelled=true)
      public void onDeath(PlayerRespawnEvent event)
      {
        Player player = event.getPlayer();
        if ((this.allowedWorlds.size() > 0) && (this.allowedWorlds.contains(player.getWorld().getName())))
        {
          event.setRespawnLocation(getLocation(player.getWorld().getName()));
        }
      }
      public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
      {
        if (!(sender instanceof Player)) {
          return true;
        }
        Player player = (Player)sender;
        Location loc = player.getLocation();
        Location underneath = loc.subtract(0.0D, 1.0D, 0.0D);
        if ((cmd.getName().equalsIgnoreCase("spset")) && (args.length == 0) && sender.hasPermission("simplespawn.set")) {
            if ((underneath.getBlock() == null) || (underneath.getBlock().getType() == Material.AIR))
          {
            player.sendMessage(this.RED + "Cannot save spawn point in air!");
            return true;
          }
          saveSpawn(player.getLocation());
          player.sendMessage(this.GREEN + "Successfully saved new spawn point!");
          return true;
        }
      player.sendMessage(this.DARK_RED + "Insufficient permissions.");
      return false;
      }
      private void saveSpawn(Location loc)
      {
        reloadConfig();
        getConfig().set("worlds." + loc.getWorld().getName() + ".x", Integer.valueOf(loc.getBlockX()));
        getConfig().set("worlds." + loc.getWorld().getName() + ".y", Integer.valueOf(loc.getBlockY()));
        getConfig().set("worlds." + loc.getWorld().getName() + ".z", Integer.valueOf(loc.getBlockZ()));
        getConfig().set("worlds." + loc.getWorld().getName() + ".yaw", Float.valueOf(loc.getYaw()));
        getConfig().set("worlds." + loc.getWorld().getName() + ".pitch", Float.valueOf(loc.getPitch()));
        saveConfig();
      }
     
      private Location getLocation(String path)
      {
        int x = getConfig().getInt("worlds." + path + ".x");
        int y = getConfig().getInt("worlds." + path + ".y");
        int z = getConfig().getInt("worlds." + path + ".z");
        float yaw = (float)getConfig().getDouble("worlds." + path + ".yaw");
        float pitch = (float)getConfig().getDouble("worlds." + path + ".pitch");
        return new Location(Bukkit.getWorld(path), x + 0.5D, y, z + 0.5D, yaw, pitch);
      }
    }
    
     
Thread Status:
Not open for further replies.

Share This Page