• PlayerFlags v0.2.3 Changelog
- Updated plugin version to 0.2.3.
- Fixed country detection fallback incorrectly showing Slovakia for unresolved players.
- Private, LAN, proxy and failed geo lookups now return Unknown instead of a fixed country.
- Changed the default country fallback from
to an empty value.Code:SK- Improved resource pack flag rendering for country placeholders.
- Improved resource pack icon rendering for device/platform placeholders.
- Country and device placeholders now correctly use texture pack glyphs when
.Code:icon_render_mode: "TEXTURE_PACK"[/ CODE] is enabled. [*]Fixed cases where country/device icons attempted to render as MineHead/MineSkin heads instead of texture pack icons. [*]Player head placeholders now keep using MineHead/player-head syntax when head rendering is enabled. [*]Updated MineSkin user-agent to [CODE]PlayerFlags/0.2.3- Rebuilt and verified the plugin as
.Code:PlayerFlags-0.2.3.jar
PlayerFlags v0.2.2 Changelog
This update focuses on making the visual system stable and usable across TAB, chat, titles, and BungeeCord setups.
Added
- Added full texture-pack glyph rendering for country flags and device icons.
- Added support for showing country and device icons in join titles.
- Added hybrid rendering support:
- Player head stays as a MineHead or player-head object.
- Country flag and device are rendered as texture-pack icons.
- Added required resource pack support.
- Added configurable kick behavior when the resource pack is declined or fails.
- Added BungeeCord-aware resource pack delivery.
- Added Spigot fallback limiting, so the resource pack is only sent on configured servers.
- Added
compatibility.icon_render_mode.- Added
resource_pack.server_name.- Added
resource_pack.fallback_servers.- Added
compatibility.tab_head_syntax.- Added MineSkin request throttling to avoid API rate limits.
Changed
- TAB placeholders now show proper icons instead of rendering country and device as extra player heads.
%playerflags_tab_country_head%now outputs a texture-pack flag icon by default.%playerflags_tab_device_head%now outputs a texture-pack device icon by default.- Chat country and device output now uses the same texture-pack icons.
- Join title
%country%and%device%now render texture-pack icons when icon mode is enabled.- Resource pack is now required by default.
- Resource pack kick grace period is now
30000msby default.- MineSkin country and device auto-generation is skipped when texture-pack icon mode is active.
- Resource pack fallback is now restricted to configured servers only.
- BungeeCord and Spigot resource pack behavior now match each other more reliably.
Fixed
- Fixed TAB showing three heads instead of player head + country flag + device icon.
- Fixed country and device MineHead icons being too small or hard to read.
- Fixed chat and title country/device display not matching TAB behavior.
- Fixed resource pack fallback potentially sending on the wrong backend server.
- Fixed MineSkin HTTP 429 rate-limit failures by adding safer throttling and retry delays.
- Fixed MineSkin signed texture handling for head-based fallback modes.
- Fixed country and device fallback behavior when MineSkin cache is missing.
- Fixed resource-pack icon rendering not being active on modern MineHead-capable servers.
BungeeCord / Proxy
BungeeCord resource pack delivery now works with configured trigger servers.
Default trigger server:
Code:trigger_on: - "auth"
Spigot fallback is also restricted by default:
Code:resource_pack: server_name: "auth" fallback_servers: - "auth"
This means the resource pack is only sent on the configured server, not every server in the network.
Default Rendering Setup
Recommended TAB layout:
%playerflags_player_head% %playerflags_tab_country_head% %playerflags_tab_device_head% %luckperms-prefix%
Expected result:
[player head] [country flag icon] [device icon] [prefix]
Notes
- The texture pack is required for country and device icons.
- If
resource_pack.kick.enabledis set tofalse, the pack becomes optional again.- MineSkin generation is no longer required for normal country and device icon rendering in the default v0.2.2 setup.
Temporarily disabled due to license key server updates and database updates.
This update focuses on fixing inconsistent resource pack behavior and configuration issues caused by misconfigured channels and broken YAML formatting.
Fixed: Resource Pack sending “randomly” not working
- Unified the plugin messaging channel between Bungee ↔ Spigot so the proxy packet always arrives correctly.
- Improved the fallback system: if the proxy doesn’t send the pack in time, Spigot reliably sends it after the configured delay.
- Added cleaner session handling so players aren’t spammed with pack prompts when load_per_server is enabled.
Fixed: LOADED status not being tracked properly
- The Spigot → Bungee “ResourcePackLoaded” ping now goes through the correct channel, so Bungee can remember loaded players and stop re-sending.
Fixed: YAML / config values behaving incorrectly
- Cleaned up broken YAML formatting that could turn booleans into invalid strings (causing settings like proxy_enabled to act wrong).
- Config structure is now safer and more predictable.
Extra stability improvements
If you still ever see a failed pack load after this update, it’s almost always a client-side setting or a non-direct resource pack link — Dropbox dl=1 is recommended.
- Better cleanup on quit (prevents leftover tasks / delayed kicks running after the player is gone).
- More consistent behavior across servers with proxy mode enabled.
Core Improvements
Full 1.12 – 1.21.9+ compatibility
Updated API calls and HEX-color fallback logic for all supported versions.Optimized configuration loading
ConfigManager now includes every getter method used across all services — no more missing-field errors.Improved PlaceholderAPI handling
Re-registers dynamically on reload and supports both %playerflags_*% and short %country% / %device% aliases.Soft licence check system
Added non-blocking validation layer — if the remote endpoint fails, the plugin continues running smoothly.
Join Experience Enhancements
Customizable join sounds & titles now fully synchronized with join messages.
Added title fade timings (fadein, stay, fadeout) to all title sections in config.
Improved symbol filter feedback — sends a small title/subtitle and sound when a blocked character is used.
Geo & Platform Features
Added country resolver caching for faster ISO lookups.
Enhanced platform detection with Floodgate API (if available).
Added fallback glyph placeholders for unknown countries/devices (&fき).
BungeeCord Module
Added resource pack forwarding system (bungee-resource.yml) with per-session logic.
Added send_delay_ms and only_once_per_session for fine-grained control.
Added graceful fallback to Spigot-side pack delivery if no proxy message arrives in time.
Improved SHA-1 validation and logging when using Bungee pack URLs.
Configuration Changes
Reworked and unified all settings sections:
- settings: (licence, database, general)
- title: (join, chatfilter, resource_pack)
- sounds: (join, chatfilter, resource_pack)
- restrictions:, platform:, countries:, resource_pack:
Added new key:
resource_pack.kick.grace_ms: 15000
→ Defines how long the plugin waits before kicking players who decline or fail to load the pack.
Internal / Developer Notes
- Cleaned up class structure across ConfigManager, ResourcePackManager, and LicenceKeyManager.
- Bungee/Spigot message channel standardized to PlayerFlags.
- Updated Maven build with shaded org.json and modern compiler (Java 17).
- Renamed all plugin.yml permissions to match the new namespace (playerflags.*).
New Commands & Permissions
Command Description Permission /playerflagsreload Reload plugin and placeholders playerflags.reload (alias) /geoaccessreload Legacy alias for migration users playerflags.reload
Permission Description playerflags.show See join messages even if restricted playerflags.bypass.symbols Bypass forbidden symbol filter
Quality-of-Life Fixes
- Fixed rare issue where resource pack prompt triggered twice on slow joins.
- Removed false “Resource pack declined” kicks on modern Paper builds.
- Reduced console spam in debug mode.
- Better handling for missing or empty bungee-resource.yml.
PlayerFlags v0.1.8 delivers a rock-solid, multi-version-safe, and visually polished experience.
Summary
Every setting in config.yml and bungee-resource.yml is documented and auto-restored on updates.
Quick chat message typo fix.
Date: 2025‑08‑15
Bug Fixes
- No more false kicks on resource pack load: added grace window after DECLINED/FAILED_DOWNLOAD; only kicks if no SUCCESSFULLY_LOADED arrives within a few seconds.
- Fixed double channel registration crash (This registration already exists) by centralizing plugin‑message registration in the ResourcePack manager only.
- Resolved NoClassDefFoundError by separating Spigot and Bungee config migrators (no Bungee classes on Spigot).
- Made anvil rename filter version‑safe: handles servers where setRepairCost differs or is absent (reflection fallback).
- Cleaned up join message duplicate sends in certain edge join flows.
Improvements
- Config migrator preserves all comments and appends missing defaults as a patch at the end of files (Spigot + Bungee).
- Robust Bungee→Spigot resource pack forwarding with per‑session control and sensible delays.
- Safer Floodgate detection (reflection), with explicit device type mapping and “JAVA” fallback.
- Consistent HEX color handling (auto‑detect 1.16+).
- Extensive internal logging under settings.debug: true.
Developer Notes
- Java 8/11‑friendly code (no pattern‑matching instanceof); avoids toolchain surprises.
- Placeholders re‑register on reload if PlaceholderAPI is present.
- Clean separation of concerns: Spigot vs Bungee migrators; ResourcePack manager owns PM channels.
UPDATES:
✱ Discord server
✱ Plugin renamed from CountryPlayers to GeoAccess
✱ Added Licence key, for plugin safe.
✱ Remaked all classes,
✱ Add GeyserMC Support for devices
✱ Added Country, Device block restrictions to join server
✱ Added Tittles, Sounds
✱ New Texturepack
✱ New Photos on Market.
✱ New Pleaceholders
✱ New Permissions
✱ New config.yml and more...
