@Override
	public void run() {
		while (!this.isInterrupted()) {
			this.blockThread();
			while (!this.queue.isEmpty()) {
				SkinEntry entry = this.queue.poll();
				if (FakeMobsPlugin.getPlugin().getMob(entry.getMob().getId()) != entry.getMob()) continue;

				Object nmsProfile = ReflectionUtils.searchUUID(entry.getSkinName());
				WrappedGameProfile profile = nmsProfile == null ? new WrappedGameProfile((UUID) null, entry.getSkinName()) : WrappedGameProfile.fromHandle(nmsProfile);

				if (profile.getProperties().isEmpty() && profile.isComplete())
					profile = WrappedGameProfile.fromHandle(ReflectionUtils.fillProfileProperties(profile.getHandle()));
				if (profile == null) continue;

				entry.getMob().setPlayerSkin(profile.getProperties());
				entry.getMob().updateCustomName();
				FakeMobsPlugin.getPlugin().saveMobsFile();
			}
		}
	}