...Fixed invisible NPC's by allowing new update tasks to cancel current
tasks instead of cancelling the new task in SkinPacketTracker#updateViewer
cancel packets in SkinPacketTracker#updateViewer after getting PlayerEntry to ensure current scheduled tasks are cancelled.
remove LinkedList, replace with ArrayDeque
ensure EventListen#recalculatePlayer does not execute for NPC's
do a little less work in EventListen.SkinUpdateTracker#shouldUpdate
don't add skinnable entity to pending map if using cache skin - Skin#apply
remove redundant fetch per NPC in Skin; Skin can already fetch once for itself
fix and improve thread safety for profile fetcher; prevent external access
to threads Runnable interface; honor subscriber always invoked from main
thread.
rename ProfileFetchSubscriber to ProfileFetchHandler since subscriber implies the handler will be used continuously
add skin packages with skin classes
add profile package with profile fetcher classes
update commands
update EventListen
update NMS
fix radius squared
fix exception message
fix npc sometimes not removed from playerlist
fix cannot add npc to playerlist
code/comment cleanup and refactoring
remove unused skin settings
removed NPC_SKIN_RETRY_DELAY, MAX_NPC_SKIN_RETRIES
current code uses cached textures if a skin profile request fails.
add setting for updating skin
added NPC_SKIN_UPDATE: true to always get the latest skin, false to use cached skin if available, default is false.
minor code fixes, refactoring, add settings
removed assert
removed thread checks
added setting: NPC_SKIN_VIEW_DISTANCE
added setting: NPC_SKIN_UPDATE_DISTANCE
added setting: MAX_PACKET_ENTRIES
invoke EventListen#SkinUpdateTracker#reset from within #shouldUpdate instead of requiring it to be invoked manually.
fix cached locations not used in EventListen#getNearbySkinnableNPCs
clamp yaw in EventListen.SkinUpdateTracker
use static constants
rename EntitySkinnable to SkinnableEntity
add SkinnableEntity interface to PlayerNPC (CraftPlayer)
remove unused code from PlayerListRemover
replace Subscriber with direct notification to entity via method
Undo EntityController interface changes
moved skin code from HumanController to CitizensNPC
fix npcs sometimes do not show
... due to packet tracker not being notified that remove packets have been cancelled
fix imports rearranged by incorrect IDE settings