Gallery

Description
GlymeraFakePlayers - Realistic Fake Player Simulation
Populate your server with fake players: real player skins, NPC wandering, chat messages, tab list, and built-in server query support for all major protocols. Fully configurable with realistic day/night player count curves.
What is GlymeraFakePlayers?
GlymeraFakePlayers makes your server look alive — even when no one is online. It generates fake players with randomized player skins (using Hytale's character creator system), shows them in the tab list, sends realistic chat messages, and reports inflated player counts to every major server list protocol. Optionally, it spawns physical NPCs that walk around with player models and custom names.
A configurable 24-hour day curve automatically adjusts the number of online fake players — low at night, peak in the evening — with smooth transitions and random fluctuation for a natural feel.
All commands are OP-only.
Features
Fake Player Identities
- Randomly selected names from a configurable pool (110 default names)
- Each fake player gets a unique UUID for consistent identification
- Names appear in tab list, chat, and server query responses
Player Skins (Character Creator)
- NPCs use Hytale's full character customization system (hair, clothing, face, etc.)
- Every fake player gets a unique randomized appearance
- Skins are generated using
CosmeticsModule.generateRandomSkin()— same system as real players
Physical NPCs (Optional)
- Spawnable player-model NPCs that walk around with realistic wander behavior
- Custom names above their heads (Nameplate system)
- Physical body (new in v7): walking into them gently pushes you apart, just like a real player — configurable (
soft/hard/off) - Invulnerable — players cannot kill them (no damage, no knockback, no hurt reaction)
- Configurable spawn location (
/fp setspawn) and spawn radius - NPC count is independent from tab list count (e.g. 50 in tab, 5 NPCs)
- NPCs are automatically despawned on server shutdown (prevents world corruption)
Chat Simulation
- Random chat messages from configurable pool (100 default messages)
- Messages use Hytale's native chat format — indistinguishable from real player chat
- Configurable interval (default: 45–180 seconds between messages)
- Only active fake players send messages
Tab List
- Fake players appear in the server's player list with realistic ping values
- Ping values vary randomly (25–110ms) on each update cycle
- Players are added/removed from tab list as the day curve adjusts
Server Query Protocols (Built-in)
No additional query plugin needed! GlymeraFakePlayers responds to all 5 major protocols:
| Protocol | Transport | Used By |
|---|---|---|
| HyQuery V1 | UDP (Magic: HYQUERY\0) |
Hyvote, HytaleCharts |
| HyQuery V2 | UDP (Magic: HYQUERY2) |
Hyvote (with challenge token) |
| OneQuery V2 | UDP (Magic: ONEQUERY) |
HytaleOne, HytaleServerIndex |
| Minecraft Ping | TCP (Server List Ping) | Minecraft-compatible tools |
| Source Query (A2S) | UDP (Valve protocol) | Steam Server Browser, GameTracker |
All protocols report the same inflated player count (real + fake players).
Realistic Day/Night Curve
- 24-hour player count curve with configurable hourly percentages
- Cosine interpolation between hours for smooth, step-free transitions
- Random fluctuation (default ±5%) for natural variation
- Automatic adjustment every 60 seconds (1–2 players at a time)
- Server startup instantly applies the correct count for the current time
Default Curve (EU gaming pattern):
| Time | % | Time | % | Time | % |
|---|---|---|---|---|---|
| 00:00 | 15% | 08:00 | 15% | 16:00 | 65% |
| 02:00 | 8% | 10:00 | 25% | 18:00 | 85% |
| 04:00 | 5% | 12:00 | 40% | 20:00 | 100% |
| 06:00 | 8% | 14:00 | 50% | 22:00 | 70% |
Commands
| Command | Description |
|---|---|
/fp list |
Show all fake players and their status |
/fp reload |
Reload config, regenerate identities and skins |
/fp respawn |
Despawn and respawn all NPCs near you |
/fp chat |
Trigger a fake chat message immediately |
/fp clear |
Remove all fake players (NPCs + tab list) |
/fp setspawn |
Set NPC spawn location to your current position |
/fp clearspawn |
Clear fixed spawn — NPCs spawn near players again |
Configuration
All settings are in mods/de.glymera_GlymeraFakePlayers/config.json (auto-generated on first start):
| Setting | Default | Description |
|---|---|---|
maxFakePlayers |
10 |
Maximum fake players (tab list, chat, query count) |
maxSpawnedNPCs |
5 |
Maximum physical NPCs in the world |
spawnNPCs |
true |
Enable/disable physical NPC spawning |
npcSpawnRadius |
5 |
Radius around spawn point for NPC placement |
npcSpawnLocation |
null |
Fixed NPC spawn [x,y,z] — null = near players |
npcCollision |
"soft" |
NPC body: soft = push apart like a real player, hard = solid, off = walk-through |
chatEnabled |
true |
Enable/disable fake chat messages |
chatIntervalMin |
45 |
Minimum seconds between chat messages |
chatIntervalMax |
180 |
Maximum seconds between chat messages |
queryEnabled |
true |
Enable/disable built-in query protocol responses |
dynamicPlayerCount |
true |
Enable/disable 24-hour day curve |
fluctuation |
0.05 |
Random noise range (0.05 = ±5%) |
hourlyCurve |
[0.15, 0.10, ...] |
24 values (0.0–1.0), one per hour |
serverMotd |
"A Hytale Server" |
MOTD shown in query responses |
joinLeaveMessages |
true |
Show fake join/leave messages |
names |
[110 names] |
Name pool — must have at least maxFakePlayers entries |
messages |
[100 messages] |
Chat message pool |
Setup Examples
Minimal: Just inflate player count (no NPCs, no chat)
{
"maxFakePlayers": 50,
"spawnNPCs": false,
"chatEnabled": false
}
Populated spawn area
{
"maxFakePlayers": 80,
"maxSpawnedNPCs": 15,
"npcSpawnLocation": [100, 65, 200],
"npcSpawnRadius": 10
}
High-population server feel
{
"maxFakePlayers": 200,
"maxSpawnedNPCs": 25,
"chatIntervalMin": 15,
"chatIntervalMax": 60
}
Important Notes
- Names pool size: Must contain at least as many names as
maxFakePlayers. If the pool is smaller, the fake player count is capped to the number of available names. - NPC world corruption prevention: All NPCs are automatically despawned when the server shuts down. This prevents corrupted model references in saved chunks.
- Map visibility: Fake players do NOT appear as position markers on the world map. They appear in the tab list sidebar only.
- Safe config editing: A config.json with a syntax error is never overwritten. The plugin keeps running on its previous values, logs the exact error to the server console, and leaves your file untouched so you can fix it and
/fp reload. - Upgrading from older versions: Data is migrated automatically from
plugins/GlymeraFakePlayers/tomods/de.glymera_GlymeraFakePlayers/on first start — your config is adopted unchanged. - Query protocol compatibility: The built-in query handler replaces the need for HyQuery, OneQuery, or PingProtocol plugins. If you run one of those alongside this plugin, both will respond to queries.
Version
v7.0.0 — Includes asset pack (IncludesAssetPack: true) for the NPC role definition.
Changelog
GlymeraFakePlayers - Changelog
v9.0.0 (2026-08-28)
Fixed
- No fake players on Hytale 0.6.0 when using a fixed spawn location (
/fp setspawn): since 0.6.0 the engine silently unloads ("parks") any entity spawned into a chunk section that is loaded but not ticking, and reports it asUnable to handle non-spawned entity: GlymeraFakePlayer!. The spawn on player join happened wherever the player was - usually far from the spawn location - so all NPCs vanished immediately and the plugin never retried. Now the plugin only spawns while a real player is within 64 blocks of the spawn location, and a background task retries deferred spawns (with backoff) until they succeed. - NPCs spawned inside terrain: the spawn height was always "spawn location Y + 0.5" with up to 7 blocks of horizontal spread, so on uneven ground some NPCs ended up buried in a hillside. The spawn now looks for standable ground (air with a solid block below) within ±6 blocks of the spawn height.
Changed
/fp setspawnnow also remembers the world of the spawn location (npcSpawnWorldin config.json); old configs without it keep working (any world)./fp listshows the position of every spawned NPC./fp respawntells you when the spawn location is out of range instead of claiming to respawn.
v8.0.0 (2026-08-28)
Changed
- Rebuilt for Hytale Update 6 (0.6.0, protocol hytale/3). Player commands use the new permission API (
requireNoPermission()), so/fpworks for OPs exactly as before.
Fixed
- (v7.2.0, folded in) Orphan fake-player NPCs from earlier sessions are removed by the 30-second sweep even when they still carry a skin: every NPC with our role whose UUID was not spawned by this session is treated as an orphan.
v7.0.0 (2026-06-11)
Added
- Physical NPCs (collision): Fake players now have a physical body. Walking into them gently pushes you apart - just like bumping into a real player. They remain fully invulnerable (no damage, no knockback, no hurt reaction). New config setting
npcCollision: "soft"(default) - gentle push apart, feels like a real player"hard"- solid obstacle"off"- old behavior, walk-through
Collision is enforced client-side via the engine's native hitbox collision system - no server-side position correction involved.
Changed
- Data directory moved to
mods/: All data now lives inmods/de.glymera_GlymeraFakePlayers/(the official per-plugin data directory) instead ofplugins/GlymeraFakePlayers/. Existing installations are migrated automatically on first start: your config.json is adopted unchanged and the old folder is renamed toGlymeraFakePlayers_migrated.
Fixed
- Config no longer resets itself: Previously, a syntax error in a hand-edited config.json (a missing comma, a stray bracket, a Windows editor BOM) was silently swallowed - and the plugin then overwrote the file with defaults, wiping all your edits. Editing bot names or counts could feel impossible. Now:
- A broken config.json is never overwritten - your edits stay in the file.
- A clear error with the exact line/position is written to the server log.
- Fix the file and run
/fp reload(or restart) - no data lost. - UTF-8 BOM from Windows editors is tolerated.
v2.0.0 (2026-04-11)
Bug Fixes
- Chunk Load Crash (Scale Bug): Fixed a Hytale engine bug where
Model.ModelReference.DEFAULT_PLAYER_MODELhasscale = -1.0f, causing "Scale must be greater than 0" errors when chunks containing NPC entities were loaded. Fix: Reflection override setsDEFAULT_PLAYER_MODEL.scale = 1.0fat plugin startup. - NPC Duplication: Fixed an issue where 100+ fake player NPCs would accumulate in the world after multiple player joins or world changes. Root cause:
onPlayerJoin()spawned new NPCs without removing existing ones, and transientspawnedflags reset on server restart. Fix: AddedforEachChunkscan that removes all staleGlymeraFakePlayerNPCs before spawning a new batch. - Shutdown Cleanup: NPCs are now properly despawned during plugin shutdown to prevent them from being persisted into chunk data.
Technical Details
setup()now patchesDEFAULT_PLAYER_MODEL.scalevia reflection before any NPC spawning occursonPlayerJoin()iterates all chunks withNPCEntitycomponents, identifies stale NPCs by role name"GlymeraFakePlayer", and removes them viastore.removeEntity(ref, RemoveReason.REMOVE)before callingspawnAllFakePlayers()shutdown()iterates all fake players and removes their entities from all worldsonPlayerDisconnect()marks all NPCs as unspawned when the last real player leaves
v1.0.0 (2026-04-08)
- Initial release
- Fake player NPCs with configurable names and skins
- Dynamic player count with day/night curve
- Tab list integration
- Query protocol support (Minecraft-compatible)
- Chat simulation with configurable messages
Only Marc can read this.