FAQ
The questions that come up most, and what to do about them.
That is the flag. US is the two letter country code and it is the default output on purpose.
Flag emojis do not render in vanilla Minecraft. The characters they are built from are outside the vanilla font's coverage, so an actual flag emoji would show as missing character boxes. The country code is the only thing that works on every client with no setup.
If you run a resource pack with a flag font, see Display modes and switch to custom.
Expected. unicode outputs the regional indicator pair, which needs a resource pack font covering those characters. Without one, the client draws missing character boxes.
Either add a pack that covers them, or use custom mode with your own font, or go back to code.
Your proxy is not forwarding player IPs, so every player looks like they are connecting from the proxy itself.
Run /flag debug and look at the address line. If it is a private address, or identical for everybody, that is the problem.
Fix it in your BungeeCord or Velocity configuration and in your backend server configuration, then restart. NationCrest logs a warning about this on its own the first time it spots it.
A local or LAN address has no country to look up, so those players get lookup.default-country from config.yml.
That is working correctly. You will get real countries from real players.
MaxMind, free, but they require an account and restrict redistribution, so it cannot ship inside the plugin.
Three routes, all covered on Installation: let the plugin download it with your licence key, download GeoLite2-Country.mmdb and drop it in yourself, or skip it and use the http provider.
No. The lookup happens while the player is still connecting, on a thread that is not the one running your server, before they exist in the world. By the time they join, the answer is already known.
Saving player data is on a background thread too. The only exception is the final save during shutdown.
The lookup service failed several times in a row, so the plugin stopped calling it for a while rather than hammering something that is down or has rate limited you.
Players still join normally during that window, they just get the default country. It clears itself.
If it keeps happening, either the service is unreliable, you are over its free limit, or the URL is wrong. Check http.url and http.field against that service's documentation.
They will. Both write the tab list name.
Turn tab-list.enabled off in config.yml and put %nationcrest_display% into your tab list plugin's format instead. That is the intended way to use this plugin when you already have one.
Same answer, and it is unavoidable. Scoreboard teams are shared, so two plugins writing nametag prefixes will always fight.
Turn nametag.enabled off and use %nationcrest_display% in the plugin that already owns nametags. That feature is only for servers with nothing else doing the job.
Yes, /flag hide. Take nationcrest.toggle away from them if you do not want that.
A hidden flag makes every placeholder return the fallback string rather than nothing, so nothing in your formats breaks.
/flag set <player> <code>. That is a manual override, it wins over anything detected, it survives restarts, and the plugin stops looking their address up.
/flag reset <player> undoes it.
Yes, without waiting for a plugin update. Copy en_US.yml, translate it, set language in config.yml to the new file name, and reload. See Messages and language.
Not in this version. Country names come from countries.yml regardless of language. You can rename them there, but there is only one set. Translating them is on the list for a later version.
No. It uses Paper's own methods for the tab list and nametag prefixes. Paper 1.21.4 or newer.
Yes, as long as IP forwarding is configured. Without that, the plugin cannot see real player addresses and nothing can help it.
Still stuck
Discord. Bring your /flag debug output and the relevant part of your server log.