promotional bannermobile promotional banner

GlymeraArmorStand

Collectible armor stands with endless variations! Every placed block spawns a unique NPC. Equip them with weapons and armor and build your personal gallery. Craftable, persistent, update-proof.

File Details

GlymeraArmorStand-3.0.0.jar

  • R
  • Apr 15, 2026
  • 71.17 KB
  • 49
  • Early Access

File Name

GlymeraArmorStand-3.0.0.jar

Supported Versions

  • Early Access

GlymeraArmorStand - Changelog

v3.0.0 (2026-04-15)

Bug Fixes

  • Duplicate NPC Fix: Resolved issue where armor stands would duplicate (sometimes 100+) when players switched between worlds/instances and returned. Duplicates appeared as skinless NPCs that walked around. Root cause: the plugin respawned NPCs immediately when getEntityRef briefly returned null during chunk transitions, while Hytale simultaneously restored its own persisted copies from chunk data.

Changes

  • Cleanup-first architecture: Adopted the proven approach from GlymeraFarmer. On first player join after server start, all stand NPCs are deleted and entity tracking is reset. A 3-cycle lockout prevents any respawning until cleanup completes.
  • Respawn cooldown (3 seconds per stand): When a stand NPC is detected as missing, the plugin now waits 3 seconds before respawning. This prevents rapid-fire duplication when entity references are briefly invalid during chunk loading.
  • Pre-spawn position cleanup: Before spawning a new stand NPC, all untracked NPCs at the same position are removed first.
  • Spawn lockout during cleanup: No stand NPCs are respawned while any cleanup cycle is active.
  • Periodic cleanup reduced: Duplicate scan interval changed from every 1 second to every 5 seconds to reduce unnecessary overhead.

No Functional Changes

  • All commands, equipment mechanics, skin generation, persistence, and recipes remain identical to v2.0.0.

v2.0.0 (2026-04-11)

Bug Fixes

  • Skin Persistence Fix: Armor Stand appearances no longer randomize after chunk persistence cycles (auto-save, player disconnect/reconnect). Previously, ApplyRandomSkinPersistedComponent caused Hytale to re-randomize the NPC skin on every persistence cycle, overriding the seed-based deterministic skin set by the plugin. This was hidden before because chunk unloading triggered a respawn cycle that re-applied the correct skin. With GlymeraChunkLoader keeping chunks permanently loaded, the respawn cycle never triggered, making the bug visible.

Technical Details

  • Removed ApplyRandomSkinPersistedComponent from NPC spawn logic (was line 535-536)
  • The plugin's own persistence system (seed in item durability + skins.json registry + ModelComponent/PlayerSkinComponent) is sufficient and correct
  • Removed unused ApplyRandomSkinPersistedComponent import

v1.0.0 (2026-04-10)

  • Initial release: Craftable armor stand blocks that spawn random player-looking NPCs
  • Seed-based deterministic appearance (stored in item durability)
  • Equipment system (hit with armor/weapon to equip, empty hand to unequip/break)
  • Persistent across server restarts (position, equipment, appearance)
  • Chunk load/unload handling with duplicate cleanup
  • /armorstand give|list|removeall|reload commands