@Override
	public void onPluginMessageReceived(String channel, Player player, byte[] message)
	{
		if (this.permissionsManager == null) return;
		
		ReplicatedPermissionsContainer query = null;
		
		try
		{
			query = ReplicatedPermissionsContainer.fromBytes(message);
		}
		catch (Exception ex) {}
		
		if (query != null)
		{
			query.sanitise();

			if (!this.permissionsManager.checkVersion(player, query) && !player.hasPermission(ADMIN_PERMISSION_NODE) && !player.isOp())
			{
				this.getLogger().info("Kicking player [" + player.getName() + "] due to outdated mod [" + query.modName + "]. Has version " + query.modVersion);
				player.kickPlayer(String.format("Mod '%s' is out of date", query.modName));
				
				return;
			}
			
			this.monitor.onQuery(player, query);
			this.permissionsManager.replicatePermissions(player, query);
		}
	}